netstat命令
输出网络连接,路由表,接口统计信息,伪装连接,以及多播的成员
格式
netstat [address_family_options] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--sym‐bolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c]
netstat {--route|-r} [address_family_options] [--extend|-e[--extend|-e]] [--verbose|-v] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]
netstat {--interfaces|-i} [--all|-a] [--extend|-e[--extend|-e]] [--verbose|-v] [--program|-p] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continu‐ous|-c]
netstat {--groups|-g} [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]
netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]
netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w]
netstat {--version|-V}
netstat {--help|-h}
其中的地址族选项address_family_options如下:
[-4] [-6] [--protocol={inet,unix,ipx,ax25,netrom,ddp}[,...]] [--unix|-x] [--inet|--ip] [--ax25] [--ipx] [--netrom] [--ddp]
命令使用总结
netstat 命令类型选项 指定地址族 具体的细节选项
总的来说,netstat其实不是一个简单的工具,可以看做是一个工具集合,其中有很多个常用的命令。而这些命令的不同功能取决于命令类型选项。
- netstat -r 输出内核路由表相关的信息
- netstat -s 输出各个协议的统计信息
- netstat -g 输出多播的组成员信息
- netstat -i 输出所有的网卡接口
- netstat 这个其实是用得最多的,就是什么类型参数都没有,这样就是用来查看打开的套接字的列表的。也就是看当前系统中套接字的状态的。
描述
netstat打印Linux网络子系统的信息。打印的信息的类型由第一个参数控制,详情如下:
- (none)
默认情况下,netstat显示打开的套接字的列表。如果不指定任何地址族,那么所有配置的地址族的活跃的套接字都会被打印出来。 - –route,-r
展示内核路由表,可以参考route(8)命令。netstat -r 或者 route -e生成同样的输出。 - –groups, -g
展示IPV4或者IPV6的多播的组成员信息。 - –interfaces, -i
展示所有的网络接口的表。 - –masquerade, -M
展示所有伪装的连接 - –statistics, -s
展示每个协议的统计信息。
选项
- –verbose,-v
- 通过verbose来告诉用户发生了什么,尤其对于那些没有配置的地址族可以打印一些有用的信息出来。
- –wide, -W
- 通过满足输出内容需要的宽度来实现不截断IP地址。
- –numeric, -n
- –numeric-hosts
- –numeric-ports
- –numeric-users
- –protocol=family, -A
- 指定要显示的连接的地址族
- family参数是一个逗号(,)分割的地址族关键词,如inet,unix,ipx,ax25,netrom,ddp
- 这个参数等同于使用了–inet, --unix, --ipx, --ax25, --netrom, --ddp选项
- inet地址族包含了raw,udp,tcp协议的套接字
- -c, --continuous
- netstat持续每秒打印选择的信息
- -e, --extend
- 展示附加的信息。两次使用这个选项可以获取最大的详情。
- -o, --timers
- 包含跟网络定时器相关的信息
- -p, --program
- 展示这个socket属于的那个程序的PID以及名字
- -l, --listening
- 仅仅展示在监听的套接字, 这个是被默认忽略的部分
- -a, --all
- 展示在监听的和非监听的套接字
- 带有–interfaces选项的时候,会展示没有起来的接口
- -F
- 从FIB中打印路由信息 这个是默认设置的
- -C
- 从route的缓存中打印路由信息
输出内容
活跃的Internet连接(TCP/UDP/raw)
- Proto
- 套接字使用的协议 (tcp/upd/raw)
- Recv-Q
- 连接到这个套接字的应用程序没有拷贝走的字节的数量。
- Send-Q
- 远程主机还没有接收的字节数。
- Local Address
- 套接字本地端的地址和端口号码。除非指定了-n,否则套接字的地址解析为标准主机名,端口号翻译成对应的服务名。
- Foreign Address
- 套接字远程端的地址和端口号码,同上。
- State
- 套接字的状态,UDP和raw的套接字都没有状态这种东西,直接留空。
- 通常这个可以是如下的几个值:
- ESTABLISHED 套接字已经建立连接
- SYN_SENT 套接字正在积极地建立连接
- SYN_RECV 从网络中收到了连接请求
- FIN_WAIT1 socket已经关闭,连接正在关闭中
- FIN_WAIT2 连接已经关闭,套接字正在等远端的关闭。
- TIME_WAIT 套接字正在等待处理还在网络中的包。
- CLOSE 套接字没有使用的状态
- CLOSE_WAIT 对端已经关闭,等本段close
- LAST_ACK 对端已经关闭,并且本地的套接字也关闭了,等待最后的ack
- LISTEN 套接字正在等即将到来的连接,这些套接字不含在输出中,除非你指定-l或者-a
- CLOSING 两边的socket都同时关闭,我们的最后的数据还没发完
- UNKNOWN socket状态未知
- User
- socket的拥有者的用户名或者是uid
- PID/Program name
- 对于你不拥有的套接字需要用超级用户特权来看信息
- 拥有这个套接字的进程的PID和进程名
- Timer
活跃的Unix域套接字
- Proto
- 这个socket用的协议,就是unix
- RefCnt
- 引用计数,也就是附加到这个socket上的进程数
- Flags
- 标记字段有SO_ACCEPTON(展示为ACC),SO_WAITDATA或者SO_NOSPACE,后两者都展示为(N)。
- SO_ACCECPTON用于如果关联的进程等待连接请求的情况,也就是未连接的套接字。
- Type
- 有如下的套接字访问类型:
- SOCK_DGRAM
- 套接字用于数据报模式,也就是无连接的模式
- SOCK_STREAM
- 流式套接字,也就是有连接的
- SOCK_RAW
- 原始套接字
- SOCK_RDM
- This one serves reliably-delivered messages.
- SOCK_SEQPACKET
This is a sequential packet socket. - SOCK_PACKET
Raw interface access socket.
- SOCK_DGRAM
- 有如下的套接字访问类型:
- State
- 这个字段包含如下的一个关键字:
- FREE The socket is not allocated
- LISTENING
- CONNECTING
- LISTENING
- 正在监听连接请求
- CONNECTING 正在建立一个连接
- CONNECTED 套接字连接上了
- DISCONNECTING 正在断开连接
The socket is disconnecting. - (empty) 为空表示这个套接字没有连接到任何其他的一个
- 这个字段包含如下的一个关键字:
- PID/Program name
- Path
- 这个是进程把socket跟哪个路径关联起来
跟此命令相关的文件
/etc/services – The services translation file
/proc – Mount point for the proc filesystem, which gives access to kernel status information via the following files.
/proc/net/dev – device information
/proc/net/raw – raw socket information
/proc/net/tcp – TCP socket information
/proc/net/udp – UDP socket information
/proc/net/igmp – IGMP multicast information
/proc/net/unix – Unix domain socket information
/proc/net/ipx – IPX socket information
/proc/net/ax25 – AX25 socket information
/proc/net/appletalk – DDP (appletalk) socket information
/proc/net/nr – NET/ROM socket information
/proc/net/route – IP routing information
/proc/net/ax25_route – AX25 routing information
/proc/net/ipx_route – IPX routing information
/proc/net/nr_nodes – NET/ROM nodelist
/proc/net/nr_neigh – NET/ROM neighbours
/proc/net/ip_masquerade – masqueraded connections
/proc/net/snmp – statistics