조각화란?
- 데이터의 최대 전송 단위(MTU)가 장비들마다 설정되어 있다.(일반적으로 1500byte)
- 페이로드가 MTU보다 크다면 IPv4 프로토콜에서 데이터를 쪼개는 과정인 '조각화'를 거쳐 데이터를 전송하게 된다.
- MTU(Maximum Transfer Unit)은 페이로드 + IPv4까지 한 값이다.
👉 IPv4 헤더의 길이가 보통 20byte이기 때문에 보낼 수 있는 페이로드는 20byte를 빼고 생각해 주어야 한다.
👉 만약 데이터가 11980byte라 할 때, MTU가 3300이라면 IPv4를 붙여야 하므로 20byte를 뺀 3280씩 쪼개야 한다.
👉 즉, (3280) (3280) (3280) (2140) 으로 쪼개어 보내야 한다는 것이다.
👉 MF는 'More Fragment'이고 1이면 뒤에 패킷이 더 있다는 뜻
👉 First Fragmentation에 있는 4개의 패킷의 'id'는 모두 동일하다.
👉 Offset은 payload를 8로 나누어서 2번째 패킷부터 410이 되고 그 다음 패킷은 이전 패킷의 410을 더한 820이 되고 그 다음 패킷은 또 이전 패킷의 410을 더한 1230이 된다.
- 1500byte까지 조각화 한 다음(이 때 페이로드에 ipv4가 붙은 상태이다.) MTU에 걸러지고 이더넷이 붙게 된다.
👉 가장 마지막 패킷에는 페이로드의 헤더로 ICMP(8byte) 요청이 붙고 또 이의 헤더로 ipv4가 붙게 된다.
👉 실제로 패킷 캡쳐를 해보면 보통 1514byte가 제일 많은데 그 이유는 보통 MTU가 1500바이트이며 MTU에 의해 걸러진 후 14byte의 이더넷이 붙어서 1514byte가 되기 때문이다!