3
内核套接字结构和TCP_DIAG
我正在开发一种连接到实时数据服务器(使用TCP)的软件,但有些连接掉线了。我的猜测是客户端无法足够快地读取来自服务器的数据。因此,我想监视我的TCP套接字。为此,我找到了“ ss”工具。 这个工具可以查看每个套接字的状态-这是命令输出的示例行 ss -inm 'src *:50000' ESTAB 0 0 184.7.60.2:50000 184.92.35.104:1105 mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40 我的问题是:记忆部分是什么意思?查看该工具的源代码,我发现数据来自内核结构(sock中的sock.h)。更确切地说,它来自以下领域: r = sk->sk_rmem_alloc w = sk->sk_wmem_queued; f = sk->sk_forward_alloc; t = sk->sk_wmem_alloc; 有人知道他们的意思吗?我的猜测是: rmem_alloc :入站缓冲区的大小 wmem_alloc :出站缓冲区的大小 sk_forward_alloc :??? sk->sk_wmem_queued :??? 这是我的缓冲区大小: net.ipv4.tcp_rmem = 4096 87380 174760 net.ipv4.tcp_wmem = 4096 16384 131072 …