위 사진처럼 복잡한 인터넷 망 속 수많은 노드들을 지나
"어떻게 클라이언트와 서버가 통신할까?"
"출발지에서 목적지까지 데이터가 무사히 전달되기 위해 어떠한 규칙이 필요하지 않을까?"
그래서 흔히 말하는 "IP(인터넷 프로토콜)" 주소를 컴퓨터에 부여하여 이를 이용해 통신한다.
IP는 지정한 IP 주소에 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
IP 패킷에서 패킷은 pack과 bucket이 합쳐진 단어로 소포로 비유할 수 있는데,
IP 패킷은 이를 데이터 통신에 적용한 것이라고 보면 된다.
즉,
IP 패킷은 택배 송장처럼 전송 데이터를 무사히 전송하기 위해 출발지 IP,
목적지 IP와 같은 정보가 포함되어 있다.
패킷 단위로 전송을 하면 위 사진처럼
노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달한다.
이를 통해 복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있다.
서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야한다.
서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달한다.
정확한 출발지와 목적지를 파악할 수 있다는 점에서 IP 프로토콜은 적절한 통신 방법으로 보이지만,
이러한 IP 프로토콜에도 아래와 같은 한계가 존재한다.
IP 프로토콜의 한계
1. 비연결성 (서버의 상태 파악할 방법이 없음)
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 (클라이언트가 파악할 방법이 없음)
- 중간에 패킷이 사라질 수 있음
- 패킷의 도착 순서를 보장할 수 없음