数据链路层概念,
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。
由上图以太网封装格式图可知:最小为46个字节;最大为1500个字节,至于为什么最小为46个,查询课本?
# netstat -i
KernelInterface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OKTX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 7983273 0 0 0 6250314 0 0 0 BMRU
lo 16436 0 6887171 0 0 0 6887171 0 0 0 LRU
一条因特网传输路径的“路径最大传输单元”被定义为从源地址到目的地址所经过“路径”上的所有IP跳的最大传输单元的最小值。或者从另外一个角度来看,就是无需进一步分片就能穿过这条“路径”的传输单元的最大值。
备注:
链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片 的长度都小于或等于MTU。
IP层概念
总长度字段(16位)是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道 Ip数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节
总长度字段是IP首部中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46字节,但是IP数据可能会 更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。
备注:
Ip一个数据包总长度可达65535字节,在正常以太网MTU为1500(当然可以更改),这样需要分片 。
TCP层概念:
MSS(Maxitum Segment Size)最大传输大小的缩写,是TCP协议里面的一个概念。MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建 立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的 包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值
备注:
MSS 属于TCP概念范畴, 路径MTU(区别MTU)属于链路层范畴。
MSS = 路径MTU – IP 头部大小-TCP头部大小
滑动窗口win 和socket缓冲区区别联系 :
区别 :
socket缓冲区是静态概念, 需要提前静态设置 ,既然静态设置,当然我们就可以查询 , 自然就知道通过proc文件系统查询呢?。TCP性能中吞吐量 与 socket缓冲区有很大关系 ,至于多大关系, 自我查询相关资料。
滑动窗口 是动态概念,接受过程中,动态改变 。
#cat /proc/sys/net/core/rmem_default
124928
联系:
滑动窗口初始大小为 socket接收缓冲区大小。自然想到了,如果发送窗口变为零,会发生什么事情, 应用程序阻塞呗,也就是write()慢速系统调用造成的。
#tcpdump-i eth0
10:49:45.044646IP 192.168.31.166.56141 > localhost.http: Flags [S], seq 2333684465, win8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0