조각화란?
IP 계층에서는 IP 헤더 말고는 전부 PayLoad 이기 때문에 MTU에서 IP 헤더 값을 뺀 1480이 payLoad 이다.
일반적으로 보통 MTU는 1500인데 1500이 아닐 수도 있다.
MF ( more fragment) , offset : IP 헤더에 있는 정보들
more Fragment : 뒤에 패킷이 더 있으면 1 , 없으면 0
offset : 8로 나눈 값을 적는다.
이렇게 했을때
4개의 Identification 값은 똑같다.
I일반적으로 MTU가 1500인데
위 그림과 같이
2000 짜리 데이터에 8바이트 짜리 ICMP 붙히고, 20바이트 IP 헤더 붙혀 2028 짜리 패킷을 보내려고 하면 안보내진다.
이럴때 조각화를 하는것이다.
2000 바이트짜리 데이터를 1500 MTU에 맞게 두개로 쪼개야 된다.
IP 헤더 붙어야되니깐 1500에서 20 빼서 1480
그리고 나머지가 520 바이트
여기서 알 수 있는것은 ICMP는 마지막 조각에만 붙었다는 점이다.
이렇게 되면 비로서 MTU 1500 안에 들어오니깐 보낼 수 있게 되고
그 다음으로 이더넷 프로토콜 까지 인캡슐레이션 하는것이다.
그래서 와이어샤크에서 캡쳐되는 패킷중에 이더넷까지 인캡슐레이션된 프레임은 보통 1514가 많이 보인다.
중요한것은 MTU가 걸러지는 시점이다. IPv4가 붙고 -> MTU 걸르고 -> 이더넷 헤더 붙히는거다.
4 5 00 은 매번 똑같을거고
0x 05 dc ==> 1500
0x 02 24 ==> 548
12 ab => ID 가 같다.
001 0 => more fragment 2 ( 3비트만 쓰는데 16진수로 바꾸면 2번째가 1이라 2가 온다. )
1480 을 8 로 나누면 185 인데 16진수로 b9 이다.
TTL 값 80
상위 프로토콜 값 => ICMP 01
checksum 값 => 00 00
출발지 IP
목적지 IP
[ 실습 ]
ping 으로 4800 보내보자.
이때 와이어 샤크로 보려면 필터를 icmp 로 보면 제대로 안보여진다.
Icmp는 마지막 조각 패킷에만 붙는다.
ping 보냈던 ip 주소로 필터를 걸러준다.
192.168.75.111 인 내가 192.168.75.1 인 애한테 ping 보낸게 잡힌것을 알 수 있다.
그리고 마지막 패킷의 길이는 402인것을 알 수 있다.
위에서 계산한 마지막 데이터 크기 360 에다가 Icmp 8 바이트 붙고, ipv4 20바이트 붙고, 이더넷 14바이트 붙으면 402 이가 된다.
'네트워크 > Network 실습' 카테고리의 다른 글
08. UDP 프로토콜 (0) | 2022.05.28 |
---|---|
07. Client - Server 개념 (0) | 2022.05.25 |
06. 라우팅 테이블 및 전송 과정 ∨ (0) | 2022.05.24 |
05. IP 프로토콜 구조 & ICMP 프로토콜 구조 ∨ (0) | 2022.05.20 |
04. IP 주소 체계 & ARP 프로토콜 ∨ (0) | 2022.05.08 |