ss 输出中的 u_str、Recv-Q 和 Send-Q 是什么?

ss 输出中的 u_str、Recv-Q 和 Send-Q 是什么?

ss命令与命令非常相似,netstat但比更快、更准确netstat

monitoring-server@monitoring-server:~$ ss
Netid State      Recv-Q Send-      Local Address:Port    Peer Address:Port       
u_str ESTAB      0      0          * 34006              * 34007                

这是输出的第一行。该命令告知系统中所有打开的套接字。

我的系统上总共有 96 个,其中 56 个具有 ,u_str其余Netid具有tcp

这是什么u_str,另外请详细解释一下Recv-QSend-Q

答案1

u_str是一个流套接字,相当于netstat的 SOCK_STREAM。

SOCK_STREAM:这是一个流(连接)套接字。

维基百科

在计算机操作系统中,流套接字是一种进程间通信套接字或网络套接字,它提供面向连接的、有序的、唯一的数据流,没有记录边界,具有用于创建和销毁连接以及检测错误的明确机制。

让我们创建一个流套接字:

netcat -lU /tmp/streamsocket

现在运行:

ss -an | grep streamsocket

它将输出:

u_str  LISTEN     0      5      /tmp/streamsocket 123360      * 0     

简单来说,就是套接字的类型,可以是“UDP”或“TCP”。让我们创建一个 UDP 套接字:

netcat -lu 127.0.0.1 8060

现在,ss -l sport = 8060会告诉你这个是“UDP”而不是“u_str”。


对于“Recv-Q”和“Send-Q”列,请参阅man 8 netstat

Recv-Q 连接到此套接字的用户程序未复制的字节数。

Send-Q 远程主机未确认的字节数。

答案2

ss转储s套接字s统计数据。Netidu_strunix_streamie 的缩写,AF_UNIX插座系列和SOCK_STREAM插座类型:

AF_UNIX(也称为)套接字系列AF_LOCAL用于在同一台机器上的进程之间高效通信。传统上,UNIX 域套接字可以是未命名的,也可以绑定到文件系统路径名(标记为套接字类型)。Linux 还支持独立于文件系统的抽象命名空间。

SOCK_STREAM 提供有序、可靠、双向、基于连接的字节流。可支持带外数据传输机制。

快速介绍ss( /usr/share/doc/iproute2-doc/ss.html)

然后两列(Recv-Q 和 Send-Q)显示排队接收和传输的数据量。

对于 unix 套接字来说,它是unix_diag_rqlenunix_diag.h

相关内容