TCP/IP 中“分片(Fragmentation)”的根本原因是:网络层传输的数据包大小受限于底层链路的 MTU(最大传输单元),但上层(如 TCP)可能一次性提交比 MTU 更大的数据。为了保证不同网络之间仍能正确传输 IP 数据包,IP 协议必须具备分片能力。
下面从几个方面说明“为什么需要分片”。
不同网络技术的 MTU 不同,例如:
IP 数据包要在这些网络之间路由,如果某个中间链路的 MTU 小于 IP 包大小,就不能直接发送。
IP 是网络层协议,设计原则是:
因此 IP 不能假设所有链路 MTU 相同,也不能要求发送方一定知道路径上的最小 MTU。
于是 IP 允许在中间路由器对数据包进行分片,让大数据包也能穿过小 MTU 网络。
理想情况是发送方通过 PMTUD(路径 MTU 发现) 发送合适大小的数据包,避免分片。
但在早期 TCP/IP 设计中:
所以 IP 协议本身必须支持分片,作为“兜底机制”。
分片由 IP 层完成:
Identification、Fragment Offset、MF(More Fragments) 重组对 TCP / UDP 来说,分片是“看不见的”。
Fragment Offset、MF、DF 标志这说明:分片是一种“必要但应尽量避免”的机制。
虽然 IP 支持分片,但分片有缺点:
所以现代网络更推荐:
TCP/IP 分片是因为 IP 包可能大于链路 MTU,而 IP 必须保证跨不同网络传输,因此在必要时将大数据包拆分成多个小片段发送,接收端再重组。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。