netstat Recv-Q和Send-Q详解

http://blog.csdn.net/sjin_1314/article/details/9853163  

通过netstat -anp可以查看机器的当前连接状态:

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:8139            0.0.0.0:*               LISTEN      -

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -

tcp        0      0 0.0.0.0:26837           0.0.0.0:*               LISTEN      -

tcp        0      0 0.0.0.0:1046            0.0.0.0:*               LISTEN      -

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -

tcp6       0    910 10.100.83.145:57142     10.100.83.140:80        ESTABLISHED 7072/java

tcp6       0      0 10.100.83.145:57114     10.100.83.140:80        ESTABLISHED 7072/java

tcp6       0    914 10.100.83.145:57117     10.100.83.140:80        ESTABLISHED 7072/java

tcp6       0    910 10.100.83.145:57126     10.100.83.140:80        ESTABLISHED 7072/java

tcp6       0      0 10.100.83.145:57159     10.100.83.140:80        ESTABLISHED 7072/java

tcp6       0      0 10.100.83.145:57128     10.100.83.140:80        ESTABLISHED 7072/java

对proto,localAddress等都比较好理解,其中Recv-Q Send-Q具体是什么含义呢?为什么Send-Q时长不为0呢?不为0是不是表示网络出口阻塞了呢?针对这个问题查了下相关资料。

一个较详细的解释是:

What It Means
"Proto" is short for protocol, which is either TCP or UDP. "Recv-Q" and "Send-Q" mean receiving queue and sending queue. These should always be zero; if they‘re not you might have a problem. Packets should not be piling up in either queue, except briefly, as this example shows: 
tcp 0 593 192.168.1.5:34321 venus.euao.com:smtp ESTABLISHED 
That happened when I hit the "check mail" button in KMail; a brief queuing of outgoing packets is normal behavior. If the receiving queue is consistently jamming up, you might be experiencing a denial-of-service attack. If the sending queue does not clear quickly, you might have an application that is sending them out too fast, or the receiver cannot accept them quickly enough. 
"Local address" is either your IP and port number, or IP and the name of a service. "Foreign address" is the hostname and service you are connected to. The asterisk is a placeholder for IP addresses, which of course cannot be known until a remote host connects. "State" is the current status of the connection. Any TCP state can be displayed here, but these three are the ones you want to see。

参考:http://hi.baidu.com/woshiceo2015/item/f0130d3190b0e9c51a969661

大致的意思是:

Recv-Q Send-Q分别表示网络接收队列,发送队列。Q是Queue的缩写。

这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。如文中的示例,短暂的Send-Q队列发送pakets非0是正常状态。

如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。

如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。

Recv-Q:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()

Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区.

通过netstat的这两个值就可以简单判断程序收不到包到底是包没到还是包没有被进程recv。

时间: 2024-12-26 04:20:31

netstat Recv-Q和Send-Q详解的相关文章

UNIX网络编程-send、recv、sendto、recvfrom详解

send.recv和sendto.recvfrom,一般情况下,send.recv在TCP协议下使用,sendto.recvfrom在UDP协议下使用,也可以在TCP协议下使用,不过用的很少. 1.send 这里只描述同步socket的send函数的执行流程. s:套接字  |  buf:存储发送数据  |  len:发送数据长度 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR:如果len小于

$q服务的API详解

下面我们通过讲解$q的API让你更多的了解promise异步编程模式.$q是做为angularjs的一个服务而存在的,只是对promise异步编程模式的一个简化实现版,源码中剔除注释实现代码也就二百多行,下面开始介绍$q的API. defer对象(延迟对象)可以通$q.defer()获取,下面是defer对象的api:  方法: resolve(value):向promise对象异步执行体发送消息告诉他我已经成功完成任务,value即为发送的消息. reject(value): 向promise

#20 ifconfig、route、netstat、ip、ss命令详解与修改主机名与网卡配置文件

网络的结构: 硬件:计算机.互联设备.网络设备 软件:操作系统.协议.应用程序.数据库 网络的功能: 资源共享:目的 数据通信:手段 网络通信模型 ISO/OSI: 应用层 表示层 会话层 传输层 网络层 数据链路层 为物理层 TCP/IP: 应用层 传输层 互联网层 网络访问层 数据报文封装格式: 对等通信: 应用层:数据流进程封装: 传输层:数据段(TCP segment)或数据报(UDP data-prog): 最大的报文不能超过65535字节: 互联网层:数据包或IP数据报(ip pac

linux Socket send与recv函数详解

转自:http://www.cnblogs.com/blankqdb/archive/2012/08/30/2663859.html linux send与recv函数详解 1 #include <sys/socket.h> 2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags); 3 ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags)

Socket send函数和recv函数详解

Socket send函数和recv函数详解 1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags );  不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据.客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答. 该函数的第一个参数指定发送端套接字描述符: 第二个参数指明一个存放应用程序要发送数据的缓冲区: 第三个参数指明实际要发送的数据的字节数

量化投资_TB交易开拓者A函数和Q函数详解

//////////////////A函数详解/////////////// //A函数主要在端口上进行下单操作//////////////// A_AccountID说明 返回当前公式应用的交易帐户ID. 语法 String A_AccountID() 参数 无 备注 返回当前公式应用的交易帐户ID,返回值为字符串,无效时返回空串. 注:不能使用于历史测试,仅适用于实时行情交易. 示例:登录交易账号:Commentary("A_AccountID"+A_AccountID); A_B

AngularJS 中的Promise --- $q服务详解

    阅读目录 什么是Promise $q服务 先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 回到顶部 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg

angular中的$q详解

先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg1,arg2,function(){ xxxx.... })

用netstat查看网络状态详解

--用netstat查看网络状态详解 -----------------------------2014/06/11 一.Linux服务器上11种网络连接状态:                                          图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手 注:以下说明最好能结合"图:TCP的状态机"来理解. SYN: (同步序列编号,Synchronize Sequence

netstat状态详解

一.生产服务器netstat tcp连接状态................................................................................ 2 1.1生产服务器某个业务LVS负载均衡上连接状态数量............................................... 2 1.2生产服务器某个业务web上连接状态数量...............................................