转自:https://segmentfault.com/a/1190000022686430
1.介绍
netstat是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
输出分为两个部分,
- Active Internet connections 有源TCP连接。协议是tcp,"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
- Local Address代表本机IP地址和打开的端口号;
- Foreign Address是远程计算机IP地址和端口号;
- State:
- LISTENING 时表示处于侦听状态,就是说该端口是开放的,等待连接,但还没有被连接;
- ESTABLISHED 的意思是建立连接。表示两台机器正在通信。
- CLOSE_WAIT 对方主动关闭连接或者网络异常导致连接中断,TIME_WAIT 我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT;
- Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
其中,RefCnt:表示连接到本套接口上的进程号。
2.参数
- -a (all) 显示所有选项,将处于LISTEN的tcp连接也显示出来,因为默认是不显示LISTEN状态的。
- -t (tcp) 仅显示tcp相关选项。-u (udp) 仅显示udp相关选项。-l 仅列出有在 Listen (监听) 的服务状态。(LISTEN和LISTENING的状态只有用-a或者-l才能看到。)
- -n 拒绝显示别名,能显示数字的全部转化成数字。【如果使用这个参数的话,上图中local/foreign address都会变为ip,其实不太容易观察 】
- -p 显示建立相关链接的程序名.。【使用sudo可以观察到】
- -o可以查看和连接相关的定时器信息:https://blog.csdn.net/young_0609/article/details/103210340
最后的timer列相关字段含义如下:
- keepalive keepalive的时间计时;
- on 重发的时间计时;
- off 没有时间计时;
- timewait 等待时间计时