1、Recv-Q和Send-Q
1.1、非listening状态的tcp连接
[root@centos64-1 ~]# netstat -ntpActive Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 284 192.168.132.128:22 192.168.132.1:32242 ESTABLISHED 4264/sshd
tcp 0 0 192.168.132.128:9000 192.168.132.1:42029 ESTABLISHED 6552/java
等同于 ss -n 命令
里面的Recv-Q 表示此连接等待用户接收的byte个数(已到内核,但还未被用户进程read的字节个数)
Send-Q 表示发送还未被ack的字节个数
Recv-Q
实验:
服务端卡死到accept前面:
客户端走到发送完处
注意:虽然此时服务端并未accpet此连接,但客户端还是能走到发送完成的代码处的。
可以看到,此时服务端的recv-q已经有等待用户进程read的数据了(另外,服务器端,只有没有不read,此处会一直显示等待接收的字节数)。
1.2、listen状态的tcp连接
netstat -lntpss -l -n (能看出效果)
里面的Recv-Q 表示等待accept的连接个数,即完成队列的个数
实验:
服务端走到accept前面:
客户端走到发送数据完成处: