해당 포스트는 <김영한>님의 인프런 강의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 토대로 공부한 내용을 정리하였습니다.
(!) 강의 자료에서 캡쳐한 이미지는 출처를 기재하였습니다.
인터넷 프로토콜 스택은 4계층으로 구성된다.
(!) TCP/IP 5계층 이라고 하는 경우도 있는데 네트워크 인터페이스 계층의 물리적(Physical) 계층에 데이터링크(Data Link) 계층을 포함한 것이다. 실질적으로는 4계층을 사용한다.
오늘은 인터넷 계층(2계층)의 IP와 전송 계층(3계층)의 TCP/UDP, 그리고 애플리케이션 계층(4계층)의 DNS에 대해 다루어 본다.
- IP (Internet Protocol)
- TCP (Transmission Control Protocol)
- UDP (User Datagram Protocol)
- DNS (Domain Name System)
IP만으로는 이러한 한계점이 생긴다.
IP의 한계점 1
- 비연결성
- 패킷을 받을 대상(수신지 IP)이 없거나 서비스 불능 상태여도 패킷이 전송될 가능성 있음 (대상 서버의 상태가 인지 불가)
- 비신뢰성
- 전송 도중 문제가 발생 될 경우 패킷이 소실될 위험이 있음
- 패킷이 순서대로 오지 않을 가능성 있음
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통시하는 애플리케이션이 둘 이상이면 구분이 어려움
이러한 인터넷 계층(IP)의 한계점을 전송 계층(TCP/UDP)에서 보완을 해준다.
TCP의 역할
PORT
IP가 목적지인 Server라면, PORT는 Server에서 구동되는 Application의 구분점
0 ~ 65535 할당 가능
0 ~ 1023 잘 알려진 PORT, 사용하지 않는 것이 좋음
최종적으로 전송되는 패킷(Packet)은 이러한 형태로 기억하면 된다.
(!) 3단계(ACK)에서 데이터를 ACK와 함께 전송 가능
UDP의 특징
IP의 한계점을 TCP로 보완을 할 수 있지만 또 다른 면에서 한계점이 있다.
IP의 한계점 2
- 기억하기 어려움
- IP 주소를 외우는 것은 어려우며 비효율적
- 변경될 수 있음
- 신규로 IP가 변경이 되면 해당 서버에 접근이 어려움
이와 같은 한계점에는 DNS가 해결책이 될 수 있다.
DNS의 특징 및 역할
DNS 사용