tcp紧急指针,mss,rto,msl,零窗口探测等

三次握手、四次挥手、重传机制、滑动窗口、流量控制、拥塞控制、TCP/UDP全解析-蒲公英云 (dandelioncloud.cn)

(546条消息) 【学习笔记】【计算机网络】【传输层】UDP、TCP差异详解;TCP的可靠传输、流量控制、拥塞控制、三次握手、四次挥手;timewait中2MSL的必要性;_怎么这么帅啊的博客-CSDN博客

(511条消息) 【学习笔记】【计算机网络】【传输层】UDP、TCP差异详解;TCP的可靠传输、流量控制、拥塞控制、三次握手、四次挥手;timewait中2MSL的必要性;_怎么这么帅啊的博客-CSDN博客

性能测试-linux 系统 tcp 内核参数 - 周屿森 - 博客园 (cnblogs.com)

linux - 如何在不发送数据包的情况下确定初始TCP窗口大小? - IT工具网 (coder.work)

默认值应为65536字节。也许这就是您要寻找的:

/ proc / sys / net / core / rmem_max-最大TCP接收窗口。

/ proc / sys / net / core / wmem_max –最大TCP发送窗口。

关于linux - 如何在不

sysctl -a :查看所有可读变量

(511条消息) msl、ttl及rtt的区别 TCP控制字段标志_雷电羊的博客-CSDN博客_tcp msl 内核

1、 MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文 (segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文;

2、ip头中有一个TTL域,TTL是 time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经 过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等

TTL与MSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL。

(511条消息) TCP零窗口探测_redwingz的博客-CSDN博客_tcp0窗口

TCP系列32—窗口管理&流控—6、TCP zero windows和persist timer - 走看看 (zoukankan.com)

TCP协议三次握手的优化-droplist-ChinaUnix博客

google有一帮人对TCP的建立连接时的三次握手传进行了统计,大概有2%的重传率。

并且为了这2%的重传率,对tcp协议进行了优化:将RTO时间从3秒改为了1秒。

我觉得中国的网络不比美国的好,所以,在实际中重传率应该比2%高很多。

优化之后有什么好处呢:

1) 对于3次握手有重传的情况,缩短超时时间,能够更快的完成3次连接。

2) 在一个拥塞的网络,减少了拥塞窗口值,降低拥塞的恶化。

(509条消息) TCP-带外数据(紧急数据)_不穿铠甲的穿山甲的博客-CSDN博客_带外数据

TCP三次握手及原理 - 知乎 (zhihu.com)

理解 TCP(二):报文结构 - 简书 (jianshu.com)

为什么TCP要设MSS? - 知乎 (zhihu.com)

TCP系列01—概述及协议头格式 - lshs - 博客园 (cnblogs.com)

MTU:一个网络包的最大长度,以太网中一般为 1500 字节;

MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度;

窗口关闭

在前面我们都看到了,TCP 通过让接收方指明希望从发送方接收的数据大小(窗口大小)来进行流量控制。

如果窗口大小为 0 时,就会阻止发送方给接收方传递数据,直到窗口变为非 0 为止,这就是窗口关闭。

窗口关闭潜在的危险

接收方向发送方通告窗口大小时,是通过 ACK 报文来通告的。

那么,当发生窗口关闭时,接收方处理完数据后,会向发送方通告一个窗口非 0 的 ACK 报文,如果这个通告窗口的 ACK 报文在网络中丢失了,那麻烦就大了。

怎么让接收方不通告小窗口呢?

接收方通常的策略如下:

当「窗口大小」小于 min( MSS,缓存空间/2 ) ,也就是小于 MSS 与 1/2 缓存大小中的最小值时,就会向发送方通告窗口为 0,也就阻止了发送方再发数据过来。

等到接收方处理了一些数据后,窗口大小 >= MSS,或者接收方缓存空间有一半可以使用,就可以把窗口打开让发送方发送数据过来。

怎么让发送方避免发送小数据呢?

发送方通常的策略:

使用 Nagle 算法,该算法的思路是延时处理,它满足以下两个条件中的一条才可以发送数据:

  • 要等到窗口大小 >= MSS 或是 数据大小 >= MSS

  • 收到之前发送数据的 ack 回包

只要没满足上面条件中的一条,发送方一直在囤积数据,直到满足上面的发送条件。

另外,Nagle 算法默认是打开的,如果对于一些需要小数据包交互的场景的程序,比如,telnet 或 ssh 这样的交互性比较强的程序,则需要关闭 Nagle 算法。

TCP 拥塞控制

什么是拥塞窗口?和发送窗口有什么关系呢?

拥塞窗口 cwnd是发送方维护的一个 的状态变量,它会根据网络的拥塞程度动态变化的

我们在前面提到过发送窗口 swnd 和接收窗口 rwnd 是约等于的关系,那么由于入了拥塞窗口的概念后,此时发送窗口的值是swnd = min(cwnd, rwnd),也就是拥塞窗口和接收窗口中的最小值。

拥塞窗口 cwnd 变化的规则:

  • 只要网络中没有出现拥塞,cwnd 就会增大;

  • 但网络中出现了拥塞,cwnd 就减少;

那么怎么知道当前网络是否出现了拥塞呢?

其实只要「发送方」没有在规定时间内接收到 ACK 应答报文,也就是发生了超时重传,就会认为网络出现了用拥塞。

拥塞控制有哪些控制算法?

拥塞控制主要是四个算法:

  • 慢启动

  • 拥塞避免

  • 拥塞发生

  • 快速恢复

慢启动

TCP 在刚建立连接完成后,首先是有个慢启动的过程,这个慢启动的意思就是一点一点的提高发送数据包的数量,如果一上来就发大量的数据,这不是给网络添堵吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值