공부하는 스누피

[네트워크] IPv4, IPv6 본문

CS/네트워크

[네트워크] IPv4, IPv6

커피맛스누피 2020. 11. 1. 12:39

인터넷 네트워크 계층 패킷을 데이터그램이라 부른다. 데이터그램을 교환하도록 하는 통신 규약은 IP(Internet Protocol)로 데이터가 정확하게 전달될 것을 보장하지 않고, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다. 통신의 신뢰성은 상위 레이어에 있는 TCP(UDP 일부)가 보장한다. 현재 사용 중인 IP는 두 가지 버전이 있는데, IPv4와 IPv4를 대체하도록 제안된 IPv6이 있다.

 

IPv4

IPv4는 전 세계적으로 사용된 첫 번째 통신 규약이다. IPv4의 주소 체계는 12자리이고 네 부분으로 나뉜다. 주소는 각각 32bit로 구성되어 있으며 인터넷 사용자의 증가로 인해 2011년부터 할당이 중지되었다.

https://www.gatevidyalay.com/ipv4-ipv4-header-ipv4-header-format/

IPv4 데이터그램의 주요 필드

- 버전 번호: 4비트로 데이터그램의 버전을 명시한다. 라우터는 버전을 확인하여 그에 맞게 해석한다.

- 헤더 길이: IP 데이터그램에서 실제 페이로드가 시작하는 곳을 결정한다.

- 서비스 타입(TOS): 서로 다른 유형의 IP 데이터그램을 구분한다. (ex.실시간 데이터그램과 비실시간 트래픽을 구분한다.)

- 데이터그램 길이: 헤더와 데이터를 포함한 IP 데이터그램의 전체 길이이다. 이론상 최대 길이는 65,535바이트이다.

- 식별자, 플래그, 단편화 오프셋: IP 단편화와 관계가 있다.

- TTL (Time-to-live): 네트워크에서 데이터그램이 무한히 순환하지 않도록 한다. 이 필드 값은 라우터가 데이터그램을 처리할 때마다 감소하여 0이 되면 라우터가 자체적으로 데이터그램을 폐기한다.

- 프로토콜: 목적지 전송 계층의 특정 프로토콜을 명시한다. 네트워크 계층과 전송 계층을 묶는 역할을 한다.

- 헤더 체크섬: 라우터가 수신한 IP 데이터그램의 비트 오류를 탐지하는데 도움을 준다. 라우터는 수신한 데이터그램마다 헤더 체크섬을 계산하고 값과 헤더의 체크섬이 다르면 데이터그램을 폐기한다.

- 출발지와 목적지 IP 주소: DNS 검색을 통해 목적지 주소를 결정한다.

- 옵션: IP 헤더를 확장한다.

- 데이터(페이로드): 대부분 트랜스포트 계층 세그먼트(TCP, UDP)를 포함한다.

 

IPv4 데이터그램 단편화

링크 계층 프레임이 전달할 수 있는 최대 데이터 양을 MTU(Maximum transmission unit)이라 부른다. 보통 링크 계층 프로토콜의 MTU는 데이터그램 길이에 엄격한 제약을 두어 크기 제약은 문제가 되지 않는다. 송신자와 목적지 간의 경로에 있는 각 링크가 다른 링크 계층 프로토콜을 사용할 수 있고 각 프로토콜이 서로 다른 MTU를 가질 수 있다는 점에서 문제가 생긴다. IP 데이터그램의 길이보다 작은 MTU를 가지는 링크 계층 프로토콜은 IP 데이터그램의 페이로드를 작게 분할해 별도의 프레임으로 캡슐화하여 보낸다. 이렇게 나뉘어진 데이터그램을 조각(fragment, 단편)이라고 한다.

 

조각들을 재결합하는 작업은 종단 시스템에서 이루어진다. 목적지 호스트가 같은 출발지로부터 일련의 데이터그램을 수신하면, 이 데이터그램이 조각인지 아니면 원본인지 확인한다. 조각이라 판단되면 식별자, 플래그, 단편화 오프셋 필드를 참고해 재결합을 수행한다.

 

IPv4 주소체계

IP 주소는 호스트와 물리적 링크 사이의 경계인 인터페이스를 포함하는 호스트 라우터보다 인터페이스와 더 관련이 있다. 각 IP 주소는 32비트(4바이트) 길이로 대략 40억개의 주소가 사용 가능하다. 십진 표기법(dotted-decimal notation)을 사용해 표기하는데, 주소의 각 바이트를 십진수로 표현하고 점(.)으로 다른 바이트와 구분한다. 

주소 193.32.216.9를 이진수로 나타내면 다음과 같다.
11000001 00100000 11011000 00001001

서브넷(subnet)은 호스트들의 인터페이스들과 하나의 라우터 인터페이스로 연결된 네트워크로, IP 네트워크라고도 한다. IP 주소체계는 서브넷에 IP 주소와 서브넷 마스크를 함께 할당하는데, 223.1.1.0/24라는 주소가 서브넷에 할당되었다면, 서브넷 마스크는 /24이며 32비트 주소의 왼쪽 24비트가 서브넷 주소라는 것을 가리킨다.

 

서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다. 이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다. 이렇게 고립된 네트워크 각각을 서브넷이라고 부른다.

 

CIDR (Classless Interdomain Routing: 사이다로 읽음)

CIDR은 서브넷 주소체계 표기를 일반화하는 인터넷 주소 할당 방식이다. 32비트 IP 주소는 두 부분으로 나누고, 이것을 다시 십진수 형태의 a.b.c.d/x로 만든다. 여기서 x는 최상위 비트(most significant bit, MSB)를 의미하며 IP 주소의 네트워크 부분을 구성한다. 이를 해당 주소의 프리픽스(prefix)라고 부른다. 학교나 회사같은 기관에 있는 장비들의 IP 주소는 공통 프리픽스를 공유한다. 외부 기관의 라우터는 목적지 주소가 내부 기관인 데이터그램을 전달할 때 MSB만 고려해 포워딩 테이블의 크기를 줄여 준다. MSB를 제외한 나머지 비트들은 기관 내부의 모든 장비들을 구별할 수 있게 한다. CIDR 이전에는 클래스 주소체계를 사용해 서브넷을 A, B, C 클래스 네트워크로 분류했다. 

 

주소 할당 과정

1) 주소 블록 획득: 네트워크 관리자는 ISP에서 주소 블록을 획득한다. 

2) 호스트 주소 획득: 개별 IP 주소를 기관 내부의 호스트와 라우터 인터페이스에 할당한다. 일반적으로 동적 호스트 구성 프로토콜(DHCP)을 사용한다. DHCP는 주소가 제한된 시간 동안에만 필요할 경우 매우 효율적인 클라이언트/서버 프로토콜이다.

DHCP 프로토콜 4단계 과정
1. DHCP 서버 발견
새롭게 도착한 호스트는 상호 동작될 DHCP를 발견하고 발견 메세지를 보낸다. 링크 계층으로 발견 메세지가 포함된 IP 데이터그램을 보내며 이 프레임은 서브넷에 연결된 모든 노드로 브로드캐스팅(255.255.255.255)된다.
2. DHCP 서버 제공
발견 메시지를 받은 DHCP 서버는 제공 메세지를 응답한다. 서브넷의 모든 노드로 메시지를 브로드캐스팅한다. 브로드캐스팅하는 이유는 클라이언트가 최적의 위치에 있는 DHCP 서버를 선택하게 하기 위함이다.
3. DHCP 요청
클라이언트는 선택한 서버에게 DHCP 요청 메세지로 응답한다.
4. DHCP ACK
서버는 요청 메시지에 대해 ACK 메시지로 응답한다.

 

네트워크 주소 변환(NAT)

NAT 라우터는 하나의 IP 주소를 갖는 장비로 동작하며 홈 네트워크의 주소 공간에서 DHCP 서버를 실행하여 컴퓨터에게 주소를 제공한다. NAT 변환 테이블을 사용해 IP 주소와 포트 번호를 저장하고, 이를 통해 내부 호스트를 알 수 있게 한다. 

 

IPv6

IPv4에 따른 IP 주소가 고갈되어감에 따라 새롭게 개발된 버전이다. IPv6에서 바뀐 것에는 확장된 주소 기능, 간소화된 헤더, 흐름 라벨링이 있다.

 

IPv6 데이터그램의 주요 필드

- 버전: IP 버전 번호를 인식한다.

- 트래픽 클래스: 특정 응용 데이터그램에 우선 순위를 부여하는데 사용된다.

- 흐름 라벨: 데이터그램의 흐름을 인식하는데 사용된다.

- 페이로드 길이: unsigned integer이다.

- 다음 헤더: 데이터그램의 내용이 전달될 프로토콜을 구분한다. (IPv4의 프로토콜 필드)

- 홉 제한: 라우터가 데이터그램을 전달할 때마다 1씩 감소하며, 0이면 라우터가 데이터그램을 버린다.(TTL이랑 비슷)

- 출발지와 목적지 주소: IPv4와 동일

- 데이터: 페이로드 부분이다.

 

IPv4에는 단편화/재결합을 위한 필드가 있었지만, IPv6에서는 단편화와 재결합을 출발지와 목적지만이 수행한다. 라우터가 받은 데이터그램이 너무 커서 출력 링크로 전달할 수 없다면 데이터그램을 폐기하고 오류 메시지를 보낸다. 재결합 과정을 없애 속도를 증가시켰다.

 

트랜스포트 계층 프로토콜과 데이터 링크 프로토콜은 체크섬을 수행하기 때문에 네트워크 계층에서 굳이 해 줄 필요가 없다고 여겨졌다. IPv6에서는 속도를 중시해 단편화를 없앤 것같이 체크섬도 없애 모든 라우터마다 체크섬을 비교할 필요가 없게 되었다.

 

 

(참고) 

James F. Kurose. Computer networking a top-down approach. 7th edition

ko.wikipedia.org/wiki/IPv4

 

IPv4 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. IPv4는 인터넷 프로토콜의 4번째 판이며, 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이다. 과거에 인터넷에서 사용되는 유일한 프로토콜이였으나 오늘날에

ko.wikipedia.org

 

Comments