1.简介

netstat 命令用来打印 Linux 系统的网络状态信息,包括网络连接(network connections)、路由表(routing tables)、网络接口设备统计信息(interface statistics)、伪连接(masquerade connections)和多播成员信息(multicast memberships)等,得知 Linux 系统网络的整体情况。

2.命令格式

netstat [OPTIONS]

3.选项说明

-a, --all显示所有网络连接
-A,--protocol=FAMILY列出指定地址族的连接信息。FAMILY 为逗号分隔的地址族关键字列表,比如inet,inet6,unix,ipx,ax25,netrom,econet 和 ddp 等
-c,--continuous每隔 1s 刷新网络状态
-C从路由缓存获取路由信息
-e, --extend显示网络其他相关信息
-F显示 FIB 中的路由信息(默认选项)
-g, --g显示 IPv4 和 IPv6 的多播组成员关系信息
-h, --help显示帮助信息
-i, -I=IFACE, --interfaces=IFACE显示所有网络接口或指定的网络接口
-l, --listening显示监听中的套接字(默认选项)
-M, --masquerade显示伪装的网络连接
-n, --numeric显示数字形式地址而不是去解析主机、端口或用户名
--numeric-hosts以数字形式显示主机地址
--numeric-ports以数字形式显示端口号
--numeric-users以数字形式显示用户名
-N, --netlink, --symbolic显示网络硬件外围设备的符号连接名称
-o, --timers显示计时器
-p, --programs显示正在使用 Socket 的进程 ID 和进程名
-r, --route显示内核路由表。命令 route -e 会产生同样的结果
-s, --statistice显示每种协议的统计信息
-t, --tcp显示TCP传输协议的连接状况
-u, --udp显示 UDP 传输协议的连接状况
-v, --verbose显示指令执行过程。特别是打印一些关于未配置地址族的有用信息
-V, --version显示版本信息
-w, --raw显示 RAW 传输协议的连接状况
-x, --unix此参数的效果和指定 "-A unix" 参数相同
--ip, --inet此参数的效果和指定 "-A inet" 参数相同

4.常用示例

(1)列出所有端口信息(包括监听和未监听的)。
(a)列出所有端口

netstat -aActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENudp        0      0 *:bootpc                *:*Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket...

(b)列出所有 tcp 端口

netstat -at

(c)列出所有 udp 端口

netstat -au

(2)列出所有处于监听状态的连接。
(a)显示处于监听状态的所有连接。

netstat -lActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:ipp           *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTENudp        0      0 *:49119                 *:*

(b)只显示处于监听状态的 tcp 连接。

netstat -lt

(c)只显示处于监听状态的 udp 连接。

netstat -lu

(d)只显示处于监听状态的 unix 连接。

netstat -lx

(3)显示每个协议的统计信息。
(a)显示所有端口的统计信息。

netstat -sIp:11150 total packets received1 with invalid addresses0 forwarded0 incoming packets discarded11149 incoming packets delivered11635 requests sent outIcmp:0 ICMP messages received0 input ICMP message failed.Tcp:582 active connections openings2 failed connection attempts25 connection resets receivedUdp:1183 packets received4 packets to unknown port received......

(b)显示 TCP 端口的统计信息。

netstat -st

(c)显示 UDP 端口统计信息。

netstat -su

(4)显示进程ID和名称。

netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.234.178.144:43538    100.113.169.225:31415   ESTABLISHED -
tcp        0      0 10.234.178.144:33295    10.121.151.35:sd        ESTABLISHED 5354/VipMQAgent
tcp        0      0 10.234.178.144:21095    100.92.40.70:bacula-dir ESTABLISHED 25164/pgg_login_cme

(5)以数字形式显示主机、端口和用户名。这样可以加速输出,因为不用进行比对查询。

netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 10.234.178.144:43538    100.113.169.225:31415   ESTABLISHED
tcp        0      0 10.234.178.144:33295    10.121.151.35:9876      ESTABLISHED

如果只是不想让这三个名称中的一个被显示,使用以下命令

netsat -a --numeric-ports
netsat -a --numeric-hosts
netsat -a --numeric-users

(6)每隔一秒持续输出 netstat 信息。

netstat -c

(7)显示系统不支持的地址族 (Address Families)。

netstat --verbose

在输出的末尾,会有如下的信息

netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.

(8)显示核心路由信息。

netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 tunnat
9.0.0.0         10.175.82.193   255.0.0.0       UG        0 0          0 eth1
10.0.0.0        10.175.82.193   255.0.0.0       UG        0 0          0 eth1

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

(9)找出程序运行的端口。并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 10.175.82.204:61795     0.0.0.0:*               LISTEN      22006/./spp_pgg_dia
tcp        0      0 10.175.82.204:55011     0.0.0.0:*               LISTEN      3228/./spp_pgg_vod_
tcp        0      0 10.175.82.204:10883     0.0.0.0:*               LISTEN      125115/./spp_pgg_co

(10)显示网络接口列表。

netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth1      1500 32898847246      0      0 51410  34664370715      0      0      0 BMRU
lo       65536 57852071211      0      0 0      57852071211      0      0      0 LRU
tunnat    1480        0      0      0 0      103182603      0      0      0 OPRU

显示详细信息,可以使用ifconfig或者netstat -ie。

netstat -ie
Kernel Interface table
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.175.82.204  netmask 255.255.255.192  broadcast 10.175.82.255ether ec:f4:bb:e3:5b:b1  txqueuelen 10000  (Ethernet)RX packets 32900073183  bytes 21958447410400 (19.9 TiB)RX errors 0  dropped 0  overruns 51410  frame 0TX packets 34665611337  bytes 7109591105017 (6.4 TiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device memory 0x91d00000-91e00000
...

(11)IP 和 TCP 分析。
(a)查看本机连接的服务端口中连接数TOP的服务端IP。其中10.234.178.144:22为本地 IP 端口。

netstat -ant | grep "10.234.178.144:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -1024 100.112.141.2082 10.63.93.1592 10.191.131.382 10.101.242.112 100.92.40.702 100.113.141.2192 100.112.159.1631 9.68.178.531 10.191.134.831 10.139.233.47

第二列为服务端IP,左边是本地发起的连接数。
(b)查看 TCP 各种状态列表。

netstat -ant | awk '{print $6}' | sort | uniq
CLOSE_WAIT
established)
ESTABLISHED
Foreign
LISTEN
TIME_WAIT

(12)显示多播组信息。

netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth1            1      all-systems.mcast.net
tunnat          1      all-systems.mcast.net
lo              1      ff02::1
lo              1      ff01::1
eth0            1      ff02::1
eth0            1      ff01::1
eth1            1      ff02::1

netstat 的大部分功能都介绍了,如果想知道 netstat 更高级的功能,请参考 netstat 帮助手册。

5.输出结果整体说明

执行 netstat 命令输出:

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 9.77.9.126:47239        100.115.0.57:9922       ESTABLISHED
tcp        0     52 9.77.9.126:36000        10.19.88.119:58814      ESTABLISHED
tcp        0      0 9.77.9.126:37586        10.170.31.139:nsesrvr   ESTABLISHED
udp        0      0 TENCENT64:acp-proto     TENCENT64:openwebnet    ESTABLISHED
udp        0      0 TENCENT64:4216          TENCENT64:openwebnet    ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    307286163 /tmp/agent_cmd.sock
unix  2      [ ]         DGRAM                    9484     /var/run/nscd/socket
unix  2      [ ]         DGRAM                    275      /run/systemd/notify
...

从整体上看 netstat 的输出结果可以分为两个部分。一个是 Active Internet connections,二是 Active UNIX domain sockets。

(1)Active Internet connections。
Active Internet connections 表示活跃的网络连接,包括 UDP 和 TCP连接信息。其中"Recv-Q"和"Send-Q"指接收队列和发送队列,这些数字一般都应该是0,如果不是则表示数据发送和接收队列存在堆积,这种情况较为少见。Local Address 和 Foreign Address 表示本地和远端的IP、端口,State 表示连接的状态,主要有:

LISTEN:监听状态;
SYN_SEND:客户端在发送连接请求后进入SYN_SEND状态,等待服务端的连接请求和确认,即等待服务端发送SYN+ACK包;
SYN_RECV:服务端在收到客户端的连接请求后,发送SYN+ACK包后,进入SYN_RECV状态;
ESTABLISHED:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK后,客户端和服务器进入已建立连接状态;
FIN-WAIT-1:客户端发送连接中断请求后进入FIN-WAIT-1状态,等待服务端的确认;
FIN-WAIT-2:客户端接收到服务端的终端确认后进入FIN-WAIT-2状态,等待服务端的中断请求;
CLOSE-WAIT:服务端在确认客户端的中断请求后,进入CLOSE-WAIT状态,等待从本地用户发来的连接中断请求;
LAST-ACK:服务端向客户端发送连接中断请求后进入LAST-ACK状态,等待来自客户端的中断请求确认;
TIME-WAIT:客户端发送中断请求确认后进入TIME-WAIT状态,等待足够的时间(2MSL)以确保服务端接收到来自客户端的中断请求确认;
CLOSED:四次挥手结束后,客户端和服务端进入连接断开状态。

为了便于理解 TCP 建立连接的三次握手和断开连接的四次挥手过程中,涉及到的状态,附上两张便于理解的示意图。
三次握手:

四次挥手:

(2)Active UNIX domain sockets。
Active UNIX domain sockets,称为活跃 Unix 域套接字。
Proto 显示连接使用的协议;
RefCnt 表示使用数量,即通过此套接字连接的进程数;
Flags 显示的标志为SO_ACCEPTON(显示为 ACC)、SO_WAITDATA(W)或SO_NOSPACE(N)。如果相应的进程等待一个连接请求,那么SO_ACCECPTON用于未连接的套接字。其它标志通常并不重要。
Types显示套接口的类型,一般为DGRAM(数据报)、STREAM(数据流);
State 显示套接字当前的状态,此字段包含以下关键字之一:

FREE:套接字未分配。
LISTENING:套接字正在监听一个连接请求。除非设置 --listening (-l) 或者 --all (-a) 选项,否则不显示。
CONNECTING:套接字正要建立连接
CONNECTED:套接字已连接
DISCONNECTING:套接字已断开
(empty):套接字未连

I-Node 表示套接字的 Inode 节点号;
Path 表示套接字所在路径。


参考文献

[1] netstat(8) manual
[2] netstat.linux命令在线中文手册
[3] Linux netstat命令详解
[4] Linux命令之netstat
[5] TCP的三次握手与四次挥手(详解+动图)

Linux 命令(55)—— netstat 命令相关推荐

  1. Windows命令之netstat命令

    一.命令简介   netstat命令显示处于活动状态的 TCP 连接.计算机正在侦听的端口.以太网统计信息.IP 路由表.用于 IP.ICMP.TCP 和 UDP 协议的 IPv4 统计信息 () 和 ...

  2. Linux中使用netstat命令的基本操作,排查端口号的占用情况

    Linux中netstat命令详解 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息.Netstat用于显示与I ...

  3. 如何在Linux中使用netstat命令

    The term "netstat" stands for Network Statistics. In layman's terms, netstat command displ ...

  4. linux里netstat与ps,理解proc目录与linux进程、ps命令、netstat命令的关系

    零.proc目录简介 proc目录是虚拟文件系统(VFS)的一种实现,保存了进程信息(pid目录)和一些系统信息. 一.系统的信息 1.cpuinfo和meminfo两个文件 查看CPU和内存相关信息 ...

  5. 在Linux上使用netstat命令查证DDOS攻击的方法

    导读 DOS攻击或者DDOS攻击是试图让机器或者网络资源不可用的攻击.这种攻击的攻击目标网站或者服务通常是托管在高防服务器比如银行,信用卡支付网管,甚至根域名服务器. 服务器出现缓慢的状况可能由很多事 ...

  6. linux查看发起ddos攻击的ip,在Linux上使用netstat命令查证DDOS攻击的方法

    导读 DOS攻击或者DDOS攻击是试图让机器或者网络资源不可用的攻击.这种攻击的攻击目标网站或者服务通常是托管在高防服务器比如银行,信用卡支付网管,甚至根域名服务器. 服务器出现缓慢的状况可能由很多事 ...

  7. 如何在Linux上使用netstat命令查证DDOS***

    DoS***或者DDoS***是试图让机器或者网络资源不可用的***.这种***的***目标网站或者服务通常是托管在高防服务器比如***,信用卡支付网管,甚至根域名服务器,DOS***的实施通常迫使目 ...

  8. 每天一个linux命令(55)--at命令

    在Windows系统中,Windows提供了计划任务这一功能,在控制面板  ->  性能与维护  ->  任务计划,它的功能就是安排自动运行的任务.通过 ' 添加任务计划' 的一步步引导, ...

  9. 【Linux】一步一步学Linux——netstat命令(166)

    00. 目录 文章目录 00. 目录 01. 命令概述 02. 命令格式 03. 常用选项 04. 参考示例 05. 附录 01. 命令概述 netstat命令用于显示各种网络相关信息,如网络连接,路 ...

  10. Linux 命令之 netstat -- 查看网络状态信息/显示网络状态

    文章目录 命令介绍 常用选项 参考示例 (一)列出所有端口 (二)列出所有 TCP 端口 (三)列出所有 UDP 端口 (四)只显示监听端口 (五)只列出所有监听 tcp 端口 (六)只列出所有监听 ...

最新文章

  1. JSP第二次作业_4小题
  2. python3射线法判断点是否在多边形内
  3. 操作系统开发系列—2.进入32位保护模式
  4. java 流 复制文件_【Java】使用字节流复制文件
  5. 北斗导航 | GPS卫星导航技术重要人物简介
  6. lombok依赖_为什么有些公司不让用 Lombok ?不要问,自己看吧
  7. ValidateInput(false)与this.ValidateRequest = false无效的解决方案
  8. 早教机器人刷固件_E-puck2机器人系列教程-固件修复升级
  9. Delphi各个版本的官方下载地址,还在等机会
  10. linux版本qq的安装
  11. Lua教程(二):C++和Lua相互传递数据示例
  12. 使用cython加速代码运行
  13. pwnable kr 之 passcode
  14. java惊魂_我的世界孤儿院惊魂
  15. gamma分布python代码_python scipy stats.gamma用法及代码示例
  16. Ubuntu20.04之IDEA安装及idea项目运行演示,手把手教学|超级详细,建议收藏
  17. shared_ptr的引用计数原理
  18. Logstash 时区问题
  19. linux python2.7安装pymysql
  20. springboot feign too many bytes written executing

热门文章

  1. 阿里巴巴fastjson @JSONField 注解说明
  2. Bootstrap Table插件 页面跳转后再回来保存搜索的值
  3. python base64加解密
  4. 如何使用openssl生成RSA公钥和私钥对
  5. tushare 安装
  6. 官方数据:程序员年纪越大越出色、越稀有
  7. .NET Framework 1.1 中 SmartNavigation 的实现
  8. flask get和post
  9. 【Objective-C】栈(stack)和堆(heap)的区别
  10. 1077. Kuchiguse (20)-PAT甲级真题