timer:(<timer_name>,<expire_time>,<retrans>)
<expire_time>
和是什么<retrans>
意思?
我发现<expire_time>
倒数为零,然后再次从某个数字重新开始计数。它的起始值因 TCP 套接字而异。
<retrans>
对于所有 TCP 套接字来说似乎始终为零。
答案1
expire_time
是计时器到期之前剩余的时间。 Linux内核中的TCP堆栈支持许多定时器,并且它们都有一个到期时间。
retrans
是已经发生的重传次数。 TCP 实现 重传他们认为已丢失的数据包;他们对这些重传进行计数,以便知道何时放弃。你不应该经常看到这种情况;强制它的一种方法是尝试在不会立即拒绝的端口上打开连接,例如(基于您之前的问题之一中的示例):
curl http://www.google.com:9000
如果你运行它,你会看到curl
在那里停留一段时间,并且ss -o
会显示一个SYN-SENT
重传计数不断增加的条目。您还会看到在这种情况下应用了退避:每次重新传输数据包时,初始过期时间都会增加。