赞
踩
TCP MSS(最大报文长度)
建立TCP连接的两端在三次握手时会协商TCP MSS大小
Eg: pc1(192.168.1.1)-------router-------internet--------server(200.0.0.1)
上图中:1 PC1发出SYN报文,其中option MSS字段一般为1460(MTU1500-IP头20-传输头20)
2 SERVER收到后回答SYN ACK应答 option字段也为1460
3 协商两端比较SYN 与SYN ACK中MSS大小
4 选择最小作为MSS分片大小,最终为1460.
对于MPLS,L3VPN,PPPOE+NAT,IPSEC,L2TP,GRE组网等,通常由于报文太大需要分片,使用TCP MSS解决
关于TCP MSS设置位置的问题:
拓扑如上:(注意仅为三次握手过程)
假设在路由器内网配置TCP MSS 1200
路由器收到server的SYN ACK后将TCP MSS改为1200,然后再转发给PC1,PC1收到报文后认为对端的tcp mss为1200,这样PC1发送数据给www server时会以1200作为分片大小;但路由器修改tcp mss为1200的操作www server是不知道的,因此www server还会以1460作为分片大小发送报文。
于是PC就以1200发送报文,但server仍会以1460发送数据。
假设在路由器外网配置 TCP MSS 1200
路由器收到PC1的syn报文时会修改option选项中的mss字段为1200,然后再转发给www server,同样www server发送数据给PC1时会以1200作为分片大小;同样PC1不知道路由器修改tcp mss为1200,因为PC1还会以1460作为分片大小发送报文。
故在路由器的出接口上配置TCP MSS即可实现广域网传输时数据不分片。
在路由器的出入接口均设置可实现整个传输不分片
应保证协商之后的TCP MSS小于MTU,都则会出现分片。
命令:接口下 IP TCP ADJUST-MSS
注意:
MTU为二层包大小,一般为1500
MSS为四层=MTU-IP大小20-四层包头20(如果有其他pppoe、加密报文头的话也同样减去)=1460最大,MSS值其实就是TCP所承载的净载荷的长度
IP报文里是有五元组的,但报文要进行分片时,只有第一片报文带有IP的五元组信息(源目的ip位址,源目的端口号,协议号),后续的分片不会保留TCP/UDP报文所有的标识信息,如端口号信息等,这种情况下,如果设备又实现了NAT转换操作(NAT转换过程中,会随机地做埠转换),并且应用又是基于TCP/UDP的,这就导致报文不能正确组包,出现能PING通,但访问WWW,FTP等应用时网速
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。