当一个套接字切换到TIME_WAIT状态时,为什么我看不到它的inode编号?

当一个套接字切换到TIME_WAIT状态时,为什么我看不到它的inode编号?

我正在用 python 开发一个解析信息的程序/proc/net/tcp,但不幸的是,在开发过程中,我看到了一件奇怪的事情。

实际上,当套接字TIME_WAIT状态发生变化时,会丢失其 inode 编号,而且我不知道谁是该套接字的所有者。

我阅读了一些关于这个问题的文档TIME_WAIT,我了解到连接实际上已经完成,它仍然在等待以保证数据传输。

有人知道这件事吗?

答案1

当插座处于时间的等待,不再有任何进程与其关联,内核只是将其保留以防其他数据包到达。此时,最初打开此套接字的软件不再具有打开文件描述。这就是您无法找到与它的任何关系的原因。/proc/$PID/fd 中存在的套接字不再存在。

答案2

处于状态的套接字TIME_WAIT不再由进程拥有,而由内核拥有。因此,没有主人,所以你看不到它:)

相关内容