#dokydoky
Packet Fragment 본문
MTU ( Maximum Transmit Unit)
- 특정 장비에서 한 번에 보낼수 있는 IP데이터 그램의 최대 크기
- 이더넷 네트워크 에서 보통 1500 바이트
단편화의 발생 시기
- 특정 장비의 MTU 보다 큰 패킷이 들어왔을 때
Packet Fragment
패킷 단편화를 보기위해 두 가지 경우를 비교해보자.
① ping 6.1.3.68
우선 일반적으로 ping을 보낸 경우이다.
그러면 패킷 크기는 74byte(Ethernet header 14byte + IP header 20byte + ICMP header 8byte + DATA 32byte) 이다. 참고로 그림에서 확인되듯이 data는 abcdefg...........순서대로 의미없는 값이 채워진다.
<그림 1>
이 경우는 총 크기 74byte이므로 fragment(단편화)가 될 필요가 없다.
② ping 6.1.3.68 -l 4048
-l 명령어는 패킷의 Data크기를 지정해주는 명령어이다. 따라서 이 명령어를 4048 data크기의 ping을 날린다는 의미이다. 그런데 ethernet에서 MTU 크기는 1500이므로 패킷을 fragment해야한다. 어떻게 fragment가 되는지 알아보자.
<그림 2>
4048byte ping 패킷(헤더의 크기는 제외)을 어떻게 나누어야 할까? Ethernet의 MTU는 1500byte이므로 (1500byte + 1500bye + 1048byte) 이렇게 3개의 패킷으로 나누어질까? 글쎄.. 좀 더 알아보자.
우선 <그림 2>에서 보면 ping 패킷이 3개의 패킷으로 fragmentation된 건 맞는 것 같다. 이제 3개의 fragment를 각각 분석해 보자. 아래 <조각1,2,3>은 각각 frame 129, 130, 131으로 fragemetation되었다.
<조각 1>
frame 129는 총 길이 1514byte(Ethernet header 14byte + IP header 20byte + Data 1480 byte)이다.
<조각 2>
frame 130는 총 길이 1514byte(Ethernet header 14byte + IP header 20byte + Data 1480 byte)이다.
<조각 3>
frame 131는 총 길이 1130byte(Ethernet header 14byte + IP header 20byte + ICMP header 8 byte +
Data 1088 byte)이다. 3개의 fragment를 보면 4048의 Data는 1480 + 1480 + 1088(ICMP header + 8)
으로 나뉘고 세 패킷 헤더값까지 합쳐서 보면 1514byte + 1514byte + 1130byte 이다. 따져보면 3개로 fragmentation을 하면서 1개의 패킷일 때 보다 Ethernet header와 IP header가 2개씩 더 붙었으니 68byte가 더 전송되었다.
그렇다면~~~~~ 이렇게 나누어진 fragment들은 어떻게 재조합 될까? 패킷을 fragmentation할 때 미리 각각의 fragement에 재조합될 때의 필요한 정보를 넣어둔다.
첫째, IP Header를 보면 2byte필드인 “IP identification number" 또는 ”fragement ID"가 있다. 각각의 fragment는 이를 보고 동일한 값들을 갖는 fragment끼리 재조합을 한다. 즉, 같은 패킷조각들은 같은 값을 가지고 있다.
둘째, 2byte의 “Fragment offset"은 단편화되기 이전의 패킷에서의 위치를 의미한다.
셋째, 각 fragement는 그 fragement의 Data 길이를 가진다. 위의 예에서는 1480, 1480, 1096
넷째, IP Header에서 ME(More Fragment) flag. 이는 fragment가 더 있으면 1 없으면 0으로 표시된다. 위의 예에서 조각1, 2는 ME flage가 0x01, 조각3은 0x00으로 표시되어 있다.
위와같은 정보로 fragmentation된 패킷은 수신측에서 다시 조합될 수 있다.
'Network & Encryption' 카테고리의 다른 글
HTTPS - 1. 그림으로 살펴보는 HTTPS (0) | 2018.04.12 |
---|---|
[기술문서] Packet Injection (0) | 2013.11.20 |
케이블에 대해서... (0) | 2011.03.31 |
Date Link층과 Network층 (0) | 2011.03.31 |
OSI 와 TCP/IP (1) | 2011.03.31 |