netstat
1. netstat 命令
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
网络类型>
参数
-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C或--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F或--fib 显示路由缓存。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket。
-M或--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r或--route 显示Routing Table。
-s或--statistics 显示网络工作信息统计表。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-w或--raw 显示RAW传输协议的连线状况。
-x或--unix 此参数的效果和指定"-A unix"参数相同。
--ip或--inet 此参数的效果和指定"-A inet"参数相同。
网络类型>网络类型>
实例
1. 显示网络状态
netstat -a
结果:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.122.1:domain 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 localhost:35600 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.54:domain 0.0.0.0:* LISTEN
tcp 0 0 localhost:31080 0.0.0.0:* LISTEN
tcp 0 0 localhost:31055 0.0.0.0:* LISTEN
tcp 0 0 hellotalk:domain 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:domain 0.0.0.0:* LISTEN
tcp 0 0 172.16.0.112:50006 113.240.72.111:https TIME_WAIT
tcp 0 0 10.100.100.164:56010 10.40.2.11:27017 ESTABLISHED
tcp 0 0 10.100.100.164:43846 10.40.2.5:27017 ESTABLISHED
字段说明:
1.Proto:传输层协议 TCP 或 UDP
2.Recv-Q:接收队列
3.Send-Q:发送队列
4.Local Address:本地地址
5.Foreign Address:远程地址
6.State:状态 LISTEN:侦听,ESTABLISHED:已建立,TIME_WAIT:关闭
2. 显示当前户籍 UDP 连接状况
netstat -nu
结果:
激活Internet连接 (w/o 服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 127.0.0.1:56871 127.0.1.1:53 ESTABLISHED
udp 0 0 172.16.0.112:42799 106.38.222.156:443 ESTABLISHED
udp 0 0 172.16.0.112:68 172.16.0.1:67 ESTABLISHED
3. 显示当前户籍 TCP 连接状况
netstat -nt
结果:
激活Internet连接 (w/o 服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.100.100.164:56010 10.40.2.11:27017 ESTABLISHED
tcp 0 0 10.100.100.164:43846 10.40.2.5:27017 ESTABLISHED
tcp 0 0 172.16.0.112:60087 43.159.193.150:8002 TIME_WAIT
tcp 0 0 172.16.0.112:57712 113.240.72.99:443 TIME_WAIT
tcp 0 0 10.100.100.164:55986 10.40.2.11:27017 ESTABLISHED
tcp 0 0 10.100.100.164:43722 10.40.2.5:27017 ESTABLISHED
4. 显示当前系统中所有正在监听的 TCP 端口、相关的进程以及其状态
netstat -ntlp
结果:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2345/mysqld
tcp6 0 0 :::22 :::* LISTEN 3456/sshd
字段解析:
Proto:协议
- tcp:表示 TCP 协议。
- tcp6:表示 IPv6 的 TCP 协议。
Recv-Q 和 Send-Q:
- Recv-Q:表示接收队列
- Send-Q:表示发送队列
Local Address:本地地址
- 0.0.0.0:80:本地地址和端口号,0.0.0.0 表示监听所有接口的 IP 地址,80 是端口号。
- 127.0.0.1:3306:本地环回地址(localhost)上的端口 3306。
- :::22:IPv6 地址的端口 22。
Foreign Address:远程地址
- 0.0.0.0:* 和 :::*:表示监听所有外部地址。
State:状态
- LISTEN:表示服务器正在监听 TCP 连接请求。
- ESTABLISHED:表示连接已经建立。
- TIME_WAIT:表示主动关闭连接的一方在关闭连接后,等待 2MSL 后依然没有收到对方的 FIN 报文,处于等待关闭状态。
- CLOSE_WAIT:表示被动关闭连接的一方在收到对方的 FIN 报文后,等待应用进程关闭连接。
- LAST_ACK:表示被动关闭连接的一方在发送完 FIN 报文后,等待对方的 ACK 报文,如果收到 ACK 报文,则处于 CLOSED 状态,否则处于 TIME_WAIT 状态。
- CLOSED:表示连接已经关闭。
- SYN_RECV:表示正在等待处理的请求数目。
- SYN_SENT:表示正在等待远程连接请求。
- CLOSING:表示正在等待远程连接关闭请求。
- UNKNOWN:表示未知状态。
- LISTENING:表示正在等待远程连接请求。
- IDLE:表示连接处于空闲状态。
- BOUND:表示正在等待远程连接请求。
- FIN_WAIT1: 套接字已经发出了一个 FIN 请求,表示它已经完成了发送数据,正在等待对方的 ACK 响应。
- FIN_WAIT2: 套接字收到了对 FIN 请求的 ACK 响应,正在等待对方发出 FIN 请求。
PID/Program name:进程 ID 和进程名称
- 1234/nginx:进程 ID 为 1234 的 nginx 进程正在监听 80 端口。
- 2345/mysqld:进程 ID 为 2345 的 mysqld 进程正在监听 3306 端口。
- 3456/sshd:进程 ID 为 3456 的 sshd 进程正在监听 22 端口。
5. 显示网卡列表
netstat -i
结果:
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
br-717e070443f8 1500 0 0 0 0 0 0 0 0 BMU
br-7f56e5476213 1500 0 0 0 0 0 0 0 0 BMU
docker0 1500 0 0 0 0 0 0 0 0 BMU
eno1 1500 3838424 0 0 0 3615697 0 0 0 BMRU
lo 65536 1115368 0 0 0 1115368 0 0 0 LRU
utun 1400 2667684 0 0 0 2598307 0 0 0 MOPRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
字段解析:
- Iface:网卡名称
- MTU:最大传输单元
- RX-OK:接收数据包总数
- RX-ERR:接收数据包错误总数
- RX-DRP:接收数据包丢弃总数
- RX-OVR:接收数据包溢出总数
- TX-OK:发送数据包总数
- TX-ERR:发送数据包错误总数
- TX-DRP:发送数据包丢弃总数
- TX-OVR:发送数据包溢出总数
- Flg:标志
- BMU:广播地址
- BMRU:广播地址和多播地址
- MOPRU:多播地址
- LRU:本地地址
- MPRU:多播地址和本地地址
- OPRU:多播地址和本地地址和广播地址
- ALL:所有地址
#### 6. 显示组播组的关系
netstat -g
结果:
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 mdns.mcast.net
lo 1 all-systems.mcast.net
字段解析:
- Interface:网卡名称
- RefCnt:引用计数
- Group:组播组
#### 7. 显示网络统计信息
netstat -s
结果:
Ip:
Forwarding: 1
7269919 total packets received
0 forwarded
0 incoming packets discarded
7265662 incoming packets delivered
7078118 requests sent out
28 outgoing packets dropped
7895 dropped because of missing route
8416 reassemblies required
4208 packets reassembled ok
6 outgoing packets failed fragmentation
OutTransmits: 7078115
Icmp:
2022 ICMP messages received
6 input ICMP message failed
ICMP接收历史
destination unreachable: 2020
echo requests: 2
2176 ICMP messages sent
0 ICMP messages failed
OutRateLimitHost: 253
ICMP发出历史
destination unreachable: 2174
echo replies: 2
IcmpMsg:
InType3: 2020
InType8: 2
OutType0: 2
OutType3: 2174
Tcp:
202192 active connection openings
10375 passive connection openings
120686 failed connection attempts
3047 connection resets received
77 connections established
6857878 segments received
7083293 segments sent out
16799 segments retransmitted
1119 bad segments received
131681 resets sent
Udp:
1456958 packets received
2421 packets to unknown port received
32 packet receive errors
556388 packets sent
0 receive buffer errors
8 send buffer errors
InCsumErrors: 32
IgnoredMulti: 12191
UdpLite:
TcpExt:
3 ICMP packets dropped because they were out-of-window
30122 TCP sockets finished time wait in fast timer
1 packets rejected in established connections because of timestamp
119999 delayed acks sent
39 delayed acks further delayed because of locked socket
Quick ack mode was activated 34511 times
1065795 packet headers predicted
687289 acknowledgments not containing data payload received
1455607 predicted acknowledgments
TCPSackRecovery: 327
Detected reordering 676 times using SACK
TCPDSACKUndo: 97
87 congestion windows recovered without slow start after partial ack
TCPLostRetransmit: 8875
TCPSackFailures: 8
3 timeouts in loss state
466 fast retransmits
133 retransmits in slow start
TCPTimeouts: 11823
TCPLossProbes: 5420
TCPLossProbeRecovery: 82
TCPSackRecoveryFail: 10
TCPBacklogCoalesce: 2369
TCPDSACKOldSent: 34608
TCPDSACKOfoSent: 51
TCPDSACKRecv: 1827
TCPDSACKOfoRecv: 16
1537 connections reset due to unexpected data
2171 connections reset due to early user close
484 connections aborted due to timeout
10 times unable to send RST due to no memory
TCPSACKDiscard: 2
TCPDSACKIgnoredOld: 7
TCPDSACKIgnoredNoUndo: 815
TCPSackShifted: 26
TCPSackMerged: 342
TCPSackShiftFallback: 1984
IPReversePathFilter: 22
TCPRcvCoalesce: 203651
TCPOFOQueue: 50737
TCPOFOMerge: 54
TCPChallengeACK: 879
TCPSYNChallenge: 1140
TCPSpuriousRtxHostQueues: 18
TCPAutoCorking: 458417
TCPFromZeroWindowAdv: 35
TCPToZeroWindowAdv: 35
TCPWantZeroWindowAdv: 167
TCPSynRetrans: 7312
TCPOrigDataSent: 3398432
TCPHystartTrainDetect: 22
TCPHystartTrainCwnd: 1073
TCPHystartDelayDetect: 42
TCPHystartDelayCwnd: 1831
TCPACKSkippedSeq: 286
TCPACKSkippedChallenge: 265
TCPKeepAlive: 97079
TCPDelivered: 3475194
TCPAckCompressed: 14499
TcpTimeoutRehash: 11471
TCPDSACKRecvSegs: 1841
TCPDSACKIgnoredDubious: 2
IpExt:
InNoRoutes: 17
InMcastPkts: 118643
OutMcastPkts: 8410
InBcastPkts: 17704
OutBcastPkts: 1960
InOctets: 3807905209
OutOctets: 1523626052
InMcastOctets: 53391437
OutMcastOctets: 1586713
InBcastOctets: 9013152
OutBcastOctets: 152880
InNoECTPkts: 7512863
InECT0Pkts: 18
MPTcpExt:
显示监听的套接口
netstat -l
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 hellotalk:domain 0.0.0.0:* LISTEN
tcp6 0 0 [::]:3100 [::]:* LISTEN
udp 0 0 0.0.0.0:45010 0.0.0.0:*
udp 0 0 0.0.0.0:mdns 0.0.0.0:*
udp6 0 0 [::]:49287 [::]:*
7
活跃的UNIX域套接字 (仅服务器)
Proto RefCnt Flags Type State I-Node 路径
unix 2 [ ACC ] 流 LISTENING 1010159 /tmp/.java_pid169241.tmp
字段解析:
- Proto:协议名,如tcp、udp、unix等
- Recv-Q:接收队列,即收到的但未处理的数据包数
- Send-Q:发送队列,即发送但未确认的数据包数
- Local Address:本地地址
- Foreign Address:远程地址
- State:套接字状态,如LISTEN、ESTABLISHED等
- I-Node:套接字inode号
- 路径:unix域套接字路径
- RefCnt:引用计数
- Flags:套接字标志,如S表示套接字是被动打开的,即服务器端,而A表示套接字是主动打开的,即客户端
- Type:套接字类型,如流套接字、数据报套接字等
- 路径:unix域套接字路径
查看路由表
netstat -r
内核 IP 路由表
Destination Gateway Genmask Flags MSS Window irtt Iface
default 172.16.0.1 0.0.0.0 UG 0 0 0 eno1
one.one.one.one 0.0.0.0 255.255.255.255 UH 0 0 0 utun
10.10.0.0 0.0.0.0 255.255.0.0 U 0 0 0 utun
10.40.0.0 0.0.0.0 255.255.0.0 U 0 0 0 utun
10.100.100.0 0.0.0.0 255.255.255.0 U 0 0 0 utun
30.100.0.0 0.0.0.0 255.252.0.0 U 0 0 0 utun
feilian.hellota 172.16.0.1 255.255.255.255 UGH 0 0 0 eno1
link-local 0.0.0.0 255.255.0.0 U 0 0 0 utun
172.16.0.0 0.0.0.0 255.255.254.0 U 0 0 0 eno1
172.16.6.20 172.16.0.1 255.255.255.255 UGH 0 0 0 eno1
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.49.0 0.0.0.0 255.255.255.0 U 0 0 0 br-717e070443f8
192.168.58.0 0.0.0.0 255.255.255.0 U 0 0 0 br-7f56e5476213
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
字段解析:
- Destination:目的网络或目的主机
- Gateway:指定用于转发包的网关。
- Genmask:子网掩码
- Flags:路由标志,如U表示路由是活动的,H表示目的地址是一个主机,G表示使用网关
- MSS:最大分段大小
- Window:TCP窗口大小
- irtt:初始RTT
- Iface:路由接口
只列出监听中的连接
netstat -tnl
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:35600 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:31080 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:31055 0.0.0.0:* LISTEN
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp6 0 0 :::41499 :::* LISTEN
tcp6 0 0 127.0.0.1:52829 :::* LISTEN
tcp6 0 0 127.0.0.1:35955 :::* LISTEN
tcp6 0 0 127.0.0.1:63343 :::* LISTEN
tcp6 0 0 127.0.0.1:63342 :::* LISTEN
获取进程名、进程号以及用户 ID
netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1144/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 661/cupsd
tcp6 0 0 ::1:631 :::* LISTEN 661/cupsd
查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名
netstat -tunlep
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 192.168.122.1:domain 0.0.0.0:* LISTEN root 14887 1567/dnsmasq
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN root 1946474 310640/cupsd
参考:
https://docs.oracle.com/cd/E26926_01/html/E25874/ipconfig-142.html