一、什么是netstat命令
netstat命令用于在终端监控TCP/IP网络,是非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
二、语法
netstat [可选参数]
可通过netstat -help/-h显示可选参数
-r, --route display routing table -I, --interfaces=<Iface> display interface table for <Iface> -i, --interfaces display interface table -g, --groups display multicast group memberships -s, --statistics display networking statistics (like SNMP) -M, --masquerade display masqueraded connections -v, --verbose be verbose -W, --wide don't truncate IP addresses -n, --numeric don't resolve names --numeric-hosts don't resolve host names --numeric-ports don't resolve port names --numeric-users don't resolve user names -N, --symbolic resolve hardware names -e, --extend display other/more information -p, --programs display PID/Program name for sockets -o, --timers display timers -c, --continuous continuous listing -l, --listening display listening server sockets -a, --all display all sockets (default: connected) -F, --fib display Forwarding Information Base (default) -C, --cache display routing cache instead of FIB -Z, --context display SELinux security context for sockets
<Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
{-x|--unix} --ax25 --ipx --netrom
三、常用语法举例
netstat -at 查看所有的TCP端口
[meijl@localhost ~]$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 promote.cache-dn:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN
tcp 0 0 promote.cache-dns:39126 server-54-192-151:https ESTABLISHED
tcp 0 0 promote.cache-dns:54514 a96-17-180-137.dep:http ESTABLISHED
tcp 0 0 promote.cache-dns:60756 ec2-52-39-168-38.:https ESTABLISHED
tcp 0 0 promote.cache-dns:54974 183.232.231.172:https ESTABLISHED
tcp 0 0 promote.cache-dns:52004 ec2-35-166-89-106:https ESTABLISHED
tcp 0 0 promote.cache-dns:54976 183.232.231.172:https ESTABLISHED
tcp 0 0 promote.cache-dns:47396 117.18.237.29:http ESTABLISHED
tcp 0 0 promote.cache-dns:52270 36.156.36.32:https ESTABLISHED
tcp 0 0 promote.cache-dns:54968 183.232.231.172:https ESTABLISHED
tcp 0 0 promote.cache-dns:52274 promote.cache-dns.:http ESTABLISHED
tcp 0 62 promote.cache-dns:51788 112.25.86.31:https LAST_ACK
tcp 0 0 promote.cache-dns:54972 183.232.231.172:https ESTABLISHED
tcp 0 0 promote.cache-dns:51992 ec2-35-166-89-106:https ESTABLISHED
tcp 0 0 promote.cache-dns:54980 183.232.231.172:https ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:ipp [::]:* LISTEN
tcp6 0 0 [::]:sunrpc [::]:* LISTEN
执行结果第一行为:Active Internet connections (servers and established),即为有源tcp连接
Proto:协议名,可见当前查看为tcp端口
recv-Q:网络接收队列
表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,当前为0。如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了DOS拒绝服务攻击;
send-Q:网路发送队列
数值表示对方没有收到的数据或者说没有Ack确认的,还在本地缓冲区,当前有发送队列不为0,因为使用浏览器访问了www.baidu.com,在本地缓存中还有数据包没有发送完毕或还未收到确认。
以上两个数值通常应该为0,如果不为0可能是有问题的。再次执行netstat -at可以看到当前send-Q的值已经全变为0
Local Address
表示侦听本机通信的本地socket
Foreign Address
表示侦听与本机端口通信的外部socket。与Local Address相同
State
state列共有12种状态
当前有三种状态
LISTEN:指socket状态为listen,侦听tcp端口的链接请求
ESTABLISHED:代表一个打开的连接,此时连接双方可以进行或已经在数据交互。
LAST_ACK:被动关闭端的主机应用程序一段时间后接收到文件结束符,将调用CLOSE关闭连接。随后它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK。