温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TCP/IP为何分片

发布时间:2026-09-15 10:13:27 来源:亿速云 阅读:93 作者:小樊 栏目:软件技术

TCP/IP 中“分片(Fragmentation)”的根本原因是:网络层传输的数据包大小受限于底层链路的 MTU(最大传输单元),但上层(如 TCP)可能一次性提交比 MTU 更大的数据。为了保证不同网络之间仍能正确传输 IP 数据包,IP 协议必须具备分片能力。

下面从几个方面说明“为什么需要分片”。


1. 链路层 MTU 不一致

不同网络技术的 MTU 不同,例如:

  • 以太网:通常 1500 字节
  • PPPoE:通常 1492 字节
  • 某些 WAN / 隧道:可能更小(如 576、1400 等)
  • 早期 SLIP / 拨号网络:可能只有 576 字节

IP 数据包要在这些网络之间路由,如果某个中间链路的 MTU 小于 IP 包大小,就不能直接发送。


2. IP 设计目标是“无连接、尽力交付”

IP 是网络层协议,设计原则是:

  • 不保证可靠
  • 不保证顺序
  • 能跨异构网络传输

因此 IP 不能假设所有链路 MTU 相同,也不能要求发送方一定知道路径上的最小 MTU。
于是 IP 允许在中间路由器对数据包进行分片,让大数据包也能穿过小 MTU 网络。


3. 发送方不一定知道路径 MTU(历史原因)

理想情况是发送方通过 PMTUD(路径 MTU 发现) 发送合适大小的数据包,避免分片。

但在早期 TCP/IP 设计中:

  • 路由路径可能动态变化
  • ICMP 可能被防火墙丢弃
  • 中间路由器必须能处理超大包

所以 IP 协议本身必须支持分片,作为“兜底机制”。


4. 分片发生在 IP 层,对上层透明

分片由 IP 层完成:

  • 源主机或中间路由器将 IP 包拆成多个 fragment
  • 每个 fragment 有独立 IP 头
  • 接收端 IP 层根据 IdentificationFragment OffsetMF(More Fragments) 重组

对 TCP / UDP 来说,分片是“看不见的”。


5. IPv4 与 IPv6 的区别

IPv4

  • 路由器和发送方都可以分片
  • Fragment OffsetMFDF 标志

IPv6

  • 中间路由器不允许分片
  • 只有发送主机可以分片(且通常使用 PMTUD)
  • 若包太大且 DF 被置位,路由器直接丢弃并返回 ICMPv6 Packet Too Big

这说明:分片是一种“必要但应尽量避免”的机制。


6. 为什么现在不鼓励分片

虽然 IP 支持分片,但分片有缺点:

  • 任一片丢失 → 整个包重传
  • 增加路由器负担
  • 容易被攻击(分片攻击)
  • 降低吞吐量和可靠性

所以现代网络更推荐:

  • TCP MSS 协商
  • PMTUD
  • 合理设置 DF(Don’t Fragment)

一句话总结

TCP/IP 分片是因为 IP 包可能大于链路 MTU,而 IP 必须保证跨不同网络传输,因此在必要时将大数据包拆分成多个小片段发送,接收端再重组。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI