theme: condensed-night-purple
小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
在构建生产服务器时,我们有的时候需要统计网络接口状况,比如TCP、UDP端口开放的情况,这时我们需要用到
netstat
。
一、命令介绍
netstat
命令最主要的功能是对网络信息进行统计,其实这个命令的拼写本身就能看出不少东西,netstat
=network
+statistics
。network
代表“网络”,statistics
代表“统计”,所以两者的结合就代表其能提供的功能。说的更加通俗易懂一点,其实这个命令能让用户了解你的电脑正在网络上做什么。
二、用法介绍
netstat 可以显示很多信息,但是我们可以用参数来控制显示信息的种类和样式。 netstat -i 我们常用的可选项参数就是-i
,输出会显示一张统计列表,列出你电脑的所有网络接口的一些统计信息。 $netstat -i
可以清晰的看出列出了四条信息,docker0
和veth171093d
都是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
参数 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
可选项参数。