Menu Close

使用netstat查看tcp连接、udp连接

1. 查看tcp、udp连接

~]# netstat -nt    --->>>查看tcp连接,注意看第二列和第三列
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        1      0 192.168.11.82:8080      192.168.11.81:56208     CLOSE_WAIT
tcp        0      0 192.168.11.82:22        172.16.69.49:6160       ESTABLISHED
tcp        1      0 192.168.11.82:8080      192.168.11.81:56203     CLOSE_WAIT
tcp        1      0 192.168.11.82:8080      192.168.11.81:56201     CLOSE_WAIT
tcp        1      0 192.168.11.82:8080      192.168.11.81:56204     CLOSE_WAIT
tcp        1      0 192.168.11.82:8080      192.168.11.81:56205     CLOSE_WAIT
tcp        1      0 192.168.11.82:8080      192.168.11.81:56202     CLOSE_WAIT
tcp        0     36 192.168.11.82:22        172.16.69.49:6291       ESTABLISHED

~]# netstat -nua  --->>>查看udp连接,注意看第二列和第三列
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 0.0.0.0:5353            0.0.0.0:*
udp        0      0 0.0.0.0:48638           0.0.0.0:*
udp        0      0 192.168.122.1:53        0.0.0.0:*
udp        0      0 0.0.0.0:67              0.0.0.0:*
udp        0      0 0.0.0.0:111             0.0.0.0:*
udp        0      0 127.0.0.1:323           0.0.0.0:*
udp        0      0 0.0.0.0:777             0.0.0.0:*
udp6       0      0 :::111                  :::*
udp6       0      0 ::1:323                 :::*
udp6       0      0 :::777                  :::*

如下取自man netstat的结果:
Recv-Q
Established: The count of bytes not copied by the user program connected to this socket.
Listening: Since Kernel 2.6.18 this column contains the current syn backlog.
Send-Q
Established: The count of bytes not acknowledged by the remote host.
Listening: Since Kernel 2.6.18 this column contains the maximum size of the syn backlog.

Recv-Q Send-Q分别表示网络接收队列、网络发送队列。Q是Queue的缩写。
recv-Q 表示网络接收队列
表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()
如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。

send-Q 表示网路发送队列
对方没有收到的数据或者说没有Ack的,还是本地缓冲区.
如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。

2. TCP连接状态说明

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
或者使用
netstat -an|awk '/tcp/ {print $6}'| sort | uniq -c

TIME_WAIT 8947
FIN_WAIT1 15
FIN_WAIT2 1
ESTABLISHED 55
SYN_RECV 21
CLOSING 2
LAST_ACK 4

TCP连接状态详解:

状态(state) 说明----------------------------------------------------------------------------
LISTEN 侦听来自远方的TCP端口的连接请求
SYN-SENT 再发送连接请求后等待匹配的连接请求
SYN-RECEIVED 再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED 代表一个打开的连接
FIN-WAIT-1 等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2 从远程TCP等待连接中断请求
CLOSE-WAIT 等待从本地用户发来的连接中断请求
CLOSING 等待远程TCP对连接中断的确认
LAST-ACK 等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED 没有任何连接状态