8/16/32/64这个是tcp sync retry的过程中,发送方自动将重传间隔翻倍的操作
rfc6298
When the retransmission timer expires, do the following:
(5.4) Retransmit the earliest segment that has not been acknowledged
by the TCP receiver.
(5.5) The host MUST set RTO <- RTO * 2 ("back off the timer"). The
maximum value discussed in (2.5) above may be used to provide
an upper bound to this doubling operation.
我觉得你最应该搞明白的不是这个翻倍的问题,而是下面几个问题:
1. 为什么第一个甚至第二个SYN会丢失,造成后面的SYN retry(retry的特征就是时间翻倍)?
是网络存在丢包吗?是否有在两侧抓tcpdump排查一下?必要的话,在中间加一个抓包点,通过tcpdump看看,SYN在哪里开始丢的?
如果是中间丢包,那出理中间的问题,如果是接收方将包丢弃,那看看是否有不合适的防火墙规则
2. 怎么会有这么多次的syn retry?合计130秒的话,这得6次重传了吧,发送方的/proc/sys/net/ipv4/tcp_syn_retries是不是设置太大了,当然,这不会造成SYN丢失,只是设置可能不合适
【 在 allegro 的大作中提到: 】
: 一个很简单的echo server/client可以复现。
: 被这个问题折腾了好久,请教各位socket programming巨佬。
: server端运行在x86上,TCP,打开一个端口,等待连接。
: ...................
--
FROM 113.120.108.*