one_day_one_linuxCmd---netstat命令
《坚持每天学习一个 linux 命令,今天我们来学习 netstat 命令》
前言:netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态等,还可以很方便查看本地机器上的外部连接及本地和远程系统连接的状态。
我们先来看一下执行 netstat 命令结束后的输出信息:
从整体上看,输出的信息主要可以分为两部分:
1,Active Internet connections: 称为有源 TCP 连接,其中Recv-Q 和 Send-Q 分别表示接收队列和发送队列,这些数字一般都应该为 0,如果不是表示网络包正在缓冲队列中堆积,这种情况只能在非常少的情况下能看到。
2,Active UNIX domain socket: 称为有源 Unix域套接口(和网络套接字一样,但只能用于本机通信,性能可以提高一倍),Proto 表示连接所使用的协议,RefCnt 表示连接到本套接口上的进程号,Type 显示套接口的类型,State 显示套接口当前的状态,Path 表示连接到套接口的其它进程使用的路径名。
options:
-a : 显示所有选项,默认不显示 LISTEN 相关
-t : 仅显示 tcp 相关选项
-u : 仅显示 udp 相关选项
-n : 禁止显示别名,能显示数字的全部转换成数字(如将 localhost 显示为 192.168.175.137)
-l : 仅列出 LISTEN 的服务状态
-r : 显示路由信息,路由表
-e : 显示扩展信息,如 uid 等
-s : 按各个协议进行统计
-c : 每隔一个固定时间,执行该 netstat 命令
note : LISTEN 和 LISTENING 的状态只有用 -l 或者 -a 才能看到
step 1 : 列出端口
# 列出所有端口 $ netstat -a # 列出所有 tcp 端口 $ netstat -at # 列出所有 udp 端口 $ netstat -au # 列出监听的端口 $ netstat -l # 列出所有监听 tcp 的端口 $ netstat -lt # 列出所有监听 udp 的端口 $ netstat -lu # 列出所有监听 UNIX 端口 $ netstat -lx
step 2 : 统计端口的统计信息
# 统计端口统计信息 $ netstat -s # 显示 TCP 端口统计信息 $ netstat -st # 显示 UDP 端口统计信息 $ netstat -su
step 3 : 在 netstat 输出中显示 PID 和进程名称,这样我们就可以很方便的发现特定端口运行的程序。
# 显示特定端口运行的程序 $ netstat -p # -p 参数可以与其他参数一同使用 # 显示 tcp 连接中的端口所运行的程序 $ netstat -pt
注1:在用 netstat 命令时,可能会看到 Local Address 和 Foreign Address 都是自己的本机地址,这是因为自己的机器是可以连接到自己的机器的,比如开了代理然后自己浏览器连接到代理服务器上。
注2 : netstat 中的 0.0.0.0 的意思是本机上可用的任意地址,比如 0.0.0.0:13550 表示本机上所有地址的 13550 端口,这样多 ip 计算机就不用重复显示了; TCP 0.0.0.0:80 表示在所有的可用接口上监听 TCP 80 号端口;另外,0.0.0.0 为默认路由,即到达不再路由表里面的网段的包都走这条默认路由。
参考资料:
https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html