netstat工具


简介

Netstat是一个网络工具,用于显示计算机与其他计算机或网络设备之间的详细通信信息。它可以显示有关单个网络连接、整体和协议特定的网络统计信息等内容,有助于解决某些网络问题。Netstat命令在Windows、macOS和Linux等操作系统中都可以使用。

以下是一些netstat命令的常用选项和示例:

  • -a:显示所有活动的TCP连接和正在监听的TCP连接,以及正在监听的UDP端口。
  • -b:显示与每个连接关联的进程的实际文件名。
  • -e:显示有关网络连接的统计信息,包括字节数、单播数据包、非单播数据包等。
  • -f:强制netstat命令在可能的情况下显示每个外部IP地址的完全限定域名(FQDN)。
  • -n:防止netstat尝试为外部IP地址确定主机名。
  • -o:显示与每个连接关联的进程标识符(PID)。
  • -p protocol:仅显示特定协议的连接或统计信息。
  • -r:显示IP路由表。
  • -s:按协议显示详细统计信息。
  • -t:显示当前TCP卸载状态。
  • -u:显示所有NetworkDirect监听器、连接和共享端点。

除了常用选项和示例中提到的内容,netstat命令还有一些其他有用的选项,例如:

  • -c:连续打印netstat信息,每隔一秒刷新一次。
  • -i:显示网络接口的信息,包括MTU(最大传输单元)以及接收和发送数据包的数量。
  • -M:显示伪装连接的信息。
  • --verbose:显示详细信息,包括不支持的地址族等。

以下是netstat命令的一些示例:

# 显示所有活动的TCP连接,并以FQDN格式显示连接的计算机
netstat -f

# 显示活动的TCP连接,并显示每个连接的进程标识符
netstat -o


显示系统上所有TCP连接的状态统计信息

netstat -tan|awk '$1~/tcp/{print $NF}'|sort|uniq -c|sort -nr

这个命令链是在Linux中用来显示系统上所有TCP连接的状态统计信息。让我们逐个解析这些命令:

  1. netstat -tan:

    • netstat 是一个用于显示网络连接、路由表、接口统计等网络相关信息的命令。
    • -t 表示要显示TCP连接。
    • -a 表示显示所有(监听中的和建立的)连接。
    • -n 表示以数字形式显示地址和端口号,而不是尝试去解析它们。
    • -n 也意味着不会显示主机名和端口名,而是直接显示IP地址和端口号。
  2. | (管道符号):

    • 管道会把前一个命令的输出作为后一个命令的输入。
  3. awk '$1~/tcp/{print $NF}':

    • awk 是一个强大的文本处理工具,可以用来格式化文本文件中的数据。
    • $1~/tcp/ 表示如果第一列($1)包含字符串"tcp",则执行后面的大括号内的操作。
    • {print $NF} 表示打印出这一行的最后一个字段(NF代表当前行的字段数量,$NF就是指第NF个字段)。这里假设最后一列是连接状态(通常是本地地址和端口),但实际上,对于netstat -tan命令的输出,最后一列通常不是状态,而是在第二列。
  4. | sort:

    • sort 命令用来对行进行排序,默认是字典排序。
    • 在这里,sort 是为了将相同的数据集中在一起,方便后续的 uniq 处理。
  5. | uniq -c:

    • uniq 命令用来从排序后的文件中删除重复的行。
    • -c 参数告诉 uniq 要在每一行前面加上这一行出现的次数。
  6. | sort -nr:

    • 再次使用 sort 命令,但是这次添加了 -n-r 参数。
    • -n 表示按照数字大小进行排序,而不是默认的字典排序。
    • -r 表示反转输出,即按降序排列。

综合起来,整个命令的作用是列出所有TCP连接的本地端口,并计算每个端口出现的次数,最后按照端口使用频率从高到低排序。这有助于找出哪些端口正在被大量使用,或者可能帮助排查服务器上的连接状况。

posted @ 2024-01-15 18:25  guanyubo  阅读(66)  评论(0编辑  收藏  举报