林沛满-TCP 是如何避免被发送方分片的?

TCP 可以避免被发送方分片,是因为它主动把数据分成小段再交给网络层。最大的分段大小称为 MSS(Maximum Segment Size),它相当于把 MTU 刨去 IP头和 TCP 头之后的大小,所以一个 MSS 恰好能装进一个 MTU 中。

图4

图 4 演示了 MSS 和 MTU 的关系。有的时候 TCP 头不只 20 字节,所以会侵占一些 MSS 的空间,比如图 5 的例子中就占用 12 字节作为 TCP Options,那传输层真正用来承载数据的就剩下 1500-20-20-12=1448 字节了。这些字节数都能在Wireshark 中看到。这就是为什么我向网络教师们大力推荐 Wireshark,演示时真是一目了然。

图5

UDP 则没有 MSS 的概念,一股脑交给网络层,所以可能被分片。分片和重组都会影响性能,所以 UDP 在这一点上比 TCP 落后一些

相关推荐
wangl_921 分钟前
Modbus RTU 与 Modbus TCP 深入指南-结束语
网络·网络协议·tcp/ip·tcp·modbus·rtu
small_white_robot3 分钟前
idek-2022 web 全wp——持续更新
开发语言·前端·javascript·网络·安全·web安全·网络安全
皮卡祺q27 分钟前
【Java网络编程核心-0】从OSI七层到TCP/IP模型深度解析(HTTP协议、TCP、UDP 、 IP协议)
网络·网络协议·tcp/ip·http·https·udp
老毛肚33 分钟前
循环网络神经模型基础快速入门
网络
DavidTaozhe34 分钟前
美股api接口的WebSocket订阅如何实现自动重连
网络·websocket·网络协议
草莓熊Lotso36 分钟前
【Linux网络】从 0 到 1 实现高性能 UDP 聊天室:深入拆解 Linux 网络编程与线程池架构
linux·运维·服务器·网络·数据库·c++·udp
艾莉丝努力练剑1 小时前
【Linux网络】Linux 网络编程:应用层自定义协议与序列化(2)序列化与反序列化
linux·运维·服务器·c++·网络协议·序列化
天问一1 小时前
bat文件切换电脑ip
服务器·网络·tcp/ip
yyuuuzz1 小时前
企业出海aws运维常见问题梳理
运维·服务器·网络·数据库·aws
悟渔1 小时前
STM32N6系列MIDI 串口 GPDMA 环形接收解析模块
网络