Netstat命令详解

简介

Netstat命令用于显示各个网络相关的信息,如网络连接,路由表接口状态等等...

输出信息含义

执行netstat之后输出信息大概为

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 iZbp1ge7stkcnj504:45846 100.100.30.26:http      ESTABLISHED
tcp        0     36 iZbp1ge7stkcnj5044o:ssh 163.125.178.122:59700   ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    12319    /var/run/chrony/chronyd.sock
unix  2      [ ]         DGRAM                    10378    /run/systemd/shutdownd

主要为两个部分

  • Active Internet connections,称为源TCP连接,其中"Recv-Q"和"Send-Q"指的是接受队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
  • Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
    Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名

命令选项

  1. 显示所有连接
    -a 显示Tcp,udp和unix协议下所有套接字的所有链接
  2. 只显示TCP或UDP的连接
    -t 显示TCP协议连接
    -u 显示UDP协议连接
  3. -n 禁止反向域名解析,加快查询速度
    默认情况下 netstat 会通过反向域名解析查找每个 IP 地址对应的主机名,会降低查找速度。同时会显示出别名。-n 选项可以禁用此行为,并且用户 ID 和端口号也优先使用数字显示。
  4. -l 只列出监听中的连接
    -l 选项可以只列出正在监听的连接(不能和 a 选项同时使用)
  5. -p 获取进程名,进程号以及用户ID
    -p 选项可以查看进程信息(此时 netstat 应尽量运行在 root 权限之下,否则不能得到运行在 root 权限下的进程名)

实例

  1. 显示所有TCP的链接
netstat  -at
  1. 禁止反向域名解析,加快查询速度
netstat  -ant
  1. 只是列出监听中的连接
netstat -tnl

注意这里不要使用-a选项,否则会显示所有链接,而不仅仅是监听的端口

  1. 获取进程名,进程号以及用户ID
    使用-p查看进程信息
netstat -nltp

和lsof的区别

  1. netstat是显示网络的详情信息,没有权限控制。
    lsof本质上是一个列出当前系统打开文件的工具

  2. losf能看到pid和用户,可以找到哪个进程占用了这个端口

根据端口port查看进程

netstat -nap | grep port
lsof -i:port

你可能感兴趣的:(Netstat命令详解)