6일차에서 IP 헤더를 분석할 때 id 필드와 flag & fragment offset 필드에 대해 알아보지 않았다.

# ifconfig 를 해보면 MTU : 1500 을 확인 할 수 있다.


MTU 란?

컴퓨터 네트워킹에서, 레이어의 커뮤니케이션 프로토콜의 최대 전송 단위(maximum transmission unit, MTU)란 해당 레이어가 전송할 수 있는 최대 프로토콜 데이터 단위의 크기(바이트)이다.

즉 , MTU : 1500 은 최대 보낼수 있는 데이터의 크기가 1500byte라는 뜻이다.

그럼 2000byte 크기의 데이터는 어떻게 보낼까?


Fragment

IP 헤더의 id 와 flag & flagment offset 을 이용하여 두개의 패킷으로 나누어서 보내는 것



1. Identification(2byte)

 - 나누어져 보내진 패킷을 식별하기 위한 필드


2. flag & fragment offset(2byte)

 - 앞에 3비트만 flag 나머지 13비트는 fragment offset이 사용

1). flag(3bit)

 - 001 MF( More fragment ) : 뒤에 분할된 데이터가 있다는 뜻

 - 010 DF( dont flagment ) : 데이터를 분할하면 안된다라는 뜻 

2). fragment offset(13bit)

 - 잘리기전에 존재했던 위치 ex) 2000byte의 데이터를  1500과 500으로 나눈다.

   1500바이트짜리 정보는 flag001  offset 0

   500바이트짜리 정보는 flag000 offset 1500


실습

1). IP 클래스를 만든다.

2). ip 8.8.8.8로 크기 2000byte의 핑을 보낸다.

3). 패킷을 분석한다.

총 2개의 패킷으로 나누어 보내어진것을 확인할 수 있다.

첫번째 패킷의 크기는 1500byte( IP헤더(20) + 데이터(1480) ) 

id는 50220 

flag는 001(MF) 로 뒤에 분할된 패킷이 있다는 의미


두번째 패킷의 크기는 548byte( IP헤더(20) + ICMP헤더(8) + 데이터(520) ) 

id도 50220   둘이 같은 패킷이라는 뜻

flag는 000 뒤에 더이상 분할된 패킷이 없다는 것이다.

fragment offset은 1480으로 분할된 전 패킷의 마지막 위치이다. 


WRITTEN BY
Bugday

,