【问题标题】:How do I interpret 'netstat -a' output如何解释“netstat -a”输出
【发布时间】:2010-09-06 11:01:46
【问题描述】:

有些事情我觉得很奇怪:

  • 0.0.0.0、127.0.0.1、[::]有什么区别?
  • 应该如何读取外部地址的每一部分 (part1:part2)?
  • Time_Wait、Close_Wait 状态是什么意思?

有人可以简要介绍一下如何解释这些结果吗?

【问题讨论】:

    标签: networking netstat


    【解决方案1】:

    我知道答案已被接受,但这里有一些附加信息:

    • 如果“本地地址”列上显示 0.0.0.0,则表示该端口正在侦听所有“网络接口”(即您的计算机、调制解调器和网卡)。
    • 如果“本地地址”列上显示127.0.0.1,则表示该端口仅侦听来自您的 PC 本身的连接,而不是来自 Internet 或网络的连接。那里没有危险。
    • 如果它在“本地地址”列中显示您的online IP,则表示该端口仅侦听来自 Internet 的连接。
    • 如果它在“本地地址”列上显示您的local network IP,则表示该端口仅侦听来自本地网络的连接。
    • 外部地址 - 套接字连接到的远程计算机的 IP 地址和端口号。除非指定了 -n 参数,否则将显示与 IP 地址和端口对应的名称。如果端口尚未建立,端口号将显示为星号 (*)。 (来自维基百科)

    【讨论】:

    • 提到的文章链接已损坏
    • 互联网上对 netstat 中本地地址列的最佳解释之一。干得好!
    【解决方案2】:

    0.0.0.0、127.0.0.1、[::]有什么区别?

    • 0.0.0.0 表示正在侦听机器上所有接口的东西。
    • 127.0.0.1表示你自己的机器。
    • [::] 是 0.0.0.0 的 IPv6 版本
    • 我的机器还显示 *:\* for UDP,这表明 UDP 连接实际上没有外部地址 - 它们从任何地方接收数据包。这就是 UDP 的本质。

    国外地址的每一部分应该如何读取(part1:part2)?

  • part1 是主机名或 IP 地址
  • part2 是端口
  • 【讨论】:

      【解决方案3】:

      This link has helped me a lot to interpret netstat -a

      那里的副本-

      TCP Connection States
      以下是此握手的简要说明。在这种情况下,“客户端”是请求连接的对等方,而“服务器”是接受连接的对等方。请注意,此表示法不反映作为架构主体的客户端/服务器关系。

      连接建立

      客户端向服务器发送一条包含服务器端口和客户端初始序列号 (ISN) 的 SYN 消息(主动打开)。
      服务器发回自己的 SYN 和 ACK(由客户端的 ISN + 1 组成)。
      客户端发送一个 ACK​​(由服务器的 ISN + 1 组成)。

      连接断开(修改了三向握手)。

      客户端发送一个 FIN(主动关闭)。这是一个现在半封闭的连接。客户端不再发送数据,但仍然能够从服务器接收数据。收到此 FIN 后,服务器进入被动关闭状态。
      服务器发送一个 ACK​​(即客户端 FIN 序列 + 1)
      服务器发送自己的 FIN。
      客户端发送一个 ACK​​(即服务器的 FIN 序列 + 1)。收到此 ACK 后,服务器将关闭连接。
      半关闭连接可用于在接收数据时终止发送数据。套接字应用程序可以调用 shutdown 并将第二个参数设置为 1 以进入此状态。

      状态解释如 Netstat 所示:
      状态解释


      SYN_SEND 表示主动打开。

      SYN_RECEIVED服务器刚刚收到来自客户端的SYN。

      ESTABLISHED客户端收到服务器的SYN并建立会话。

      LISTEN 服务器已准备好接受连接。

      注意:请参阅有关 listen() 套接字调用的文档。未显示处于侦听状态的 TCP 套接字 - 这是 NETSTAT 的限制。有关其他信息,请参阅 Microsoft 知识库中的以下文章: 134404 NETSTAT.EXE 不显示 TCP 侦听套接字 FIN_WAIT_1 表示主动关闭。

      TIMED_WAIT客户端主动关闭后进入该状态。

      CLOSE_WAIT 表示被动关闭。服务器刚刚收到来自客户端的第一个 FIN。

      FIN_WAIT_2 客户端刚刚收到来自服务器的第一个 FIN 确认。

      LAST_ACK服务器在发送自己的FIN时处于这种状态。

      CLOSED 服务器收到客户端的 ACK 并关闭连接。

      【讨论】:

        【解决方案4】:

        对于那些在 netstat 输出中看到 [::] 的人,我敢打赌你的机器正在运行 IPv6;这相当于 0.0.0.0,即监听任何 IPv6 地址。

        【讨论】:

        • 这也可能是特定于操作系统的。在我的 Mac OS X 系统上,默认情况下,IPv6 是打开的,但 IPv6(“tcp6”)条目仍然显示“.
        【解决方案5】:

        Send-Q 是应用程序发送但尚未被套接字另一端确认的数据量。

        Recv-Q 是从 NIC 接收到但尚未被应用程序消耗的数据量。

        这两个队列都驻留在内核内存中。 如果您愿意,有guides 可以帮助您调整这些内核缓冲区。不过,您可能会发现默认参数做得很好。

        【讨论】:

          【解决方案6】:

          127.0.0.1 是您的环回地址,如果在您的 HOSTS 文件中设置,也称为“localhost”。更多信息请看这里:http://en.wikipedia.org/wiki/Localhost

          0.0.0.0 表示应用已使用特定端口绑定到所有 IP 地址。 MS信息在这里:http://support.microsoft.com/default.aspx?scid=kb;en-us;175952

          '::' 是 ipv6 对 ipv4 0.0.0.0 的简写。

          【讨论】:

            【解决方案7】:

            0.0.0.0 通常是指监听所有接口的东西。 127.0.0.1 = localhost(仅限您的本地界面) 我不确定 [::]

            TIME_WAIT 表示双方都同意关闭和 TCP 现在必须等待规定的时间才能建立连接 下来。

            CLOSE_WAIT 表示远程系统已完成发送 你的系统还没有说它已经完成了。

            【讨论】:

            • 监听“所有接口”是什么意思?
            • 您可以将每个网络“卡”视为一个接口。有些“卡”是虚拟的(仅存在于软件中)有些是物理的。例如,您的以太网适配器和 wifi 适配器都是接口,VirtualBox 的网络主机适配器也是如此(它只是虚拟的而不是物理的)
            猜你喜欢
            • 1970-01-01
            • 2017-03-09
            • 1970-01-01
            • 2015-11-11
            • 2016-08-18
            • 2011-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多