网络:TCP分割数据以及MSL、MTU、MSS的关系

TCP 分割数据

如果 HTTP 请求消息比较长,超过了MSS 的长度,这时 TCP 就需要把 HTTP 的数据拆解成一块块的数据发送,而不是一次性发送所有数据。
在这里插入图片描述

  • MTU :一个网络包的最大长度,以太网中一般为 1500 字节。
  • MSS :除去 IPTCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。

数据会被以 MSS 的长度为单位进行拆分,拆分出来的每一块数据都会被放进单独的网络包中。也就是在每个被拆分的数据加上 TCP 头信息,然后交给 IP 模块来发送数据。
在这里插入图片描述

TCP协议中会有两个端口,一个是浏览器监听的端口(通常是随机生成的),一个是web服务器监听的端口(HTTP 默认端口号是 80 , HTTPS 默认端口号是 443

在双方建立了链接之后,TCP报文中的数据部分就是存放HTTP头部+数据,组装好TCP报文之后,就需要交给下面的网络层处理。

至此,网络包的报文如下图。
在这里插入图片描述

TCP 报文生成

MSL、MTU、MSS

(1) MSL(Maximum Segment Lifetime,报文最大生存时间)

  • TCP Segment在网络上的存活时间不会超过MSL(RFC793定义了MSL为2分钟,Linux设置成了30s)

(2)MTU(Maximum Transmission Unit,最大传输单元)

  • 网络中单个网络数据包的最大长度,以太网中一般为 1500 字节。
    • 如果IP层的包大于设置的MTU,大的数据报就会被拆开来传送,这样就会产生很大的数据报碎片,增加丢包率
    • 最好把本机的MTU设置的和网关的MTU最小值相同,就可以减少丢包
  • 数据帧过大或过小都会影响传输的效率
  • 路径MTU由链路中MTU的最小值决定
    在这里插入图片描述

(3) MSS(Maximum Segment Size,最大报文长度)

  • 指的是除去 IPTCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。
  • 如果 HTTP 请求消息比较长,超过了MSS 的长度,这时 TCP 就需要把 HTTP 的数据拆解成一块块的数据发送,而不是一次性发送所有数据。
  • 数据会被以 MSS 的长度为单位进行拆分,拆分出来的每一块数据都会被放进单独的网络包中。也就是在每个被拆分的数据加上 TCP 头信息,然后交给 IP 模块来发送数据。
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值