netstat 中的 Recv/Send

netstat 查看当前的连接情况,会出现 Recv-Q 以及 Send-Q 的这两栏:
Proto Recv-Q Send-Q Local Address           Foreign Address         State     
tcp        0    180 111.111.111.111:80      110.194.127.254:39922   FIN_WAIT1 
tcp        0      0 111.111.111.111:80      112.64.188.117:49319    TIME_WAIT 
tcp        0      0 111.111.111.111:80      221.131.128.207:61285   TIME_WAIT 
tcp        0    180 111.111.111.111:80      119.180.158.228:1131    FIN_WAIT1 
tcp        0      1 111.111.111.111:80      175.136.68.117:40492    LAST_ACK  
tcp        0    180 111.111.111.111:80      218.85.96.248:34279     FIN_WAIT1 
tcp        0      1 111.111.111.111:80      212.58.162.182:26196    FIN_WAIT1 
tcp        0      0 111.111.111.111:80      211.140.5.110:48673     TIME_WAIT 
tcp        0      1 111.111.111.111:80      117.136.11.171:46403    FIN_WAIT1

我理解的是,Recv 的是数据还在缓存中,还没被进程读取,这个值就是还没被进程读取的 bytes;而 Send 则是发送队列中没有被远程主机确认的 bytes 数。
这两个值正常情况下应该为0,暂时的不为 0 可以理解,但是长期的非 0 则表明出现了一些问题。如果 Recv 长期的不为 0,则表明可能遭受了 DOS 攻击或者说是程序有点问题,进程根本就没有读取缓存中的数据(?我个人猜测而已);而 Send 不为 0 则表示了,则表示本地发送的数据超出了对发的接受能力。

ref:
http://www.enterprisenetworkingplanet.com/netos/article.php/3430561/Keep-an-Eye-on-Your-Linux-Systems-with-Netstat.htm