计算机网络笔记-TCP建立连接的MSS值如何确定

查了一圈发现讲的都很庞大(不适合当作答案抄),就事论事来说,基于IEEE802.3协议下实际是这样的情况:

IEEE802.3协议规定的以太网最大帧长为1526字节,其格式如下

https://blog.csdn.net/farmwang/article/details/64131318

1、前导码:7字节0x55,一串1、0间隔,用于信号同步
2、帧起始定界符:1字节0xD5(10101011),表示一帧开始
3、DA(目的MAC):6字节
4、SA(源MAC):6字节
5、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)
6、数据:46~1500字节
7、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。

所以我们建立TCP连接时,就要用到6中的数据段,最长1500字节,也就是所谓MTU=1500

下面看这张图,我们现在知道以太网包裹中的内容是最大1500字节了(下图中HTTP数据可以暂时不管,只是说里面数据又更具应用层的不同而格式不同而已
现在再来分析IP和TCP协议栈的大小
(图源https://www.cnblogs.com/onepixel/p/7092302在这里插入图片描述

如下图,IP报文头和TCP报文头都是最少20字节,包裹的栈结构就是TCP报文包含在IP的数据段中

两张图源:https://www.cnblogs.com/hixiaowei/p/10530522.html
当然教材书上也有差不多的图
在这里插入图片描述

在这里插入图片描述这里共有40字节的消耗,于是真正留给有效数据的只有1460字节了,也就是MSS最大长度为MTU-IP头-TCP头=1460字节。

最后注意两点

  1. TCP\IP在建立连接的过程中,TCP报文头还会包含Option字段,它的最大长度是40字节。但是这个Option字段是不会影响MSS的确定的,因为MSS是有效数据段的最大大小,而在建立连接的握手时,不传递有效数据,而传递有效数据的TCP报文又不会包含Option字段。
    或者一句话理解,Option字段就是用来确定建立连接后的TCP有效数据段最大大小(MSS大小),建立连接后就不需要它了
  2. MSS的值是握手的过程中确定的,有很多转发数据的节点,比如发起方、路由器、服务方,他们各自支持的最大MSS可能都不同,取最小的(https://blog.csdn.net/xiaofei0859/article/details/51052848 这篇文章最后的图可以有助于理解)
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值