TCP 四次挥手,第三次挥手报文丢失会发生什么?

TCP 四次挥手,第一次挥手报文丢失会发生什么?
TCP 四次挥手,第二次挥手报文丢失会发生什么?

服务端调用 close() 关闭连接时,会给客户端发送 FIN+ACK 报文,在这之后,如果服务端迟迟收不到客户端的 ACK 报文,就会触发「超时重传」机制,重新发送 FIN+ACK 报文

下图以 Linux TCP 第三次挥手报文丢失为例,其中参数 tcp_orphan_retries 值为 2
在这里插入图片描述

/* Linux Kernel 6.14.7 tcp.h */
#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
				  * state, about 60 seconds	*/
#define TCP_FIN_TIMEOUT	TCP_TIMEWAIT_LEN
                                 /* BSD style FIN_WAIT2 deadlock breaker.
				  * It used to be 3min, new value is 60sec,
				  * to combine FIN-WAIT-2 timeout with
				  * TIME-WAIT timer.
				  */

/proc/sys/net/ipv4/tcp_orphan_retries 默认值为 0 是什么鬼?
实际上当为 0 时,特指 8 次

/* Linux Kernel 2.6.32 tcp_timer.c */
/* Calculate maximal number or retries on an orphaned socket. */
static int tcp_orphan_retries(struct sock *sk, int alive)
{
  int retries = sysctl_tcp_orphan_retries; /* May be zero. */

  /* We know from an ICMP that something is wrong. */
  if (sk->sk_err_soft && !alive)
    retries = 0;

  /* However, if socket sent something recently, select some safe
   * number of retries. 8 corresponds to >100 seconds with minimal
   * RTO of 200msec. */
  if (retries == 0 && alive)
    retries = 8;
  return retries;
}

TCP 四次挥手,第四次挥手报文丢失会发生什么?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值