4.8 SYN什么时候被丢弃

        TCP四次挥手过程中主动断开连接方有一个TIME_WAIT状态,这个状态会持续2MSL之后才会转变为CLOSED状态。一般一个MSL是30秒,所以以一共一般是60秒。这60秒内客户端会一直占用着端口。如果发起断开端的TIME-WAIT状态过多,占满了端口资源,那么就无法再跟「目的 IP+ 目的 PORT」都一样的服务器建立连接了。但是对于不同的服务器任然可以建立连接。

TIME-WAIT状态的目的:

  • 防止断开后的历史连接中的数据被后续相同的四元组连接接收到,否则就会导致后面的连接接收到一个无效的数据;
  • 保证ACK发送到被断开连接端,保证被动关闭方能正确的关闭。

打开开 TCP 时间戳,即 net.ipv4.tcp_timestamps=1(默认即为 1))的情况下可以开启net.ipv4.tcp_tw_reuse、net.ipv4.tcp_tw_recycle这两个参数用来快速回收TIME—WAIT状态的连接。

什么是PAWS机制?

tcp_timestamps 选项开启之后, PAWS 机制会自动开启,它的作用是防止 TCP 包中的序列号发生绕回。

每个TCP包都会有自己唯一的SEQ,出现TCP数据包重传的时候会复用SEQ号,这样接收方能通过SEQ号来判断数据包的唯一性,但是SEQ号是有限的,一共32bit,seq号是递增的,满了就从0开始。seq号溢出后就无法通过seq号标识数据包的唯一性,某个数据包延迟或因重发而延迟时,可能导致连接传递的数据被破坏。

PAWS就是为了解决这个事情的,在开启 tcp_timestamps 选项,tcp包就会带上时间戳了,PAWS要求连接双方维护最近一次收到数据包的时间戳,每收到一个新数据包就跟这个时间戳作比较,如果数据包中时间戳不是递增的,则表示数据包是过期的,就会直接丢弃这个数据包。

SYN什么时候被丢弃

开启 tcp_tw_recycle 参数,并且在 NAT 环境下,造成 SYN 报文被丢弃

TCP两个队列满了,造成SYN报文丢弃

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值