IP (Internet Protocol, 인터넷 규약)
운영체제가 다른 컴퓨터끼리, 구현된 언어가 다른 프로그램끼리 (통칭 호스트) 네트워크에서 통신하기 위한 통신 규약. IP의 정보는 패킷-데이터그램이라고도 한다-에 담겨 전송된다.
특징
- 비신뢰성
비신뢰성은 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다. 예를 들어 전송 과정에서 패킷이 손상되거나 순서가 섞이거나 손실될 수도 있다. 패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.
- 비연결성
IP는 비연결성 통신이기 때문에 이전에 통신한 적 없는 호스트에 패킷을 보낼 때 경로 설정이 필요없다.
- IP 헤더 내에 수신, 발신 주소를 포함 -> IP 주소
- IP 헤더 내 바이트 전달 순서: 최상위 바이트(MSB)를 먼저 보냄(Big-endian)
- 경우에 따라 단편화가 필요함
- 모든 상위 계층 프로토콜들이 IP 데이타그램에 실려서 전송됨
Datagram format (IPv4)
IP 주소(Internet Protocol address, IP address, 인터넷규약주소)
컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호. 전화번호와 같이 국내에서 표준을 정하고 정책을 수립하여 이용자에게 무한히 할당할 수 있는 자원이 아니라 전 세계적으로관리되는 유한한 자원이다.
IPv4
오늘날 일반적으로 사용하는 ip 주소. 32bit 사용. (0.0.0.0~ 255.255.255.255)
중간의 일부 번호들은 특별한 용도를 위해 예약되어 있다(ex. 127.0.0.1 -> localhost)
IPv4주소는 인터넷주소자원 관리기관에서 부여한 네트워크 주소와 네트워크 상의 개별 호스트를 식별하기 위하여 네트워크 관리자가 부여한 호스트 주소로 구성된다.
IPv4주소는 네트워크의 크기나 호스트의 수에 따라 A, B, C, D, E 클래스로 나누어진다. A, B, C 클래스는 일반 사용자에게 부여하는 네트워크 구성용, D 클래스는 멀티캐스트용, E 클래스는 향후 사용을 위하여 예약된 주소이다.
IPv6
IPv4에는 다음과 같은 한계점이 있었다.
- 주소 공간의 고갈 (약 43억개 -> 약 43억×43억×43억×43억개)
- 최소 지연과 자원의 예약 불가
- 암호화와 인증기능 미제공 (IPsec 프로토콜 별도 설치 -> 확장기능에서 기본으로 제공)
이런 IPv4의 한게점을 보완 및 개선하고자 IPv6이 표준화되었다. 128bit 사용. (0000:0000:0000:0000:0000:0000:0000:0000 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF)
IP 주소 할당
-고정된 ip 주소 할당, DHCP를 이용하여 동적으로 할당
IP 단편화 (조각화)
조각화 / 단편화 (Fragmentation)
큰 IP 패킷들이 적은 MTU를 갖는 링크를 통하여 전송되려면 여러개의 작은 패킷으로 쪼개져서 전송되어야 함. 즉 거치는 각 라우터 마다 전송에 적합한 데이터링크 계층 프레임으로 변환이 필요하다.
재조립
최종 목적지에 도달하여서 조각난 패킷을 다시 원 상태로 조립하는 것이다.
ㅇ Fragment Identifier (16 bits): 각 조각이 동일한 데이터그램에 속하면 같은 일련번호를 공유함
ㅇ Fragmentation Flag (3 bits) : 분열의 특성을 나타내는 플래그
- 첫 번째 bit : 미사용 (항상 0)
- 두 번째 bit : D F bit (Don't Fragment)
- 분열(조각) 0: 라우터에서도 분열(조각,단편)이 가능함
- 미분열 1: 목적지 컴퓨터가 조각들을 다시 모을 능력이 없기 때문에 중간에 라우터로 하여금 데이터그램을 단편화하지 말라는 뜻 - 세 번째 bit : M F bit (More Fragment): 현재의 조각이 마지막이면 0 더 많은 조각이 뒤에 계속 있으면 1
ㅇ Fragmentation Offset (13 bits): 8 바이트 단위(2 워드)로 최초 분열 조각으로부터 어떤 곳에 붙여야하는 위치를 나타낸다. 각 조각들이 순서 바뀌어 도착할 수도 있기 때문에 중요한 필드. 만약 첫 번째 조각이라면 0, 두 번째 조각이라면 첫 번째 조각의 크기인 8(byte), 세 번째 조각이면 16, ...
IPv6의 단편화
IPv6은 라우팅 처리 효율을 높이기 위해 가급적 IP 단편화를 필요없게 하였다. IPv4의 경우 발신지 뿐만 아니라 중간 라우터에서도 단편화가 가능하지만, IPv6에서는 발신지에서만 가능하다. IPv6의 확장 헤더에 단편화 제어 필드를 두었다. 기본 MTU 크기를 증가하였다.