10.9 查看网络状态

10.9 查看网络状态

netstat 是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
netstat 是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
如果你的计算机有时候接收到的数据包导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据包。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用netstat查一查为什么会出现这些情况了。
netstat 命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。使用时如果不带参数,netstat显示活动的 TCP 连接。

netstat 命令用来打印网络连接状况、系统所开放端口、路由表等信息。最常用的关于netstat的命令就是这个 netstat -lnp (查看当前系统启动哪些端口)以及 netstat -an (查看网络连接状况)这两个命令非常有用。
正常情况下,一台机器是没有任何的端口监听,也就意味着它没有办法和其他的机器通信。要想提供web服务,让其他人访问服务器和网站,就需要监听一个端口。那么怎么查看监听端口?输入命令 netstat -lnp ,回车,见下图,

只查看tcp和udp的命令,见下图,

netstat -ltnp    查看tcp

netstat -lunp    查看udp

netstat -ltunp   查看tcp和udp

还有一个命令: netstat -an   查看tcp/ip状态

叫TCP/IP的“三次握手,四次挥手”。“三次握手,四次挥手”是重点。
上图中常见状态即连接状态。在原模式中没有状态,在用户数据报协议中也经常没有状态,于是状态列可以空出来。若有状态,通常取值为:
LISTEN
侦听来自远方的TCP端口的连接请求
SYN-SENT
在发送连接请求后等待匹配的连接请求
SYN-RECEIVED
在收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED
代表一个打开的连接,表示正在通信。这个数值需要关注,如果很大的话,说明系统现在很忙。通常情况下,1000以内,服务器都是可以接受的。
FIN-WAIT-1
等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2
从远程TCP等待连接中断请求
CLOSE-WAIT
等待从本地用户发来的连接中断请求
CLOSING
等待远程TCP对连接中断的确认
LAST-ACK
等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT
等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED
没有任何连接状态

分享一个小技巧,可以查看所有的状态的数字,输入命令 netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key, "\t", sta[key]}' ,回车,见下图,

还有一个命令 ss ,它与 netstat 类似,见下图,

这个命令有个缺点,不会显示进程的名字,netstat 命令就可以。

netstat -lnp 查看当前系统启动哪些端口
netstat -an 查看网络连接状况
netstat -ltnp 查看当前系统启动的tcp端口
netstat -lunp 查看当前系统启动的udp端口
netstat -ltunp 查看当前系统启动的tcp和udp端口
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key, "\t", sta[key]}' 可以查看所有的状态的数字。
课件地址在 centos7.aminglinux.com 
ss -an 与 netstat 异曲同工,都是查看状态的,不过它不会显示进程的名字
ss -an | grep -i listen 查看状态为 listen 的情况

猜你喜欢

转载自my.oschina.net/u/3803395/blog/1801863