Linux之netstat命令

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

TCP连接状态详解

  • LISTEN: 侦听来自远方的TCP端口的连接请求
  • SYN-SENT: 再发送连接请求后等待匹配的连接请求
  • SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
  • ESTABLISHED: 代表一个打开的连接
  • FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
  • FIN-WAIT-2: 从远程TCP等待连接中断请求
  • CLOSE-WAIT: 等待从本地用户发来的连接中断请求
  • CLOSING: 等待远程TCP对连接中断的确认
  • LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
  • TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
  • CLOSED: 没有任何连接状态

命令格式

netstat(选项)

命令选项

  • -a或—all:显示所有连线中的Socket;
  • -A<网络类型>或—<网络类型>:列出该网络类型连线中的相关地址;
  • -c或—continuous:持续列出网络状态;
  • -C或—cache:显示路由器配置的快取信息;
  • -e或—extend:显示网络其他相关信息;
  • -F或—fib:显示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或—statistice:显示网络工作信息统计表;
  • -t或—tcp:显示TCP传输协议的连线状况;
  • -u或—udp:显示UDP传输协议的连线状况;
  • -v或—verbose:显示指令执行过程;
  • -V或—version:显示版本信息;
  • -w或—raw:显示RAW传输协议的连线状况;
  • -x或—unix:此参数的效果和指定”-A unix”参数相同;
  • —ip或—inet:此参数的效果和指定”-A inet”参数相同。

列出所有端口(包含TCP和UDP)

  1. > netstat -a

图片alt

列出所有TCP端口

  1. > netstat -at

图片alt

列出所有UDP端口

  1. > netstat -au

图片alt

列出所有处于监听状态的 Sockets

  1. > netstat -l

图片alt

只列出所有监听tcp端口

  1. > netstat -lt

图片alt

只列出所有监听udp端口

  1. > netstat -lu

图片alt

只列出所有监听UNIX端口

  1. > netstat -lx

图片alt

显示所有端口的统计信息

  1. > netstat -s
  2. Ip:
  3. 1007495197 total packets received
  4. 0 forwarded
  5. 582 with unknown protocol
  6. 0 incoming packets discarded
  7. 1007422115 incoming packets delivered
  8. Icmp:
  9. 66583265 ICMP messages received
  10. 63899 input ICMP message failed.
  11. InCsumErrors: 384
  12. ICMP input histogram:
  13. destination unreachable: 115410
  14. timeout in transit: 12840
  15. source quenches: 11
  16. redirects: 563
  17. echo requests: 66453453
  18. echo replies: 152
  19. timestamp request: 438
  20. address mask request: 4
  21. 66987000 ICMP messages sent
  22. 0 ICMP messages failed
  23. ICMP output histogram:
  24. destination unreachable: 533106
  25. echo request: 4
  26. echo replies: 66453453
  27. timestamp replies: 437
  28. IcmpMsg:
  29. InType0: 152
  30. InType3: 115410
  31. InType4: 11
  32. InType5: 563
  33. IpExt:
  34. InNoRoutes: 15
  35. InMcastPkts: 1291307
  36. InOctets: 211446050816
  37. OutOctets: 481070069194

显示TCP端口的统计信息

  1. > netstat -st
  2. IcmpMsg:
  3. InType0: 152
  4. InType3: 115410
  5. InType4: 11
  6. InType5: 563
  7. InType8: 66453492
  8. Tcp:
  9. 55437641 active connections openings
  10. 35899081 passive connection openings
  11. 552243 failed connection attempts
  12. 753118 connection resets received
  13. 7 connections established
  14. UdpLite:
  15. TcpExt:
  16. 162052 SYN cookies sent
  17. 621 SYN cookies received
  18. 4998179 invalid SYN cookies received
  19. 551915 resets received for embryonic SYN_RECV sockets
  20. IpExt:
  21. InNoRoutes: 15
  22. InMcastPkts: 1291308
  23. InOctets: 211446303015
  24. OutOctets: 481070459735
  25. InMcastOctets: 46487088

显示UDP端口的统计信息

  1. > netstat -su
  2. IcmpMsg:
  3. InType0: 152
  4. InType3: 115410
  5. InType4: 11
  6. InType5: 563
  7. InType8: 66453594
  8. InType11: 12840
  9. InType13: 438
  10. InType17: 4
  11. InType37: 3
  12. InType165: 7
  13. OutType0: 66453594
  14. OutType3: 533106
  15. OutType8: 4
  16. OutType14: 437
  17. Udp:
  18. 17941589 packets received
  19. 637146 packets to unknown port received.
  20. 1649 packet receive errors
  21. 17977050 packets sent
  22. 0 receive buffer errors
  23. 0 send buffer errors
  24. InCsumErrors: 1640
  25. UdpLite:
  26. IpExt:
  27. InNoRoutes: 15
  28. InMcastPkts: 1291310
  29. InOctets: 211446802283
  30. OutOctets: 481071405083
  31. InMcastOctets: 46487160
  32. InNoECTPkts: 1009629627
  33. InECT1Pkts: 9955
  34. InECT0Pkts: 1987096
  35. InCEPkts: 94039

在netstat输出中显示 PID 和进程名称

  1. > netstat -pt

图片alt

在netstat输出中不显示主机,端口和用户名(host, port or user)

  1. > netstat -an

图片alt

持续输出netstat信息

每隔一秒输出网络信息

  1. > netstat -c

显示核心路由信息

  1. > netstat -r
  2. Kernel IP routing table
  3. Destination Gateway Genmask Flags MSS Window irtt Iface
  4. default gateway 0.0.0.0 UG 0 0 0 eth0
  5. link-local 0.0.0.0 255.255.0.0 U 0 0 0 eth0
  6. 172.16.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0

使用netstat -rn显示数字格式,不查询主机名称。

  1. > netstat -rn
  2. Kernel IP routing table
  3. Destination Gateway Genmask Flags MSS Window irtt Iface
  4. 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0
  5. 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
  6. 172.16.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0

找出程序运行的端口

  1. > netstat -tunlp | grep ssh
  2. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4400/sshd

找出运行在指定端口的进程

  1. > netstat -an | grep ":80"
  2. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
  3. tcp 0 0 172.16.0.9:80 185.191.171.12:9380 TIME_WAIT
  4. tcp 0 0 172.16.0.9:80 185.191.171.26:52418 TIME_WAIT
  5. tcp 0 3450 172.16.0.9:80 185.191.171.37:25108 FIN_WAIT1
  6. tcp 0 0 172.16.0.9:80 185.191.171.37:55096 TIME_WAIT
  7. tcp 0 0 172.16.0.9:80 144.76.176.171:27832 TIME_WAIT
  8. tcp 0 0 172.16.0.9:80 118.126.124.7:11127 TIME_WAIT
  9. tcp 0 0 172.16.0.9:46628 169.254.0.55:8080 TIME_WAIT
  10. tcp 0 0 172.16.0.9:80 144.76.176.171:23812 ESTABLISHED

通过端口找进程ID

  1. > netstat -tunlp | grep 80 | awk '{print $7}' | cut -d/ -f1
  2. 21323

显示网络接口列表

  1. > netstat -i

图片alt

统计TCP各种状态列表

  1. > netstat -n | awk '/^tcp/{++S[$NF]}END{for(i in S) print i,S[i]}'
  2. ESTABLISHED 7
  3. FIN_WAIT2 13
  4. TIME_WAIT 18

返回笔记列表
入门小站