📦 Khi nào gói tin bị phân mảnh (Fragmentation)?
Khi payload (dữ liệu) trong gói IP lớn hơn MTU (Maximum Transmission Unit) của liên kết mạng, thì buộc phải phân mảnh (fragment) để đi qua. Nếu không, gói tin sẽ bị drop thẳng tay.
Ví dụ: MTU thông thường của Ethernet là 1500 bytes, nếu gói IP lớn hơn con số này, thì tùy theo IPv4 hay IPv6 mà hành xử sẽ khác nhau.
🔁 Fragmentation trong IPv4
- Trong IPv4, router trên đường đi có thể phân mảnh gói tin, trừ khi gói tin có DF (Don't Fragment) bit được bật. Nếu DF được bật, gói tin không được phép phân mảnh – và nếu không qua được, sẽ bị drop + gửi lại ICMP thông báo.
🚫 Fragmentation trong IPv6
IPv6 thì không cho router phân mảnh gói tin. Việc phân mảnh chỉ được phép thực hiện tại máy gửi (source host). Việc này dùng một loại header đặc biệt gọi là Fragment Extension Header.
Do đó, nếu bạn là hệ điều hành hoặc ứng dụng, bạn phải biết trước nút cổ chai MTU trên đường đi để tránh bị drop.
📏 IPv6 có 2 lựa chọn để tránh fragmentation:
- Path MTU Discovery (PMTUD)
Gửi các gói thử nghiệm để tìm ra MTU thấp nhất trên đường đi, sau đó tự điều chỉnh kích thước gói. - Dùng giá trị MTU tối thiểu theo chuẩn IPv6: 1280 bytes
Luôn gửi gói ≤1280 bytes để đảm bảo không bao giờ phải phân mảnh.
📚 Tổng kết
Routers có thể fragment | Chỉ máy gửi mới được fragment |
Có thể bị drop nếu DF=1 | Bị drop nếu gói lớn hơn MTU |
Không có giới hạn MTU tối thiểu rõ ràng | MTU tối thiểu = 1280 bytes |
👉 Fragmentation là chủ đề không chỉ quan trọng về mặt hiệu năng, mà còn ảnh hưởng đến bảo mật, IDS/IPS, và firewall rules (vì nhiều tấn công lợi dụng fragment để bypass kiểm tra).
Bạn có đang kiểm soát fragment đúng cách trong hệ thống của mình?