-->

[네트워크] 인터넷 프로토콜(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