{{위키데이터 속성 추적}}
{{다른 뜻|인터넷 프로토콜 스위트|특정한 프로토콜 기술|인터넷 관련 프로토콜의 전체 설정}}
{{다른 뜻|IP 주소||비슷한 뜻}}
{{IP스택}}
[[파일:InternetProtocolStack.png|섬네일]]
'''인터넷 [[통신 프로토콜|프로토콜]]'''('''IP''', '''I'''nternet '''P'''rotocol)은 송신 [[호스트 (네트워크)|호스트]]와 수신 호스트가 [[패킷 교환 네트워크]](패킷 스위칭 네트워크, Packet Switching Network)에서 정보를 주고받는 데 사용하는 정보 위주의 규약(프로토콜, Protocol)이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다. 줄여서 '''아이피'''(IP)라고도 한다.

IP의 정보는 [[패킷]] 혹은 [[데이터그램]]이라고 하는 덩어리로 나뉘어 전송된다. IP에서는 이전에 통신한 적 없는 호스트에 패킷을 보낼 때 경로 설정이 필요없다.

IP는 비신뢰성(unreliability)과 비연결성(connectionlessness)이 특징이다. 비신뢰성은 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다는 뜻이다. 예를 들어 전송과정에서 패킷이 손상될 수도 있고, 같은 호스트에서 전송한 패킷의 순서가 뒤죽박죽이 될 수도 있고, 같은 패킷이 두 번 전송될 수도 있으며, 아예 패킷이 사라질 수도 있다. 패킷 전송과 정확한 순서를 보장하려면 [[전송 제어 프로토콜|TCP]] 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.

현재 [[인터넷]]에서 사용하는 표준 프로토콜은 인터넷 프로토콜의 4번째 판인 [[IPv4]]이다. 그러나 IPv4는 주소공간 고갈 문제를 겪고 있어 조만간 6번째 판인 [[IPv6]]가 대중화될 것으로 보인다. [[마이크로소프트]] [[윈도우 7]], [[OS X]], [[리눅스]] 등 현재 널리 쓰이고 있는 대부분의 [[운영 체제]]는 IPv6 프로토콜을 지원한다.

== 기능 ==
[[파일:UDP encapsulation.svg|섬네일|UDP를 통해 링크 프로토콜 프레임으로 전달되는 애플리케이션 데이터 캡슐화]]
인터넷 프로토콜은 [[네트워크 인터페이스 컨트롤러|호스트 인터페이스]] 주소 지정, 데이터를 데이터그램([[IP 단편화|단편화 및 재조합 포함]])으로 캡슐화, 하나 이상의 IP 네트워크를 통해 소스 호스트 인터페이스에서 대상 호스트 인터페이스로 데이터그램 라우팅을 담당한다. 이러한 목적을 위해 인터넷 프로토콜은 패킷 형식을 정의하고 주소 지정 시스템을 제공한다.

각 데이터그램에는 [[헤더 (컴퓨팅)]]와 [[페이로드 (컴퓨팅)]]라는 두 가지 구성 요소가 있다. [[IP 헤더]]에는 소스 IP 주소, 대상 IP 주소 및 데이터그램을 라우팅하고 전달하는 데 필요한 기타 메타데이터가 포함된다. 페이로드는 전송되는 데이터이다. 헤더가 있는 패킷에 데이터 페이로드를 중첩하는 이 방법을 캡슐화라고 한다.

IP 주소 지정에는 IP 주소 및 관련 매개변수를 호스트 인터페이스에 할당하는 작업이 수반된다. 주소 공간은 네트워크 접두사 지정을 포함하여 [[부분망]](서브넷)으로 구분된다. IP 라우팅은 모든 호스트와 라우터에 의해 수행되며, 주요 기능은 네트워크 경계를 넘어 패킷을 전송하는 것이다. 라우터는 네트워크 토폴로지에 필요에 따라 특별히 설계된 [[라우팅 프로토콜]](내부 게이트웨이 프로토콜 또는 외부 게이트웨이 프로토콜)을 통해 서로 통신한다.

== 대표적인 IP 주소 체계 ==
다음은 보편적으로 사용되는 [[IP 주소]] (ip address)체계이다.
* [[IPv4]]
* [[IPv6]]

== 버전 역사 ==
1974년 5월 IEEE([[전기전자공학자협회]])는 "패킷 네트워크 상호 통신을 위한 프로토콜"이라는 제목의 논문을 발표했다. 논문의 저자인 [[빈트 서프]]와 [[로버트 칸|봅 칸]]은 네트워크 노드 간 [[패킷 교환]]을 사용하여 리소스를 공유하기 위한 [[인터네트워킹]] 프로토콜을 설명했다. 이 모델의 중앙 제어 구성 요소는 호스트 간의 연결 지향 링크와 데이터그램 서비스를 모두 통합한 "전송 제어 프로그램"이었다. 모놀리식 전송 제어 프로그램은 나중에 전송 계층의 전송 제어 프로토콜과 사용자 데이터그램 프로토콜, 인터넷 계층의 인터넷 프로토콜로 구성된 모듈식 아키텍처로 나뉘었다. 이 모델은 국방부(DoD) 인터넷 모델 및 [[인터넷 프로토콜 스위트]]로 알려졌으며 비공식적으로는 TCP/IP로 알려졌다.

IP 버전 1~3은 1973년에서 1978년 사이에 설계된 실험적 버전이었다. 다음 IEN(Internet Experiment Note) 문서에서는 IPv4 최신 버전 이전의 인터넷 프로토콜 버전 3에 대해 설명한다:
* [http://www.rfc-editor.org/ien/ien2.txt IEN 2] (''Comments on Internet Protocol and TCP'')
* [http://www.rfc-editor.org/ien/ien26.pdf IEN 26] (''A Proposed New Internet Header Format'')
* [http://www.rfc-editor.org/ien/ien28.pdf IEN 28] (''Draft Internetwork Protocol Description Version 2'')
* [http://www.rfc-editor.org/ien/ien41.pdf IEN 41] (''Internetwork Protocol Specification Version 4'')
* [http://www.rfc-editor.org/ien/ien44.pdf IEN 44] (''Latest Header Formats'')
* [http://www.rfc-editor.org/ien/ien54.pdf IEN 54] (''Internetwork Protocol Specification Version 4'')

사용 중인 [[인터넷 계층]]에서 지배적인 인터네트워킹 프로토콜은 [[IPv4]]이다. 숫자 4는 모든 IP 데이터그램에 포함된 프로토콜 버전을 식별한다. IPv4는 RFC 791(1981)에 설명되어 있다.

버전 2와 3은 1~16옥텟(8~128비트) 범위의 가변 길이 주소를 지원했다. 버전 4의 초기 초안에서는 최대 256옥텟(최대 2048비트)의 가변 길이 주소를 지원했지만 나중에 IPv4 최종 버전에서는 고정 크기 32비트 주소를 위해 이를 포기했다.

버전 번호 5는 채택되지 않은 실험적인 스트리밍 프로토콜인 [[인터넷 스트림 프로토콜]]에서 사용되었다.

IPv4의 후속은 [[IPv6]]이다. IPv6는 TP/IX(RFC 1475), PIP(RFC 1621) 및 TUBA(더 큰 주소를 사용하는 TCP 및 UDP, RFC 1347)와 같은 다양한 프로토콜 모델이 제안된 수년간의 실험과 대화의 결과이다. 버전 4와의 가장 두드러진 차이점은 주소 크기이다. IPv4는 주소 지정에 32비트를 사용하지만 대략 43억(4.3×109)개의 주소, IPv6은 128비트 주소를 사용하여 대략 3.4×1038개의 주소를 제공한다. IPv6 채택 속도는 느리지만 2023년 1월 기준 전 세계 대부분의 국가에서 IPv6 채택률이 상당히 높은 것으로 나타났다. 구글 트래픽의 41% 이상이 IPv6 연결을 통해 전달된다.

IPv6가 이전에 사용되지 않았다는 사실이 실사를 통해 확인될 때까지 새로운 프로토콜을 IPv6으로 지정하는 것은 불확실했다. 다른 인터넷 계층 프로토콜에는 7(IP/TX), 8, 9(이전)와 같은 버전 번호가 할당되었다. 특히 1994년 4월 1일 IETF는 IPv9에 대한 [[만우절]] 농담을 발표했다. IPv9는 TUBA라는 대체 주소 공간 확장 제안에도 사용되었다. "IPv9" 프로토콜에 대한 2004년 중국 제안은 이 모든 것과 관련이 없는 것으로 보이며 IETF에서 승인하지 않는다.

== 신뢰성 ==
인터넷 프로토콜 제품군의 설계는 CYCLADES 프로젝트에서 채택한 개념인 엔드투엔드 원칙을 준수한다. 엔드투엔드 원칙에 따르면 네트워크 인프라는 단일 네트워크 요소나 전송 매체에서 본질적으로 신뢰할 수 없는 것으로 간주되며 링크와 노드의 가용성 측면에서 동적이다. 네트워크 상태를 추적하거나 유지하는 중앙 모니터링 또는 성능 측정 시설은 없다. 네트워크 복잡성을 줄이기 위해 네트워크의 인텔리전스는 최종 노드에 위치한다.

이러한 설계의 결과로 인터넷 프로토콜은 최선의 전달만을 제공하며 해당 서비스는 신뢰할 수 없다는 특징이 있다. 네트워크 아키텍처 용어에서는 연결 지향 통신과 달리 연결 없는 프로토콜이다. 데이터 손상, 패킷 손실, 복제 등 다양한 오류 조건이 발생할 수 있다. 라우팅은 동적이므로 모든 패킷이 독립적으로 처리되고 네트워크가 이전 패킷의 경로를 기반으로 상태를 유지하지 않기 때문에 서로 다른 패킷이 서로 다른 경로를 통해 동일한 대상으로 라우팅되어 순서가 뒤바뀐 전달이 발생할 수 있다.

네트워크의 모든 결함 조건은 참여하는 최종 노드에 의해 감지되고 보상되어야 한다. 인터넷 프로토콜 제품군의 상위 계층 프로토콜은 안정성 문제를 해결하는 역할을 한다. 예를 들어, 호스트는 데이터가 애플리케이션에 전달되기 전에 올바른 순서를 보장하기 위해 네트워크 데이터를 [[버퍼 (컴퓨터 과학)|버퍼링]]할 수 있다.

IPv4는 IP 패킷의 헤더에 오류가 없도록 보장하는 보호 장치를 제공한다. 라우팅 노드는 헤더 [[체크섬]] 테스트에 실패한 패킷을 삭제한다. ICMP([[인터넷 제어 메시지 프로토콜]])가 오류 알림을 제공하지만 라우팅 노드는 양쪽 끝 노드에 오류를 알릴 필요가 없다. 이와 대조적으로 IPv6은 현재 [[링크 계층]] 기술이 충분한 오류 감지 기능을 제공한다고 가정하므로 헤더 체크섬 없이 작동한다.

==링크 용량 및 성능==
인터넷의 동적 특성과 구성 요소의 다양성으로 인해 특정 경로가 실제로 요청된 데이터 전송을 수행할 수 있거나 적합하다는 보장은 없다. 기술적인 제약 중 하나는 주어진 링크에서 가능한 데이터 패킷의 크기이다. 로컬 링크의 [[최대 전송 단위]](MTU) 크기를 검사하는 기능이 있으며 경로 MTU 검색은 대상까지의 전체 의도 경로에 대해 사용할 수 있다.

IPv4 인터네트워킹 계층은 링크 MTU가 초과되면 전송을 위해 데이터그램을 더 작은 단위로 자동으로 [[IP 단편화|단편화]]한다. IP는 순서가 잘못된 조각을 다시 정렬하는 기능을 제공한다. IPv6 네트워크는 네트워크 요소에서 단편화를 수행하지 않지만 경로 MTU를 초과하지 않도록 최종 호스트와 상위 계층 프로토콜이 필요하다.

TCP([[전송 제어 프로토콜]])는 세그먼트 크기를 MTU보다 작게 조정하는 프로토콜의 예이다. UDP([[사용자 데이터그램 프로토콜]]) 및 ICMP는 MTU 크기를 무시하므로 IP가 크기가 큰 데이터그램을 단편화하도록 한다.

==보안==
[[아파넷]]과 초기 인터넷의 설계 단계에서는 공용, 국제 네트워크의 보안 측면과 요구 사항을 적절하게 예측할 수 없었다. 결과적으로, 많은 인터넷 프로토콜은 네트워크 공격과 이후의 보안 평가를 통해 강조된 취약점을 드러냈다. 2008년에는 철저한 보안 평가와 문제 완화 제안이 발표되었다. IETF는 추가 연구를 진행해 왔다.

== 같이 보기 ==
{{위키공용분류}}
* [[IP 주소]]
* [[인터넷]]
* [[IP 패킷]]
* [[ICANN]]
* [[차세대 통신망]]

== 외부 링크 ==
* {{dmoz|Computers/Internet/Protocols}}
* [https://web.archive.org/web/20181120100028/http://www.findip.kr/ 자기 IP 주소 보기]
* {{웹 인용|url=https://www.ict.tuwien.ac.at/lva/384.081/datacom/09-IP_Technology_v6-3_handout.pdf |author=Manfred Lindner |title=IP Technology |access-date=2018-02-11}}
* {{웹 인용|url=https://www.ict.tuwien.ac.at/lva/384.081/datacom/10-IP_Routing_v6-2_handout.pdf|author=Manfred Lindner|title=IP Routing|access-date=2018-02-11}}

{{전거 통제}}

[[분류:인터넷 프로토콜| ]]
[[분류:인터넷 표준]]
[[분류:인터넷 계층 프로토콜]]