TCP应用之TCP-MSS(Kind: Maximu segment size)可选字段的实际应用之触发TCP分片代替IP分片

TCP-MSS选项用于协商TCP连接的最大报文段长度,以防止IP分片。本文介绍了TCP-MSS的作用,以及如何在TCP层面控制报文大小,以减少IP分片带来的问题,提高通信效率和数据传输的可靠性。

前面讲解过了TCP报文头的各个字段的含义,有兴趣的童鞋可以查看之前的博客文档:

 

https://blog.youkuaiyun.com/u010672206/article/details/82812256

今天说一下TCP可选字段中TCP-MSS(Kind: Maximu segment size)字段的作用以及小编实际应用的场景:

当OPT的kind标记为2代表此OPT字段是设置TCP最大报文段长度选项。一般在TCP连接初始化时(链接的双方发SYN握手报文时),通信双方使用该选项来协商最大报文段长度(Max Segment Size,MSS)。

如上图所示,此opt选项字段总共占四个字节,第一个字节是此OPT字段的含义,第二个字节代表此OPT字段总共所占的长度(就此字段来说为4)最后两个字节代表此OPT选项含义的值:即TCP-MSS的值。

TCP模块通常将MSS设置为MTU(当前IP网络最大传输单元)-40字节,减掉的这40字节包括20字节的TCP固定头部长度和20字节的IP固定头部长度。这样传输的TCP报文段的IP数据报的长度就不会超过MTU(假设TCP头部和IP头部都不包含选项字段,并且这也是一般情况),从而避免超过IP报文的MTU造成IP分片发生。对以太网而言,MSS值是1460(1500-40)字节。

同样的,当发送的TCP报文大于TCP链接建立时通信双发协商好的MSS值时,会触发TCP协议层面的分片。

IP分片场景:

当待发送的IP数据包的长度大于当前网络中设置IP的MTU(IP报文最大传输单元)时,会有如下两个处理结果:

1:当IP头部的标志位(Flags)的DF字段为1(不允许IP分片)时,此报文会因长度过长而且不允许分片导致处理失败丢包。还有就是,网络拓扑环境是复杂的,报文到达通信的对端过程中,中间链路的情况不得而知,可能有更多的路由交换设备,如果报文在源头发出时,符合要求发了出去,也可能因为中间路由交换设备的MTU小于IP数据包的长度,又因为不能分片,而导致丢包的产生。

2:当IP头部的标志位(Flags)的DF字段为0(允许IP分片)时,此报文会因长度过长而且允许分片而进行IP分片的报文发送处理,允许IP分片是一种报文长度过大的解决方案,但是IP分片也有自身的问题,一般不建议使用IP分片。

为什么要减少IP分片,以下博文做了简单简介,大家可以参考以下:

https://blog.youkuaiyun.com/matt_mao/article/details/12710873

由于种种原因吧,为了更好进行通信,减少不必要的报文丢失,以及IP重组问题,一般建议使用TCP分片而不建议使用IP分片。

怎么减少IP分片,换用TCP分片?

在网络模型上看传输层协议TCP是在网络层协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值