7 계층, 애플리케이션 계층 프로토콜로 HTML 문서를 교환하기 위한 요청과 응답 메세지들을 정의한다.
HTTP 는 data를 메세지로 바꾸고 메세지를 Code (2진수) 로 바꾼다.
www.naver.com 은 도메인 네임으로 도메인 네임의 url을 입력한 경우
index.html 을 불러와 가장 기본인 홈페이지를 보여주게 되는데
우리(클라이언트)는 웹페이지를 가지고 있지 않으므로 웹 서버에게 GET 요청을 통해
네이버 페이지를 받아와야 하는데 이때 웹 서버의 주소는 DNS 서버에서
도메인 네임에 해당하는 IP주소를 얻어와 목적지로 설정해야 한다.
따라서 DNS 서버와의 DNS query 와 reply 가 필요하고 이 과정에서 ARP req/res 가 일어나게 된다.
HTTP 통신을 위한 7계층 데이터 (GET, 메세지) 와 3계층 IP, 이전에 배운 ARP로 2계층 MAC 주소 를 얻었지만 4계층 옷은 얻지 못하여 완전한 캡슐레이션이 되지 못하였다.
그럼 HTTP 통신을 위한 4계층의 옷인 TCP에 대해 알아보자.
4계층 프로토콜에는 TCP 와 UDP 가 존재한다.
7계층의 애플리케이션이 생성하는 데이터의 성격과 통신 환경에 따라
TCP 나 UDP 중 하나를 선택하게 된다.
비교 필드 | TCP | UDP |
---|---|---|
메세지 길이 | 긴 경우 | 짧은 경우 |
HTTP (HTML) FTP (모든) SMTP (이메일) telnet OS 생성 파일 | DNS DHCP SNMP (네트워크 관리) SYSLOG (네트워크 관리) | |
통신 단말 간의 거리 | 먼 경우 | 짧은 경우 |
HTTP/FTP/SMTP/telnet | DHCP/SNMP/SYSLOG/DNS | |
실시간/비실시간 | 비실시간 | 실시간/비실시간 |
HTTP/FTP/SMTP | VoIP | |
유니케스트/멀티캐스트/브로드캐스트 | 유니캐스트만 | 유니캐스트/멀티캐스트/브로드캐스트 |
HTTP, FTP, SMTP 등 대부분의 애플리케이션 계층 프로토콜 | 멀티캐스팅/브로드캐스팅/애플리케이션 계층 프로토콜 |
7계층에서 내려온 코드를
TCP 는 자른다 프로토콜 → 공유
UDP 는 안자른다 프로토콜 → 독점
TCP 는 3-way handshake 필요, connection oriented protocol
UDP 는 없음, connectionless protocol
긴 파일을 한번에 보내게 될 경우 그렇게 긴 파일을 보내는 동안 해당 연결이
계속 유지되고 이를 처리하기 위한 시간이 걸리게 된다.
즉 하나의 긴 파일이 끝나기 전까지 해당 연결이 독점되므로
이는 네트워크의 성능을 저하시키므로
긴 파일을 보낼 때는 나눠서 보낼 수 있는 TCP 를 사용하게 된다.
**자세한 이유는 찾아보기**
위에서 배운 HTTP 는 4계층 프로토콜로 TCP 를 사용하므로
HTTP 의 GET 이전에 TCP 의 3-way handshake로 웹 서버와 연결이 된 후 HTTP 통신이 가능하다.
그러나 HTTP 는 7계층으로 4계층의 TCP 가 발생하는지도 모르고 관여하지도 않는다.