netstat命令
netstat命令介绍
在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
如果你的计算机有时候接收到的数据包导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据包。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用Netstat查一查为什么会出现这些情况了。
netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。使用时如果不带参数,netstat显示活动的 TCP 连接。
netstat常用参数选项
netstat [-AaLnSW] [-f protocol_family | -p protocol] [-M core] [-N system]
显示每个网络协议,特定protocol_family或单个协议的活动套接字(协议控制块)列表。如果还存在-A,则显示与套接字关联的协议控制块(PCB)的地址;用于调试。如果还存在-a,则显示所有套接字的状态;否则,请显示所有套接字的状态。通常不会显示服务器进程使用的套接字。如果还存在-L,请显示各种侦听队列的大小。第一个计数显示不可接受的连接数,第二个计数显示不可接受的不完整连接数,第三个计数是排队连接的最大数量。如果还存在-S,则将网络地址显示为数字(与-n相同),但象征性地显示端口。
netstat -i | -I interface [-abdhntW] [-f address_family] [-M core] [-N system]
显示已自动配置的所有网络接口或单个接口的状态(未显示静态配置到系统中但在启动时未定位的接口)。接口名称后的星号(’*’)表示该接口处于’down’状态。如果还存在-a,则将为每个以太网接口和每个IP接口地址显示当前正在使用的多播地址。组播地址在与其关联的接口地址之后的单独行中显示。如果还存在-b,则显示输入和输出的字节数。如果还存在-d,则显示丢弃的数据包的数量。如果还存在-h,则以人类可读的形式打印所有计数器。如果还存在-t,则显示看门狗计时器的内容。如果还存在-W,则使用更大的字段大小打印接口名称。
netstat -w wait [-I interface] [-d] [-M core] [-N system]
以等待秒为间隔,在所有已配置的网络接口或单个接口上显示有关数据包流量的信息。如果还存在-d,则显示丢弃的数据包的数量。
netstat -s [-s] [-z] [-f protocol_family | -p protocol] [-M core] [-N system]
显示每个网络协议,特定protocol_family或单个协议的系统范围统计信息。如果重复-s,则抑制值为零的计数器。如果还存在-z,请在显示统计计数器后将其重置。
netstat -m [-M core] [-N system]
显示由内存管理例程(mbuf(9))记录的统计信息。网络管理内存缓冲区的专用池。
netstat -B [-I interface]
显示有关bpf(4)对等点的统计信息。这包括bpf设备已匹配,丢弃和接收了多少个数据包之类的信息,以及有关当前缓冲区大小和设备状态的信息。
netstat -r [-AanW] [-f address_family] [-M core] [-N system]
显示所有路由表的内容,或显示特定address_family的路由表的内容。如果还存在-A,则显示内部Patricia树结构的内容;用于调试。如果还存在-a,则显示协议克隆的路由(由RTF_PRCLONING父路由生成的路由);通常这些路线没有显示。当还存在-W时,显示每个路由的路径MTU,并使用更大的字段大小打印接口名称
netstat -rs [-s] [-M core] [-N system]
显示路由统计信息。如果重复-s,则抑制值为零的计数器。
netstat -g [-W] [-f address_family] [-M core] [-N system]
显示与多播(组地址)路由相关的信息。默认情况下,显示IP组播虚拟接口和路由表以及组播组成员身份。
netstat -gs [-s] [-f address_family] [-M core] [-N system]
显示多播路由统计信息。如果重复-s,则抑制值为零的计数器。
实用命令实例
列出所有端口 (包括监听和未监听的)
列出所有端口 netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.55375 localhost.55376 ESTABLISHED
tcp4 0 0 localhost.55376 localhost.55375 ESTABLISHED
tcp4 0 0 10.161.238.37.55153 120.232.175.168.18910 ESTABLISHED
tcp4 0 0 localhost.pvuniwien localhost.55152 ESTABLISHED
tcp4 0 0 localhost.55152 localhost.pvuniwien ESTABLISHED
tcp4 0 0 10.161.238.37.55066 110.43.89.33.https ESTABLISHED
列出所有 tcp 端口 netstat -at
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.55468 localhost.55469 ESTABLISHED
tcp4 0 0 localhost.55469 localhost.55468 ESTABLISHED
tcp4 0 0 10.161.238.37.55383 120.232.175.168.18910 ESTABLISHED
tcp4 0 0 localhost.pvuniwien localhost.55382 ESTABLISHED
tcp4 0 0 localhost.55382 localhost.pvuniwien ESTABLISHED
tcp4 0 0 10.161.238.37.55066 110.43.89.33.https ESTABLISHED
^C
列出所有 udp 端口 netstat -au
─xjh@xjh.local ~
╰─➤ netstat -au 130 ↵
Active LOCAL (UNIX) domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
d9ba1fded7e1b85 stream 0 0 0 d9ba1fded7e3de5 0 0 /var/run/mDNSResponder
d9ba1fded7e3de5 stream 0 0 0 d9ba1fded7e1b85 0 0
d9ba1fded7e2035 stream 0 0 0 d9ba1fded7e2a5d 0 0 /var/run/mDNSResponder
.......
列出所有处于监听状态的 Sockets
只显示监听端口 netstat -l
╭─xjh@xjh.local ~
╰─➤ netstat -l
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.56906 localhost.56907 ESTABLISHED
tcp4 0 0 localhost.56907 localhost.56906 ESTABLISHED
^C
只列出所有监听 tcp 端口 netstat -lt
╭─xjh@xjh.local ~
╰─➤ netstat -lu 130 ↵
Active LOCAL (UNIX) domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
d9ba1fded7e3de5 stream 0 0 0 d9ba1fded7e1b85 0 0 /var/run/mDNSResponder
d9ba1fded7e1b85 stream 0 0 0 d9ba1fded7e3de5 0 0
d9ba1fded7e2035 stream 0 0 0 d9ba1fded7e2a5d 0 0 /var/run/mDNSResponder
只列出所有监听 UNIX 端口 netstat -lx
╭─xjh@xjh.local ~
╰─➤ netstat -lx
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.57474 localhost.57475 ESTABLISHED
tcp4 0 0 localhost.57475 localhost.57474 ESTABLISHED
tcp4 0 0 10.161.238.37.57433 ecs-121-36-106-5.https ESTABLISHED
tcp4 0 0 10.161.238.37.57432 ecs-121-36-106-5.https ESTABLISHE
显示每个协议的统计信息
显示所有端口的统计信息 netstat -s
tcp:
0 packet sent
0 data packet (0 byte)
0 data packet (0 byte) retransmitted
0 resend initiated by MTU discovery
0 ack-only packet (0 delayed)
0 URG only packet
0 window probe packet
0 window update packet
0 control packet
0 data packet sent after flow control
0 challenge ACK sent due to unexpected SYN
0 challenge ACK sent due to unexpected RST
0 checksummed in software
0 segment (0 byte) over IPv4
0 segment (0 byte) over IPv6
在 netstat 输出中不显示主机,端口和用户名 (host, port or user)
当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。
同样可以加速输出,因为不用进行比对查询。
netstat -an
📬 秘籍
打开的计算机端口,就是向 Internet 打开的一个通道。通过
netstat
命令,我们可以了解当前计算机哪些端口是打开的,从而找出一些恶意后台程序,分析其所作所为,并且可以进一步将相关端口关闭,降低安全风险。