이 포스트는 김영한님의 ‘모든 개발자를 위한 HTTP 웹 기본 지식’을 수강하고 작성하였습니다.

IP (인터넷 프로토콜; Internet Protocol)

  1. 클라이언트와 서버는 각각 고유의 IP를 가지고 있는데, IP는 특정 IP 주소(IP Address)에 전달하는 역할을 한다.
  2. 통신 단위는 패킷(Package + Bucket)이다.

IP 패킷 정보

IP 패킷 정보
출발지 IP, 목적지 IP, 기타…
전송 데이터
  1. IP 패킷은 전송 데이터를 출발지 IP, 목적지 IP, 기타 정보로 감싼다.

클라이언트 패킷 전달

  1. 클라이언트가 서버로 패킷을 전달한다.
  2. IP에 의해 출발 주소, 도착 주소를 모두 해석하여 인터넷에 있는 노드(인터넷 서버)를 통해 패킷이 전달된다.
  3. 서버에 패킷이 도착한다.
    클라이언트 패킷 전달

서버 패킷 전달

과정은 클라이언트 패킷 전달과 동일하다. 단, 인터넷은 복잡하기 때문에, 클라이언트가 패킷을 전달하면서 사용한 노드를 서버가 패킷을 전달할 때 반드시 사용하리란 보장은 없다. 서버 패킷 전달

IP 프로토콜의 한계

비연결성

  1. 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다. IP 프로토콜에서는 대상 서버가 패킷을 받을 수 있는 상태인지 모르는데 무작정 패킷을 전송한다.

비신뢰성

  1. 중간에 패킷이 사라지면?: 패킷 소실
    노드(서버)에 문제가 생겨 패킷이 다음 노드로 전달이 되지 않으면 그 패킷은 소실된다. 게다가 패킷이 소실되었는지도 모른다.

  2. 패킷이 순서대로 안 오면?: 패킷 전달 순서 문제 발생
    보통 메시지가 약 1,500 byte가 넘으면 약 1,500 byte씩 끊어서 보내는데, 만약 내가 ‘I’, ‘am’, ‘Yejin’이라는 패킷 세 개를 보냈다고 가정하자. 나(클라이언트)는 서버에 ‘I’, ‘am’, ‘Yejin’을 순서대로 보냈는데, 패킷들이 서로 다른 노드들을 지나면서 서버에는 ‘am’, ‘I’, ‘Yejin’의 순서로 패킷이 도착할 수 있다는 것이다.

프로그램 구분

  1. 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이라면 어떤 어플리케이션에 해당하는지 구분이 어렵다.

태그: ,

카테고리:

최초작성:

댓글남기기