linux 中 netstat -na 命令的理解

Understanding of netstat -na command in linux

我面临着一个非常糟糕的问题,我对网络概念很可悲。当我尝试使用 tcp 协议连接到系统时,我失败了,但是如果我在一段时间后连接到同一个系统,我会成功。

场景: 我断开与目标环境的连接,显然没有与目标建立连接,这是通过使用以下命令确认的 netstat -na|grep 10.11.12.13 我发起一个新的请求 netstat -na|grep 10.11.12.13 我遇到了下面给出的失败

tcp 0 182 ::ffff:127.0.0.1:1234 ::ffff:10.11.12.13:8444 ESTABLISHED

我尝试在一段时间后再次启动相同的请求 netstat -na|grep 10.11.12.13 我可以看到 ESTABLISHED 模式下的连接。

我只在 netstat 结果的第二个第三列中观察到差异,它表示值 182,当我的请求成功时我没有看到。我想知道这个182代表什么。

这可能有助于您理解以下几点:

http://www.auditmypc.com/tcp-port-182.asp

来自 linux 手册页

   When  a  network error occurs, TCP tries to resend the packet.  If it doesn't succeed after some time, either ETIMEDOUT or
   the last received error on this connection is reported.

   Some applications require a quicker error notification.  This can be enabled with the IPPROTO_IP level  IP_RECVERR  socket
   option.   When  this  option  is enabled, all incoming errors are immediately passed to the user program.  Use this option
   with care — it makes TCP less tolerant to routing changes and other normal network conditions.

考虑一下:

[root@stg openssl]# netstat -na| more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State

您可以在 netstat 输出的开头看到列的描述。

1st : 协议名称。在你的情况下 TCP

第二名:Recv-Q。 Local Address 处的应用程序尚未从 TCP 缓冲区中提取的数据字节数。在你的情况下它是零

第三:发送Q。应用程序已提供给 TCP 且未被对等 TCP 确认的数据字节数。这是你的情况是 182

为了更多地了解 netstat 命令的使用,这里是它的选项:

-a : 所有端口 -t:端口 TCP -u : 端口 UDP -l:监听端口 -n : 不带域名解析的IP地址 -p : 程序名称及其关联的 PID

所以:

-显示所有端口(TCP 和 UDP),PId 与程序的关联名称:

 $ netstat -paunt

-显示所有监听端口(TCP), PId 与程序的关联名称:(我们也可以用grep命令过滤)

 $ sudo netstat -plnt | grep ':80'

希望对您有所帮助:)