运行lsof后,ESTABLISHED指标的含义是什么

时间:2015-06-19 21:12:00

标签: linux network-programming lsof

我运行了命令sudo lsof -i -n -P | grep TCP,我想知道是否可以对其输出进行更多澄清。

具体来说,在此图片中:

enter image description here

为什么我有一个IP:PORT指向另一个IP:PORT然后返回自己的标签' ESTABLISHED'?我对这意味着什么感到困惑。

2 个答案:

答案 0 :(得分:2)

我不确定您对网络和TCP的熟悉程度,因此我将尝试提供一些简要说明,其中包含一些细节。从您的问题来看,您似乎对网络内部不是很熟悉,因此可能很难理解其中的一些概念,但我希望这会有所帮助:

TCP协议具有各种状态。把它想象成一个状态机。客户端的国家/地区包括CLOSEDSYN_SENTESTABLISHEDFIN_WAIT_1FIN_WAIT_2TIME_WAIT

因此,ESTABLISHED标签表示TCP连接处于ESTABLISHED状态。处于已建立状态意味着两个主机都成功完成了TCP 3次握手(并且这样做,从SYN_SENT转换为ESTABLISHED)。当客户端将TCP CLOSED请求发送到服务器时,会发生从SYN_SENTSYN的转换。

在已建立的连接中,双方都发送和接收应用程序特定数据。基本上,建立会话并在两个终端系统之间流动双向字节流。

TCP套接字由4元组(source-ip, source-port, destination-ip, destination-port)唯一标识。 IP标识终端系统的网络接口,端口号用于复用和解复用到达该网络接口的数据包(以便目标系统知道将数据包传送到哪个服务)。这就是IP:PORT字段的含义。

我不确定为什么你有两个相同连接的条目。这可能是系统相关的,虽然它很奇怪(在我的系统中,每个插槽只有一个条目)。但套接字是双向的,因此您的系统可能会将每个数据包流方向显示为一个不同的条目。这可能还取决于系统如何实现套接字。

答案 1 :(得分:1)

ESTABLISHED表示TCP连接已完成3次握手。 (不确定是否必须调用accept)。请参阅TCP state diagram

  

为什么我有一个IP:PORT指向另一个IP:PORT然后返回

这意味着您的进程中打开了两个TCP套接字。最有可能的是,一个侦听端口9092,另一个侦听从端口57633连接到侦听套接字。端口57633属于ephemeral port range,即操作系统自动分配给调用connect但未调用bind以分配特定端口的套接字的端口范围。