인터넷 프로토콜

인터넷 프로토콜(Internet Protocol)은 TCP와 함께 인터넷의 근간을 이루는 양대축이다. 사실 IP 자체는 TCP와 한몸이었으나, 1974년 전송 계층의 TCP와 네트워크 계층의 IP로 분화되면서 현재에 이른다. 그래서 TCP/IP로 싸잡아 부르는 경우가 많은 것이고, IP가 v4부터 시작하는 것도 분화 당시의 TCP 버전을 따라서 v4 부터 시작한 것이다.

개요[편집 | 원본 편집]

인터넷 프로토콜은 OSI 참조 모델 3계층(인터넷/네트워크)에 위치하며, 데이터그램(패킷) 기반의 통신망에서 경로를 설정하는 프로토콜이다. 데이터그램 기반이므로 특정한 회선을 확립하지 않는 비연결성 프로토콜이며, 한편으로는 패킷의 완전한 도달을 책임지지 않는 비신뢰성 프로토콜이다. 한마디로 패킷을 만들어서 네트워크라는 망망대해에 던지고 알아서 떠내려가라고 하는 스타일이다.

물론 중간에 에러가 나면 해당 경유지 호스트가 출발지 호스트에 보고하긴 하지만, 거기까지만 하는 것이고 도착지 호스트에서 별도의 에러 검출을 하는 것은 아니다. 에러 검출이나 흐름 제어 같은 고등한 기술은 하위 계층인 이더넷이나 상위 계층인 TCP에서 하는 것이다. 참고로 UDP는 IP의 상위 계층이지만 마찬가지로 에러 검출이나 흐름 제어를 하지 않으므로 그 위의 응용 계층에서 잘 짜줘야 한다.

패킷[편집 | 원본 편집]

패킷(Packet)은 인터넷 프로토콜이 네트워크에 떠내려 보내는 덩어리(PDU) 단위로, 한국어로 하면 "소포"가 된다.

패킷의 첫머리인 "헤더"에는 버전에 따라 상이하나 대체로 다음과 같은 내용이 담긴다. 헤더는 통상 20바이트(v4)/40바이트(v6) 크기로 잡히며, 옵션이 추가로 지정되는 경우 좀 더 늘어난다. 이더넷의 최대 MTU에 맞춰 헤더를 뺀 페이로드는 1460bytes로 본다.

  • 버전
    이 패킷을 생성한 프로토콜의 버전을 명시한다.
  • 패킷 길이
    패킷의 용량을 명시해두었다. 보통 하위 계층인 이더넷의 덩어리에 맞춰 1480byte를 최대 크기로 잡는다. 최대 65,536byte까지 커질 수 있다.
  • Time to Live(v4)/Hop Limit(v6)
    패킷의 수명을 명시해두었다. 라우터는 패킷이 들어오면 이 숫자를 1 까고 다음 라우터나 호스트에게 넘겨주며, 이 숫자가 0까지 소진되면 패킷이 폐기되며 ICMP를 통해 출발지 호스트에 보고된다. 이는 유령 패킷이 계속 네트워크를 떠돌면서 부하를 만드는 일을 막기 위함이다.
  • 프로토콜 식별자(Next header)
    이 패킷의 내용물이 어느 프로토콜에서 내려온 것인지 명시한 것이다. 즉, 도착지 호스트는 패킷의 이 부분을 보고 데이터를 올려줄 프로토콜을 확인하는 것이다.
  • 출발지·도착지 호스트 주소
    IP 주소가 기록되는 부분. 이더넷의 프레임에서는 출도착지의 주소가 물리 경로에 따라 계속 바뀌지만, 패킷의 IP 주소는 논리적이므로 계속 고정되어 있다. 라우터는 이 부분을 참고하여 라우팅한다.

라우팅[편집 | 원본 편집]

라우팅은 IP주소를 보고 라우터가 경로를 결정하는 작업을 말한다. 데이터그램 통신망 특성상 라우터 자체는 패킷의 전체 경로를 결정할 수 없고, 최대한 견고하고 가까운 다음 경유지를 지정해주기만 한다.

라우터와 라우터 사이는 2계층 기준으로 이더넷으로 연결 되어 있을 수도 있고, 프레임 릴레이로 연결되어 있을 수도 있고, PPP로 연결되어 있을 수도 있다. 하위 계층의 PDU에 기록된 출도착지는 경유지를 지나칠 때마다 바뀌지만, 그 안에 포장된 IP의 패킷은 하위 계층의 PDU에 실려가기만 하므로 그 내용이 불변한다. 그래서 라우터는 패킷에 기록된 주소만 참고하여 다음 연결 노드를 결정할 수 있다.

이 과정에는 라우팅 프로토콜이 관여하며, 라우팅 프로토콜은 나름의 기준에 따라 효율적인 경로를 잡는데 노력한다. 단, IP의 특성상 노력만 하지 신뢰적인 무언가를 제공해주는 것은 아니다. 아무튼 IP 주소 체계에 따라 라우터는 쥐고 있는 패킷이 상위 네트워크로 나가야 하는 건지, 이웃 네트워크로 전달해줘야 하는 것인지, 하위 네트워크로 내려가야 하는 것인지 결정하며 이를 전달받은 라우터는 같은 고민을 하며 패킷의 경로를 결정하며 이것이 이어져서 도착지 호스트까지 패킷이 전달된다.

버전별 구분[편집 | 원본 편집]

  • 버전 4 (IPv4)
    버전 4는 1981년 9월에 RFC 791을 통해 발표된, 상당히 역사 깊고, 현재 이 페이지를 보고 있는 대부분의 사용자 컴퓨터가 사용 중인 프로토콜이다. 예상 외의 급격한 인터넷의 발달로 v6가 전면에 나서기 전까지 누더기처럼 이것저것 기워서 간신히 유지한 프로토콜이기도 하다.
    • 유니캐스트: 1:1 통신을 말한다.
    • 멀티캐스트: 多:多 혹은 1:多 통신을 말하며 대표적으로 IPTV가 있다.
    • 브로드캐스트: 전역 호출 통신이다.
  • 버전 6 (IPv6)
    버전 6은 1998년 12월에 RFC 2460을 통해 발표되었다. IPv4의 주소고갈 문제, 비효율적인 라우팅 문제 등을 타파하고 유비쿼터스사물인터넷의 등장에 대비한 표준이다.
    • 유니캐스트: 1:1 통신을 말한다.
    • 애니캐스트: 특정한 주소에 묶여있는 호스트군 중에서 가까운 호스트를 라우터가 찾아주는 통신이다.
    • 멀티캐스트: 전역 호출이나 多:多 혹은 1:多 통신을 말한다.

부속 프로토콜[편집 | 원본 편집]

IP는 단순히 패킷을 라우팅하는 기능만 가지고 있기 때문에, IP를 보조할 프로토콜이 존재한다.

  • ICMP
    Internet Control Message Protocol(인터넷 제어 메시지 프로토콜)은 효율적인 IP 라우팅을 위해 정보를 수집하거나, 오류를 보고하는 프로토콜을 말한다. ping도 대표적인 ICMP의 기능 중 하나다.
  • IGMP
    Internet Group Management Protocol(인터넷 그룹 관리 프로토콜)은 멀티캐스트를 관리하는 프로토콜로, 호스트의 그룹 가입, 탈퇴, 보고 등을 담당하는 프로토콜이다.
  • ARP/RARP
    Address Resolution Protocol(주소 해석 프로토콜)은 2계층(데이터링크 계층)에서 IP 주소가 어느 MAC 주소와 매칭되어 있는지 질의하는 프로토콜이다. 2계층은 MAC주소를 알아야 통신이 가능하기 때문에 반드시 필요한 프로토콜이다. Reverse ARP(RARP)는 역방향 질의를 말한다.
  • NS
    Name Service(이름 서비스)는 특정 문자열과 IP 주소를 매칭해주는 프로토콜로 응용 계층 프로토콜에 해당한다. NetBIOS, DNS 등이 여기에 속한다.
  • DHCP/BOOTP/APIPA
    IP 주소 설정을 자동화해주는 프로토콜로 응용 계층 프로토콜에 해당한다.

각주