1. 애플리케이션 계층 - HTTP, FTP
2. 전송 계층 - TCP, UDP
3. 인터넷 계층 - IP
4. 네트워크 인터페이스 계층
프로토콜 계층을 통해 데이터가 전송되는 방법
1. 프로그램이 data를 소켓 라이브러리에 싸서 OS에게 전달
2. OS가 TCP정보를 생성하고, 메시지 데이터를 포함하여 IP 패킷 생성. IP 패킷 내에는 TCP 데이터가 포함되어 있음.
3. IP 패킷은 LAN 카드를 통하여 인터넷에 연결된 서버에 전송
앞의 TCP/IP 패킷 정보 그림을 통해 알 수 있듯, TCP는 IP 패킷과 다르게 전송 제어, 순서, 검증 정보 를 추가로 담고 있음.
쉽게 말하자면, TCP는 IP가 가진 단점들(데이터 소실 등)을 해결 가능.
그렇기에 TCP는 신뢰할 수 있는 프로토콜이라고 불리며 현재는 대부분 TCP를 사용.
TCP 3 way handshake(가상연결)
을 통하여 연결 확인 보장 후 데이터 전송.SYN
, ACK
클라이언트와 서버는 데이터 전송 후 데이터 수신 확인을 받음.
데이터의 크기가 클 경우 패킷을 쪼개어 전송하는 경우가 발생. 여기서 패킷1->2->3의 순서로 전송했지만, 1->3->2순서로 도착했다면, 잘못된 순서로 온 패킷부터 재전송 요청.
UDP는 하얀 도화지에 비유되는데, 그 이유는 기능이 거의 없기 때문.
IP와 거의 같지만 PORT
와 체크섬
기능만 추가되어 있음
그렇기에 UDP를 사용할 경우 애플리케이션에서 추가 작업이 필요하다.
UDP는 TCP처럼 연결지향적이지 않음. 즉, 3 way handshake 기능 x
데이터 전달 보증x
데이터 순서 보증x