为什么有了MTU,还需要MSS?

为什么有了MTU,还需要MSS?

MTU

Maximum Transmit Unit,最大传输单元。由数据链路层提供给网络最大的一次传输数据的大小,一般MTU=1500Byte.
"车同轨",保证底层数据包能在物理网络中顺利传输!!!

例如:IP层有<=1500Bytes数据需要发送,发送一个IP包就可以完成了;IP层有>1500Bytes数据需要发送,则需要分片才能完成发送,发送后的IP Header ID相同

MSS

Maximum Segment Size,TCP提交给IP层最大分段大小,只包含TCP payload,MSS是TCP用来限制应用层最大的发送字节数。
优化上层传输效率,避免不必要的IP分片

例如:MTU=1500Bytes,那么MSS=1500-20(IP Header)-20(TCP Header)=1460Byte。如果应用层有2000Bytes数据要发送,那么需要切片才能完成,第一个TCP切片=1460,第二个TCP切片=540

TCP宁愿自己进行数据分片

TCP三次握手期间就会协商MSS值:是根据路径MTU的值计算而出的MSS。

TCP会在数据传输前将这些数据分割成多个不超过MSS大小的段(segment)。这样做的好处是,每个TCP段都是独立可确认的,如果某个段在网络中丢失,TCP可以通过其自身的重传机制只重新发送丢失的那段数据,而不是整个原始的大数据包。

相比之下,如果数据在TCP层未经适当分段就直接交给IP层,而这个大数据包又超过了路径中的MTU,那么IP层将不得不进行分片。IP分片的问题在于,所有分片都必须全部到达目的地才能重组原始数据包,如果其中任何一个分片丢失,则整个数据包都需要重传(发送方重传!如果是因为单个IP分片丢失导致TCP数据段不完整,TCP无法知道这一点,它只会注意到预期的ACK没有返回,从而触发重传),即使其他分片已经成功到达。这不仅增加了网络复杂性,还可能导致不必要的带宽浪费和延迟。

需要注意的是:在网络传输中可能会因为MTU或者MSS的值,导致包被丢弃或者分片,速度变慢!

总结

所以,两者作用的逻辑层次不一样。

好比现在有巨多的货物要从北京运到上海,你无法用一辆车完成运输。如果你说"可以创造一辆巨大的可以承载所有货物的车",但是道路的宽度和硬度不支持(MTU),所以你只能用许多辆车去承载。

然后车的大小在一个范围内基本确定,能装载的货物的大小也就限制在一定范围内,可是并不是每一个货物都是刚刚好。与其等到上货物的那一刻去裁剪货物的尺寸,何不在工厂内生产的时候就规范好货物的尺寸(MSS)呢?

所以MTU是规定了网络物理线路承载的范围,而MSS是TCP针对应用层数据进行的分片,防止IP层分段导致的数据传输效率下降!

相关推荐
搬码临时工8 分钟前
动态域名服务ddns怎么设置?如何使用路由器动态域名解析让外网访问内网?
服务器·网络·tcp/ip·智能路由器·访问公司内网
wudinaniya17 分钟前
笔记本电脑打开网页很慢,一查ip地址网段不对怎么处理
网络·网络协议·tcp/ip·电脑
天翼云开发者社区1 小时前
办公网络流量隔离:为高效办公保驾护航
网络·安全
和计算机搏斗的每一天1 小时前
ip命令详解
服务器·网络·tcp/ip
XY.散人1 小时前
初识Linux · IP分片
网络·网络协议·tcp/ip
绵山介子推1 小时前
IP地址、端口、TCP介绍、socket介绍、程序中socket管理
网络协议·tcp/ip·php·嵌入式软件
zhong_kh2 小时前
联邦+反射器 基础实验
网络
xjdksxkmd2 小时前
5.11作业
运维·服务器·网络
神经毒素2 小时前
WEB安全--Java安全--LazyMap_CC1利用链
java·开发语言·网络·安全·web安全
杰克逊的日记2 小时前
阿里云的网络有哪些
网络·阿里云·云计算