扩展 netstat 统计信息中的发送缓冲区字节数的具体含义是什么,为什么它总是大于 Send-Q?
换句话说,哪些内容对 S-BCNT 有影响,而对 Send-Q 则没有影响?
S-BCNT 是否是用于计算特定连接系统成本的更好数字?
答案1
您可以在以下位置找到定义以及注释sys/sys/sockbuf.h
:
u_int sb_cc; /* (c/d) actual chars in buffer */
u_int sb_mbcnt; /* (c/d) chars of mbufs used */
BSD 使用称为mbuf
/ 的结构mbuf_cluster
来存储网络数据。它们从驱动程序代码到套接字层无处不在。即使数据包的有效负载为 1 字节,它也会mbuf
在 mbuf 中消耗 256 ( ) 个字节。如果数据包大小(包含所有帧/数据包头)>= 256,它将消耗 256 ( mbuf
) + 2048 ( ) 个字节。因此,和mbuf_cluster
之间存在差异。sb_cc
sb_mbcnt
回答您的问题:S-BCNT
使用更正确的值。
附言. 欲了解更多信息,请咨询TCP/IP 图解第 2 卷 - W. Richard Stevens 和 Garry R. Wright、第 16 章 - 套接字 I/O、第 16.3 节 - 套接字缓冲区、第 476 页