我运行了该命令sudo lsof -i -n -P | grep TCP
,我想知道是否可以对其输出进行更多说明。
具体来说,在这张图片中:
为什么我有一个 IP:PORT 指向另一个 IP:PORT,然后又用标签“ESTABLISHED”返回自身?我对这到底意味着什么感到困惑。
我运行了该命令sudo lsof -i -n -P | grep TCP
,我想知道是否可以对其输出进行更多说明。
具体来说,在这张图片中:
为什么我有一个 IP:PORT 指向另一个 IP:PORT,然后又用标签“ESTABLISHED”返回自身?我对这到底意味着什么感到困惑。
我不确定您对网络和 TCP 的总体了解程度,因此我将尝试提供一个包含一些细节的简短描述。从您的问题来看,您似乎对网络内部不太熟悉,因此可能很难理解其中一些概念,但我希望这会有所帮助:
TCP 协议有多种状态。把它想象成一个状态机。客户端的状态包括CLOSED
、SYN_SENT
、ESTABLISHED
、FIN_WAIT_1
和。FIN_WAIT_2
TIME_WAIT
因此,该ESTABLISHED
标签表示 TCP 连接处于该ESTABLISHED
状态。处于已建立状态意味着两台主机都成功完成了 TCP 3 次握手(并在此过程中从 转换SYN_SENT
为ESTABLISHED
)。当客户端向服务器发送 TCP 请求时,会发生从CLOSED
到的转换。SYN_SENT
SYN
在已建立的连接中,双方发送和接收特定于应用程序的数据。基本上,会话已建立,并且双向字节流在两个终端系统之间流动。
TCP 套接字由 4-tuple 唯一标识(source-ip, source-port, destination-ip, destination-port)
。IP 标识终端系统的网络接口,端口号用于复用和解复用到达该网络接口的数据包(以便目标系统知道将数据包传递到哪个服务)。这就是IP:PORT
字段的含义。
我不确定为什么同一连接有两个条目。这可能与系统有关,尽管这很奇怪(在我的系统中,每个套接字只有一个条目)。但是套接字是双向的,因此您的系统可能会将每个数据包流向显示为一个不同的条目。这也可能取决于系统如何实现套接字。