MTU TCP-MSS(转载)

MTU

MTU 最大传输单元(Maximum Transmission Unit,MTU) 用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。

是包或帧的最大长度,一般以字节记。如果MTU过大,在碰到路由器时会被拒绝转发,因为它不能处理过大的包。如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。大部分操作系统会提供给用户一个默认值,该值一般对用户是比较合适的。

IP协议除了具有路由寻址功能外,另一个重要的功能就是IP数据报的分片处理。每个数据链路层能够确定发送的一个帧的最大长度称为最大传输单元。在Ethernet中,MTU为1500字节;在FDDI中,MTU为4352字节;在 IP over AMT中,MTU为9180字节。

TCP MSS

MSS(Maximum Segment Size,最大报文长度),是TCP协议定义的一个选项,MSS选项用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度。

TCP在三次握手建立连接过程中,会在SYN报文中使用MSS(Maximum Segment Size)选项功能,协商交互双方能够接收的最大段长MSS值。

MSS是传输层TCP协议范畴内的概念,顾名思义,其标识TCP能够承载的最大的应用数据段长度,因此,MSS=MTU-20字节TCP报头-20字节IP报头,那么在以太网环境下,MSS值一般就是1500-20-20=1460字节。

客户端与服务器端分别根据自己发包接口的MTU值计算出相应MSS值,并通过SYN报文告知对方,我们还是通过一个实际环境中捕获的数据报文来看一下MSS协商的过程:

通过在TCP连接之初,协商MSS值巧妙的解决了避免端系统分片的问题,但是在复杂的实际网络环境下,影响到IP报文分片的并不仅仅是发送方和接收方,还有路由器、防火墙等中间系统。

参考:

MTU TCP-MSS详解 - 知乎

相关推荐
机器视觉知识推荐、就业指导3 小时前
手动开发一个TCP客户端调试工具(一):了解Qt中TCP通信原理与核心类
网络·qt·tcp/ip
Wmenghu5 小时前
java获取电脑公网IP和内网IP
服务器·网络·tcp/ip
optimistic_chen8 小时前
【Java EE初阶 --- 网络原理】网络层---IP协议,数据链路层---以太网协议
网络·笔记·网络协议·tcp/ip·java-ee·文件io
charlie11451419111 小时前
计算机网络八股文——TCP,UDP
网络·网络协议·tcp/ip·计算机网络·面试·udp·八股文
Mu.38712 小时前
网络编程(一)TCP编程和UDP编程
网络·tcp/ip·udp
十年编程老舅15 小时前
C++ Qt网络编程实战:跨平台TCP调试工具开发
qt·tcp/ip·网络编程·tcp协议·qt项目·qt开发·qt教程
敲上瘾16 小时前
从“碎片化”到“完美重组”:IP报文的分片艺术
网络·网络协议·tcp/ip·ip
专注VB编程开发20年1 天前
winsock socket通讯为什么UDP服务器无法获取客户端IP?
服务器·tcp/ip·udp
Fantastic_sj1 天前
TCP/UDP讲解及主要区别
网络协议·tcp/ip·udp
IpdataCloud1 天前
【ip】IP地址能否直接填写255?
网络·tcp/ip·智能路由器