-->

[네트워크] 인터넷 프로토콜(IP), 데이터그램 구조와 단편화 오프셋 계산법

인터넷 프로토콜(IP) 개요

IPv4는 비신뢰적이고 비연결형의 데이터그램 프로토콜이다. 비신뢰적이기 때문에 신뢰성있는 전송을 위해선 TCP와 같이 신뢰성 있는 전송 계층 프로토콜과 함께 사용되어야 한다. 

 

- 비신뢰성

- 비접속형

- 주소지정

- 경로설정

 

 

IPv4 데이터그램 구조

IP가 사용하는 패킷을 데이터그램이라고 한다. 가변길이의 패킷으로 헤더와 페이로드로 이루어져 있다.

 

IP 데이터그램의 구조 (출처: 구글 무료이미지 검색)

 

 

위 그림에 나와있는 각 필드에 대해 간단히 알아보자.

 

버전숫자

- IP 프로토콜의 버전을 정의

 

헤더길이

- 데이터그램은 가변의 헤더를 가지게되기 떄문에 수신자가 데이터그램을 수신하면 헤더가 어디서 끝나고 패킷에 캡슐화된 데이터가 어디서 시작하는지 알아야 한다. 따라서 수신자는 전체 길이를 확인하기 위해 필드값에 4를 곱하게 된다.

 

서비스유형

- 데이터그램을 어떻게 처리할지를 정의

 

전체길이

- IP 데이터그램의 전체 바이트 수를 정의함

 

식별자 (단편화 관련)

- 데이터그램이 전송된 근원지 호스트를 구분

 

플래그 (단편화 관련)

- 세개의 비트로 단편화 관련 정보를 표시함

- 첫번째 비트 : 사용되지 않음

- 두번째 비트 : 단편화 금지 필드

- 세번째 비트 : 1이면 다른 단편이 더 있음을 의미, 0이면 마지막 단편이거나 오직 하나의 단편임을 의미

 

단편화 오프셋

- 전체 데이터그램에서 해당 단편의 상대적인 위치를 나타냄

 

생존시간

- TTL 필드는 데이터그램이 방문할 수 있는 최대 라우터 수를 정의함

 

프로토콜

- 근원지 IP에서 페이로드가 캡슐화될 때, 이 필드에 상응하는 프로토콜의 번호가 추가됨

 

헤더 검사합(체크섬)

- IP는 헤더를 검사하기 위한 검사합 필드를 추가함

 

근원지와 목적지주소

- 각각 소스IP와 목적지IP주소를 나타냄

 

옵션

- 데이터그램 헤더는 40바이트까지 옵션을 가질 수 있음

 

 

IP프로토콜의 단편화 오프셋 계산

위에서 단편화와 관련된 필드 3개를 살펴봤다. 예를들어, 최대 MTU가 1500이고 크기가 4000바이트인 데이터그램이 3개로 단편화될 때, 단편화 오프셋 값은 어떻게 될까?

 

4000바이트의 데이터그램, 3개의 단편화이다. 이 때, 단순히 2000바이트씩 쪼개기만 하는게 아니라 패킷도 IP 데이터그램 포맷에 맞춰야 한다. 헤더크기 20바이트를 고려하면 20바이트의 헤더와 3980의 페이로드로 이루어지게 된다. 여기서 3980이 왜 1480,1480,1020으로 나뉘는지 이해가 잘 안가는데 일단 MTU 값에서 헤더인 20을 뺀 것으로 이해하겠다... (틀렸다면 누군가 댓글좀 남겨주세요) 

 

그리고 단편화 오프셋은 1480/8 = 185가 되고 오프셋은 185씩 증가하게 된다.

 

- 입력 패킷 : 20 + 3980 (3980 : 1480 + 1480 + 1020)

- 첫번째 단편 : 20 (헤더) + 1480 -> ID : x | flag : 1 | offet : 0

- 두번째 단편 : 20 (헤더) + 1480 -> ID : x | flag : 1 | offset : 185

- 세번째 단편 : 20 (헤더) + 1020 -> ID : x | flag : 1 | offset : 370

 

 

참고자료
[1] wogh8732.tistory.com/29

 

댓글

Designed by JB FACTORY