Linux下netstat命令详解
⼀、netstat命令简述
netstat命令⽤来打印Linux系统的⽹络状态信息,包括⽹络连接(network connections)、路由表(routing tables)、⽹络接⼝设备统计信息(interface statistics)、伪装连接(masquerade connections)和多播成员信息(multicast memberships)等,可显⽰与IP、TCP、UDP和ICMP协议相关的统计数据,⼀般⽤于检验本机各端⼝的⽹络连接情况。。
⼆、输出解释
在linux下直接执⾏netstat会得到如下结果
从整体上看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表⽰连接的状态,主要有:
    ESTABLISHED:已建⽴连接的状态
    LISTEN :侦听来⾃远⽅的TCP端⼝的连接请求
    SYN_SENT:发出主动连接(SYN)的数据包
    SYN_RECV :接收到⼀个要求连接的主动连接数据包
    FIN_WAIT1 :该套接字服务已中断,该连接正在断线中
    FIN_WAIT2:该连接已挂断,正在等待对⽅主机响应断线确认的数据包
    TIME_WAIT :连接已挂断,但socket还在⽹络上等待结束
    CLOSE_WAIT:等待从本地⽤户发来的连接中断请求
为了⽅便理解上述状态具体内容,画出客户端向服务器请求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(数据流);
I-Node表⽰套接字的Inode节点号;
Path表⽰套接字所在路径。
State显⽰套接字当前的状态,此字段包含以下关键字之⼀: 
  FREE:套接字未分配。
  LISTENING:套接字正在监听⼀个连接请求。除⾮设置 --listening (-l) 或者 --all (-a) 选项,否则不显⽰。
  CONNECTING:套接字正要建⽴连接
  CONNECTED:套接字已连接
  DISCONNECTING:套接字已断开
  (empty):套接字未连
三、常⽤netstat相关命令
命令格式:
netstat[<options>]
语法选项:
-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"参数相同。
netstat -ntlp //查看当前所有tcp端⼝
netstat -ntulp |grep 80 //查看所有80端⼝使⽤情况
netstat -an | grep 3306 //查看所有3306端⼝使⽤情况
netstat -lanp //查看⼀台服务器上⾯哪些服务及端⼝
ps -ef |grep mysqld //查看⼀个服务有⼏个端⼝。⽐如要查看mysqld
netstat -pnt |grep :3306 |wc //查看某⼀端⼝的连接数量,⽐如3306端⼝netstat -anp |grep 3306 //查看某⼀端⼝的连接客户端IP ⽐如3306端⼝
常⽤的命令如下图:
四、常⽤命令⽰例
1.列出所有端⼝信息(包括监听和未监听的)
netstat -a
显⽰信息:
hadoop@master:~$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address        State      tcp        00 localhost:domain        0.0.0.0:*              LISTEN
tcp        000.0.0.0:ssh            0.0.0.0:*              LISTEN
tcp        00 localhost:ipp          0.0.0.0:*              LISTEN
tcp        00 localhost:mysql        0.0.0.0:*              LISTEN
tcp6      00 [::]:ssh                [::]:*                  LISTEN
tcp6      00 ip6-localhost:ipp      [::]:*                  LISTEN
udp        00 localhost:domain        0.0.0.0:*
udp        000.0.0.0:454650.0.0.0:*
udp        000.0.0.0:ipp            0.0.0.0:*
udp        000.0.0.0:mdns            0.0.0.0:*
udp6      00 [::]:56383              [::]:*
udp6      00 [::]:mdns              [::]:*
raw6      00 [::]:ipv6-icmp          [::]:*                  7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags      Type      State        I-Node  Path
unix  2      [ ACC ]    STREAM    LISTENING    40098    @/tmp/.ICE-unix/2304 unix  2      [ ]        DGRAM                    37416    /run/user/1001/systemd/notify 2.列出所有的tcp协议的端⼝
netstat -at
显⽰信息:
hadoop@master:~$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address        State
tcp        00 localhost:domain        0.0.0.0:*              LISTEN
tcp        000.0.0.0:ssh            0.0.0.0:*              LISTEN
tcp        00 localhost:ipp          0.0.0.0:*              LISTEN
tcp        00 localhost:mysql        0.0.0.0:*              LISTEN
tcp        01 master:5566036.75.98.:https SYN_SENT
tcp        00 master:45170            server-13-32-52-1:https ESTABLISHED tcp        01 master:5566236.75.98.:https SYN_SENT
tcp        00 master:55696            ec2-52-24-186-236:https ESTABLISHED tcp6      00 [::]:ssh                [::]:*                  LISTEN
tcp6      00 ip6-localhost:ipp      [::]:*                  LISTEN
3.显⽰每个协议的统计信息
netstat -s
netstat命令详解linux
显⽰信息:
hadoop@master:~$ netstat -s
Ip:
Forwarding: 2
2700 total packets received
63 with invalid addresses
0 forwarded
0 incoming packets discarded
2635 incoming packets delivered
2445 requests sent out
20 outgoing packets dropped
Icmp:
43 ICMP messages received
0 input ICMP message failed
ICMP input histogram:
destination unreachable: 43
51 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 51
IcmpMsg:
InType3: 43
OutType3: 51
4.显⽰核⼼路由信息
netstat -r
显⽰信息:
hadoop@master:~$ netstat -r
Kernel IP routing table
Destination    Gateway        Genmask        Flags  MSS Window  irtt Iface default        _gateway        0.0.0.0        UG        000 ens33
192.168.81.00.0.0.0255.255.255.0  U        000 ens33
5.持续输出 netstat 信息。netstat -c将每隔⼀秒输出⽹络信息
netstat -c
6. 出程序运⾏的端⼝。并不是所有的进程都能到,没有权限的会不显⽰,使⽤ root 权限查看所有的信息
root@master:/home/hadoop# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name
tcp        00127.0.0.53:530.0.0.0:*              LISTEN      964/systemd-resolve
tcp        000.0.0.0:220.0.0.0:*              LISTEN      1640/sshd
tcp        00127.0.0.1:6310.0.0.0:*              LISTEN      1149/cupsd
7. 显⽰多播组信息
netstat -g
显⽰信息:
root@master:/home/hadoop# netstat -g
IPv6/IPv4 Group Memberships
Interface      RefCnt Group
--------------- ------ ---------------------
lo              1224.0.0.251
lo              1      ast
ens33          1224.0.0.251
ens33          1      ast
lo              1      ff02::fb
lo              1      ip6-allnodes
lo              1      ff01::1
ens33          1      ff02::fb
ens33          1      ff02::1:ffae:db63
ens33          2      ip6-allnodes
ens33          1      ff01::1
8.显⽰接⼝信息
netstat -i
显⽰:
root@master:/home/hadoop# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33    150038560002715000 BMRU
lo      65536766000766000 LRU
9.禁⽌域名解析
正常情况输出结果:
root@master:/home/hadoop# netstat -ltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name
tcp        00 localhost:domain        0.0.0.0:*              LISTEN      964/systemd-resolve
tcp        000.0.0.0:ssh            0.0.0.0:*              LISTEN      1640/sshd
tcp        00 localhost:ipp          0.0.0.0:*              LISTEN      1149/cupsd
tcp        00 localhost:mysql        0.0.0.0:*              LISTEN      1704/mysqld
tcp6      00 [::]:ssh                [::]:*                  LISTEN      1640/sshd
禁⽌域名解析后输出结果:
root@master:/home/hadoop# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name
tcp        00127.0.0.53:530.0.0.0:*              LISTEN      964/systemd-resolve
tcp        000.0.0.0:220.0.0.0:*              LISTEN      1640/sshd
tcp        00127.0.0.1:6310.0.0.0:*              LISTEN      1149/cupsd
tcp        00127.0.0.1:33060.0.0.0:*              LISTEN
我们发现在local address 即主机地址这⼀栏中,如果没有带n选项,会将套接字所对应的域名解析出来,如果加上n选项,那么就不会显⽰,即禁⽌域名解析的功能,这样做有助于提⾼查询速度,因为减少了对主机域名的查询。
netstat的⼤部分功能都介绍了,如果想知道netstat更⾼级的功能,请阅读它的⼿册~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。