TCP MSS详解

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等应用时网速

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值