netstat的使用
netstat查询机器使用、监听的端口的具体情况 。
netstat查看linux服务器网络连接状态 维护linux服务器时,要经常查看服务器的网络连接状态,netstat是一个非常优秀的工具,通过netstat可以显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
netstat -[rn] <==与路由有关的参数
netstat -[antulpc] <==与网路介面有关的参数参数: 与路由 (route)
有关的参数说明:
-r :列出路由表(route table),功能如同 route 这个指令;
-n :不使用主机名称与服务名称,使用 IP 与 port number ,如同 route
-n 与网路介面有关的参数: -a :列出所有的连线状态,一般有监听、已经建立的连接等,详见下表的状态说明 ,默认只显示已经连接的端口号。
-t :仅列出 TCP 封包的连线;
-u :仅列出 UDP 封包的连线;
-l :仅列出有在 Listen (监听) 的服务之网路状态;
-p :列出 PID 与 Program 的档名,与该端口使用相关的程序以及其pid 。
-c :可以设定几秒钟后自动更新一次,例如 -c 5 每五秒更新一次网路状态的显示;
-v :显示正在进行的工作。
下面这个语句是一个非常好的查看TCP连接状态的语句:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
返回结果示例:
LAST_ACK 5 SYN_RECV 30 ESTABLISHED 1597 FIN_WAIT1 51 FIN_WAIT2 504 TIME_WAIT 1057
以下是各种状态的描述
CLOSED:无连接是活动的或正在进行
ESTABLISED:已建立连线的状态;
SYN_SENT:发出主动连线 (SYN 标志) 的连线封包;
SYN_RECV:接收到一个要求连线的主动连线封包;
FIN_WAIT1:该插槽服务(socket)已中断,该连线正在断线当中;
FIN_WAIT2:该连线已挂断,但正在等待对方主机回应断线确认的封包;
TIME_WAIT:该连线已挂断,但 socket 还在网路上等待结束;
LISTEN:通常用在服务的监听 port !可使用『 -l 』参数查阅。
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉