【奇技淫巧】Linux | 统计网络-netstat

2,977 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在构建生产服务器时,我们有的时候需要统计网络接口状况,比如TCP、UDP端口开放的情况,这时我们需要用到netstat

一、命令介绍

netstat命令最主要的功能是对网络信息进行统计,其实这个命令的拼写本身就能看出不少东西,netstat=network+statisticsnetwork代表“网络”,statistics代表“统计”,所以两者的结合就代表其能提供的功能。说的更加通俗易懂一点,其实这个命令能让用户了解你的电脑正在网络上做什么

二、用法介绍

netstat 可以显示很多信息,但是我们可以用参数来控制显示信息的种类和样式。 netstat -i 我们常用的可选项参数就是-i,输出会显示一张统计列表,列出你电脑的所有网络接口的一些统计信息。

$netstat -i

图片.png

可以清晰的看出列出了四条信息,docker0veth171093d都是docker相关的网络接口信息。eth0是以太网接口信息,lo表示 Local Loopback(本地回环)。

后面几列的信息,RX 是 receive(表示“接收”)的缩写,TX 是 transmit(表示“发送”)的缩写,这种缩写形式在通信方面最为常见。

  • RX-OK : 在此接口接收的包中正确的包数。OK 表示“没问题,好的”;
  • RX-ERR : 在此接口接收的包中错误的包数。ERR 是 error 的缩写,表示“错误”;
  • RX-DRP : 在此接口接收的包中丢弃的包数。DRP 是 drop 的缩写,表示“丢掉”;
  • RX-OVR : 在此接口接收的包中没能接收的包数。OVR 是 over 的缩写,表示“结束”。

类似的,TX-OK、TX-ERR、TX-DR 和 TX-OVR 则表示在此接口放送的包中对应的包数。

MTU是 Maximum Transmission Unit 的缩写,表示“最大传输单元”,是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
netstat -uta 这个命令是列出所有开启的网络连接。

$netstat -uta

图片.png

参数 uta分别表示:

  • -u : 显示 UDP 连接(u 是 udp 的首字母)
  • -t : 显示 TCP 连接(t 是 tcp 的首字母)
  • -a : 不论连接的状态如何,都显示(a 是 all 的首字母)
    如果只显示 TCP 连接的信息:
$netstat -ta

或者只显示 UDP 连接的信息(不常用):

$netstat -ua

state(“状态”)那一列的信息,有但不仅限于以下的状态:

  • ESTABLISHED:与远程电脑的连接已建立,establish 是英语“建立”的意思;
  • TIME_WAIT : 连接正在等待网络上封包的处理,一旦处理完毕就开始关闭连接。time 是英语“时间”的意思,wait 是英语“等待”的意思;
  • CLOSE_WAIT :远程服务器中止了连接(也许你太久没什么动作,处在不活跃状态)。close 是英语“关闭”的意思;
  • CLOSED :连接没有被使用,关闭了;
  • CLOSING :连接正在关闭,但有些数据还没有发送完毕;
  • LISTEN :监听着可能进入的连接。此时连接还没有被使用。listen 是英语“听”的意思。

上面就大概是是netstat主要的内容,另外,假如你想让端口信息以数字的形式显示,可以使用-n可选项参数。