코드네임 :

📡 데통네 과제 📚 - Wireshark로 IP fragmentation 분석하기 본문

🛜Network/데이터통신네트워크

📡 데통네 과제 📚 - Wireshark로 IP fragmentation 분석하기

비엔 Vien 2024. 5. 10. 17:33

흠름름름 틀릴수도 잇더여

104번 패킷
105번 패킷

 

no. 104

header length = 20

total (IP datagram) length = 1500bytes

payload length = 1500 - 20 = 1480 bytes

 

no. 105

header length = 20

total (IP datagram) length = 548bytes

payload length =  548- 20 = 528bytes

 

 

두 IP header의 어떠한 부분으로부터 fragmentation이 되었음을 있는가?

>> 각각의 Flags 필드로부터 이들이 fragmentation 되었음을 알 수 있다. 

      즉 104번의 flag : 0x1와 105번 패킷의 flag : 0x0으로부터 알 수 있다. 

(0x1 : 현재 패킷이 단편화 되었고 따라오는 패킷도 단편화 될것이다를 의미)

(0x0 : 여기가 해당 IP 패킷의 마지막 단편이다 이자슥아 = 요 패킷 다음에는 추가 단편이 없음)

 

 

ㅇㄷ서 IP header의 어떠한 필드가 첫번째 단편(fragment)인지 수 잇노
>> 104번 패키지의 Fragment Offset : 0 에서 첫번째 단편임을 알 수 있다.

 

 

 

단편화(fragmentation)가 발생하는 이유
1. 기억장치(버퍼)의 낭비를 줄이기 위해서 

   짧은 패킷일 수록 지연을 줄일 수 있으며, 패킷의 길이가 길어지면 각 노드의 버퍼의 낭비가 발생 ㄱㄴ

2.  네트워크의 종류에 따라 다양한 패킷 크기 제약이 있듬

3.  모든 공유하는 통신자원에 대해 공정한 엑세스를 보장

 

 

 

원본 IP datagram의 사이즈가 3520이 되는 경우, 각 단편의 크기는 어떻게 변하늬

원본 IP 데이터그램의 크기가 3520 바이트인 경우, 단편화 과정에서 각 단편의 크기는 MTU (Maximum Transmission Unit) 설정에 따라 결정됨..

MTU가 1500 bytes 이므로, 각 단편의 크기 설정과 단편의 수를 계산해보zㅏ

 

 

<단편화 과정>

 

1. 단편화 가능한 크기 계산

>> 각 단편의 최대 크기 = MTU - IP 헤더 크기 (위 사진에서 IP 헤더는 20바이트) 

>> 각 단편의 최대 데이터 크기는 1500 - 20 = 1480 bytes바이트가 됩니다.

 

2. 단편 수 계산

>> 필요한 단편 개수 =전체 데이터그램 크기 / 단편화 가능한 데이터 크기

>> 3520bytes // 1480= 2.3… = 3 

>> -> 3개의 단편이 필요

 

3. 각 단편의 크기

>> 처음 두 단편은 각각 1480 bytes 의 데이터를 포함하고,

>> 마지막 단편은 남은 데이터를 포함

>> 마지막 단편 크기 : 3520 bytes - 2 * 1480 bytes = 560 bytes

 

4. 각 단편의 전체 크기 

>> 첫 번째 단편: 1500 bytes (헤더 20 bytes + 페이로드 데이터 1480 bytes)

>> 두 번째 단편: 1500 bytes (헤더 20 bytes + 페이로드 데이터 1480 bytes)

>> 번째 단편: 580 bytes (헤더 20 bytes + 페이로드 데이터 560 bytes) 

 

 


 

참고!!

ip 데이터 그램의 전체길이와 패킷 전체길이?

https://osqa-ask.wireshark.org/questions/13970/how-to-know-the-total-bytes-in-the-message/

 

Wireshark Q&A

Hey guys, I'm using the Wireshark for the first time :) I'd like to ask you guys what's the difference between the total bytes in the message and the total number of bytes in the whole frame? Also, how can I get them from the [app after captured]? Looking

osqa-ask.wireshark.org