IP
이 포스트는 김영한님의 ‘모든 개발자를 위한 HTTP 웹 기본 지식’을 수강하고 작성하였습니다.
IP (인터넷 프로토콜; Internet Protocol)
- 클라이언트와 서버는 각각 고유의 IP를 가지고 있는데, IP는 특정 IP 주소(IP Address)에 전달하는 역할을 한다.
- 통신 단위는 패킷(Package + Bucket)이다.
IP 패킷 정보
IP 패킷 정보 |
---|
출발지 IP, 목적지 IP, 기타… |
전송 데이터 |
- IP 패킷은 전송 데이터를 출발지 IP, 목적지 IP, 기타 정보로 감싼다.
클라이언트 패킷 전달
- 클라이언트가 서버로 패킷을 전달한다.
- IP에 의해 출발 주소, 도착 주소를 모두 해석하여 인터넷에 있는 노드(인터넷 서버)를 통해 패킷이 전달된다.
- 서버에 패킷이 도착한다.
서버 패킷 전달
과정은 클라이언트 패킷 전달과 동일하다. 단, 인터넷은 복잡하기 때문에, 클라이언트가 패킷을 전달하면서 사용한 노드를 서버가 패킷을 전달할 때 반드시 사용하리란 보장은 없다.
IP 프로토콜의 한계
비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. IP 프로토콜에서는 대상 서버가 패킷을 받을 수 있는 상태인지 모르는데 무작정 패킷을 전송한다.
비신뢰성
-
중간에 패킷이 사라지면?: 패킷 소실
노드(서버)에 문제가 생겨 패킷이 다음 노드로 전달이 되지 않으면 그 패킷은 소실된다. 게다가 패킷이 소실되었는지도 모른다. -
패킷이 순서대로 안 오면?: 패킷 전달 순서 문제 발생
보통 메시지가 약 1,500 byte가 넘으면 약 1,500 byte씩 끊어서 보내는데, 만약 내가 ‘I’, ‘am’, ‘Yejin’이라는 패킷 세 개를 보냈다고 가정하자. 나(클라이언트)는 서버에 ‘I’, ‘am’, ‘Yejin’을 순서대로 보냈는데, 패킷들이 서로 다른 노드들을 지나면서 서버에는 ‘am’, ‘I’, ‘Yejin’의 순서로 패킷이 도착할 수 있다는 것이다.
프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이라면 어떤 어플리케이션에 해당하는지 구분이 어렵다.
댓글남기기