Linux TCP 连接在客户端上建立,在服务器上不可见



在我的一台 Linux 主机上,一个 TCP 套接字似乎在一侧可见,而在另一侧不可见。我的意思是,当我在其中一台主机上时,netstat 会显示此套接字,而不是在另一台主机上(Linux 也是):

# netstat -anp|grep 37674
udp        0      0 169.254.192.2:37674         169.254.192.1:8649          ESTABLISHED 22644/xxxxx
# ssh 169.254.192.1
Last login: Mon Jan 13 15:22:54 CET 2014 from xxxxxx on ssh
# netstat -anp|grep 8649
# 

如果我正确无误,netstat 会从/proc/net/tcp 读取连接。显然,本地 IP 地址和端口在第二列的/proc/net/tcp 中显示为 0123ABCD:1234。

37674(10) = 932A(16)

因此,我试图在/proc/net/tcp 中找到 932A,忽略了大小写,但一无所获。

IP 地址不会被截断,因为我的网络上没有其他 169.254.192.1xx 主机。

这个连接在三个小时后仍然可见,因此我认为它与超时无关。

netstat 的输出显示 UDP。(查看/proc/net/udp)

这意味着 169.254.192.2 已将 connect() 调用到 169.254.192.1:8649。但是,UDP 是无连接的,因此此信息仅本地记录在 169.254.192.2 计算机上的套接字上。

在 UDP 套接字上调用 connect()

只是允许您在该套接字上调用 send(),而无需使用 sendto()/sendmsg() 为每个数据包指定目标地址 - 两台机器之间没有创建实际连接。

如果 169.254.192.1 计算机

未在端口 8649 上侦听/接收数据包,则 169.254.192.1 计算机设置可以向那里发送数据包的套接字没有意义。

相关内容

  • 没有找到相关文章

最新更新