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

인터넷 프로토콜(Internet Protocol, IP)은 데이터 패킷이 컴퓨터 네트워크를 통해 전달되는 방식을 규정하는 주요 통신 프로토콜이다. IP는 네트워크 계층에서 작동하며, 데이터의 주소 지정, 라우팅, 포워딩 등을 담당한다. 인터넷의 근간을 이루는 이 프로토콜은 TCP/IP 프로토콜 스위트의 중요한 부분으로, 네트워크 통신의 기본적인 구조와 원칙을 정의한다.

#### IP의 역사 및 발전

인터넷 프로토콜은 1970년대 후반에 ARPANET 프로젝트의 일환으로 개발되었다. 그 이후 여러 버전이 개발되었으며, 현재 주로 사용되는 버전은 IPv4와 IPv6이다.

* **IPv4:** 1981년에 개발된 IPv4는 32비트 주소 체계를 사용하여 약 43억 개의 고유 주소를 제공한다. 초기 인터넷의 대부분은 이 프로토콜을 기반으로 구축되었다.
* **IPv6:** 1998년에 개발된 IPv6는 128비트 주소 체계를 사용하여 사실상 무한대의 주소 공간을 제공한다. 이는 IPv4 주소 고갈 문제를 해결하기 위해 도입되었다.

#### IP 주소 구조

IP 주소는 네트워크 인터페이스를 고유하게 식별하는 숫자 문자열이다. IPv4와 IPv6는 서로 다른 주소 체계를 사용한다.

* **IPv4 주소:** 32비트 숫자로 구성되며, 일반적으로 점으로 구분된 4개의 10진수(예: 192.168.0.1)로 표현된다.
* **IPv6 주소:** 128비트 숫자로 구성되며, 콜론으로 구분된 8개의 16진수 블록(예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)으로 표현된다.

#### IP 패킷 구조

IP 패킷은 데이터를 전송하기 위해 포장된 형식으로, 헤더와 페이로드로 구성된다.

* **헤더:** 패킷의 메타데이터를 포함하며, 발신자 및 수신자 주소, 패킷 길이, 생존 시간(TTL) 등 여러 필드를 포함한다.
  * **IPv4 헤더 필드:** 버전, 헤더 길이, 서비스 유형, 전체 길이, 식별자, 플래그, 조각 오프셋, TTL, 프로토콜, 체크섬, 발신자 주소, 수신자 주소 등.
  * **IPv6 헤더 필드:** 버전, 트래픽 클래스, 플로우 레이블, 페이로드 길이, 다음 헤더, 홉 한계, 발신자 주소, 수신자 주소 등.
* **페이로드:** 실제 전송되는 데이터로, 상위 계층 프로토콜의 데이터를 포함한다.

#### IP 주소 할당 및 서브넷팅

IP 주소는 전 세계적으로 고유해야 하므로, 중앙 관리 기관(예: IANA, RIR)을 통해 할당된다. 네트워크 관리자들은 서브넷팅을 통해 할당된 주소 공간을 효율적으로 관리한다.

* **서브넷팅:** 큰 네트워크를 더 작은 서브넷으로 나누는 과정으로, 각 서브넷은 독립적으로 관리된다. 이는 네트워크 효율성을 높이고, 보안을 강화하며, 네트워크 관리를 용이하게 한다.
  * **서브넷 마스크:** 네트워크 주소와 호스트 주소를 구분하는 데 사용된다. 예를 들어, 255.255.255.0은 /24 서브넷을 나타낸다.

#### IP 라우팅

IP 라우팅은 데이터 패킷이 네트워크를 통해 목적지로 전달되는 경로를 결정하는 과정이다. 라우터는 네트워크 경로를 설정하고 최적의 경로를 선택하여 패킷을 전달한다.

* **정적 라우팅:** 네트워크 관리자가 수동으로 라우팅 테이블을 설정하는 방식이다. 고정된 네트워크 구조에서 사용된다.
* **동적 라우팅:** 라우팅 프로토콜(예: OSPF, BGP)을 사용하여 라우터가 자동으로 라우팅 테이블을 갱신하는 방식이다. 네트워크 변화에 실시간으로 대응할 수 있다.

#### IP 프래그멘테이션과 재조립

IP 프래그멘테이션은 큰 데이터 패킷을 여러 작은 조각으로 나누는 과정이다. 이는 데이터가 MTU(Maximum Transmission Unit)보다 큰 네트워크를 통해 전송될 때 필요하다.

* **프래그멘테이션:** 발신자가 패킷을 여러 조각으로 나누어 전송한다.
* **재조립:** 수신자가 받은 조각들을 원래의 패킷으로 재조립한다. 이는 헤더의 식별자와 오프셋 정보를 기반으로 이루어진다.

***

관련 자료:

1. Postel, J. (1981). Internet Protocol. RFC 791. <https://tools.ietf.org/html/rfc791>
2. Deering, S., & Hinden, R. (1998). Internet Protocol, Version 6 (IPv6) Specification. RFC 2460. <https://tools.ietf.org/html/rfc2460>
3. Tanenbaum, A. S., & Wetherall, D. J. (2011). Computer Networks (5th Edition). Prentice Hall.
4. Kurose, J. F., & Ross, K. W. (2016). Computer Networking: A Top-Down Approach (7th Edition). Pearson.
5. Stevens, W. R., & Wright, G. R. (1994). TCP/IP Illustrated, Volume 1: The Protocols. Addison-Wesley.
