응용_계층
정의
OSI 7 계층 모델은 이미 시장에서 도태된 네트워크 시스템이며, 현재는 해당 모델을 계승한 TCP/IP 모델을 대부분 사용한다. 또한 TCP/IP 모델에서도 좀 더 세분화 시키게 되었다.
TCP 모델이 세분화 되더라도 기존 세션 계층, 표현 계층, 응용 계층은 하나로 묶어 응용 계층이라고 부르고 있다.
응용계층의 역할
사용자와 가장 가까운 계층으로 클라이언트 서버로 이루어진 애플리케이션에서 통신하기 위해 사용된다.
데이터 단위 : data/message
대표 프로토콜 |프로토콜|포트 번호|용도| |—|—|—| |HTTP|80|웹사이트에 접속하는 데 사용된다.| |HTTPS|443|웹사이트 접속에 쓰이는데 HTTP보다 보안이 강화된 버전| |DNS|53|도메인 이름을 해석하는 데 사용된다.| |FTP|21|파일을 전송하는 데 사용된다.| |SMTP|25|메일을 보내는 데 사용된다.| |POP3|110|메일을 받는 데 사용된다.|
HTTP 통신
응용계층에서 구현된 통신 프로토콜 중 하나. HTTP/1.0,HTTP/1.1,HTTP/1.2은 TCP 통시을 이용하지 않으나 HTTP/3부터는 QUIC를 이용한 UDP 통신을 이용한다.
기본적으로 암호화되지 않은 TEXT를 보내며, 주로 웹 페이지를 로드할 때 사용된다.
웹 브라우저에서 인터넷 주소 맨 앞에 들어가는 http:가 이 프로토콜을 사용하여 정보를 교환하겠다는 표시.
HTTP의 특징
비연결성(stateless)
request와 response로 이루어져 있으며 기본적으로 필요할 때 데이터를 보내는 방식이다.
호출 명령 | 기능 |
---|---|
GET | 클라이언트가 서버에게 URL에 해당하는 자료의 전송을 요청한다. |
HEAD | GET 요청으로 반환될 데이터 중 헤더 부분에 해당하는 데이터만 요청한다 |
POST | 클라이언트가 서버에서 처리할 수 있는 자료를 보낸다. 예를 들어, 게시판에 글을 쓸 때 클라이언트의 문서가 서버로 전송되어야 한다. 멱등성을 보장하지 않는다. |
PATCH | 클라이언트가 서버에게 지정한 URL의 데이터를 부분적으로 수정할 것을 요청한다 |
PUT | 클라이언트가 서버에게 지정한 URL에 지정한 데이터를 저장할 것을 요청한다 |
DELETE | 클라이언트가 서버에게 지정한 URL의 정보를 제거할 것을 요청한다. |
TRACE | 클라이언트가 서버에게 송신한 요청의 내용을 반환해 줄 것을 요청한다. |
CONNECT | 클라이언트가 특정 종류의 프록시 서버에게 연결을 요청한다. |
OPTIONS | 해당 URL에서 지원하는 요청 메세지의 목록을 요청한다. |
HTTP/3
최신 HTTP 프로토콜 버전이며 기존의 HTTP/2의 단점을 보완하여 더 빠르고 안정적인 통신을 제공한다.
HTTPS
위의 HTTP 방식에서 지적 받은 보안 문제를 첨가한 방식.
기존 방식보다 TCP 쪽에 더 밀접하게 바뀌어 연결 방식(stateful)을 사용한다.
TLS(Transport Layer Security)
네트워크에서 정보의 무결성을 보장하기 위한 전자 서명 및 암호화 프로토콜,SSL에 기반한 기술이며 TCP 포트는 443번을 사용함. HTTPS는 TLS를 사용하는 HTTP란 뜻
QUIC(Quick UDP Internet Connections)
구글이 개발한 전소 계층 프로토콜, HTTP/3의 전송 계층에서 이용됨. 구글 크롬과 유튜브에 적용되어 있음. QUIC 프로토콜이 차단되면 TCP로 폴백되는 페일세이프를 사용함.
페일세이프란?
공학에서 설계 기능에 오류가 발생하는 경우 다른 기능에 해를 끼치지 않도록 최소화 하는 방식, 또는 기능(try catch 뒤에 final을 붙이는 것과 같다.)
특징
- 네트워크 왕복 시간(RTT)을 줄여 페이지 로드 시간을 개선함.
- 멀티플렉싱을 사용해 여러 데이터 스트림을 한 번에 전송함.
- 표준 통신 프로세스에 TLS 암호화를 구축해 모든 데이터를 자동으로 암호화 함.
HTTP와 DNS의 관계
DNS(Domain Name System)
숫자의 연속인 IP 주소를 일일이 외울 수 없기에 쉽게 기억할 수 있는 문자 형태로 변형하는 것(가비아를 통해 shop.example.com 처럼 주소를 받는 것을 생각하자.)
DNS는 도메인 네임과 IP 주소를 서로 변환하는 역할을 한다.
ex) 구글 크롬에 네이버 도메인을 작성했다 했을 때
- DNS 조회(도메인 -> IP 변환)
도메인 네임이 DNS 캐시(브라우저 등에 등록된 캐시 기록)에 등록 되어 있는지 확인 먼저 하고 없으면 DNS 서버에 요청함(root 서버부터 세분화하여 해당 DNS 주소가 있는 곳까지 탐색)
- TCP 연결
반환 받은 IP 주소를 기반으로 네이버 웹 서버와 TCP 연결을 한다.
- HTTPS
네이버는 HTTPS를 사용함으로 TCP 연결 후 TLS/SSL handshake가 진행됨. (인증서를 통한 신뢰 검증, 대칭키를 통한 통신 보안 설정)
- HTTP 요청 전송
보안 채널이 설정된 후 네이버 서버에 HTTP 요청을 전송
- 웹 서버 처리
네이버의 웹 서버가 클라이언트의 요청을 처리하고 그 이후 화면을 렌더링 함.