运维开发网

网络 – 如何获取套接字的非确认TCP数据量?

运维开发网 https://www.qedev.com 2020-06-13 09:47 出处:网络 作者:运维开发网整理
Linux在man-page tcp(7)中描述了ioctl SIOCOUTQ,它返回套接字缓冲区中未发送数据的数量.如果我理解内核代码正确,则所有非ACK数据都被计为“未发送”. ioctl至少从2.4.x开始可用. {Free,Net,Open,*} BSD,Solaris,Windows有什么相似之处吗? 您可能需要(至少)两条不同的信息:尚未发送的数据量,以及已发送但未确认的数据量. 在L
Linux在man-page tcp(7)中描述了ioctl SIOCOUTQ,它返回套接字缓冲区中未发送数据的数量.如果我理解内核代码正确,则所有非ACK数据都被计为“未发送”. ioctl至少从2.4.x开始可用.

{Free,Net,Open,*} BSD,Solaris,Windows有什么相似之处吗?

您可能需要(至少)两条不同的信息:尚未发送的数据量,以及已发送但未确认的数据量.

Linux上:记录SIOCOUTQ以提供未发送数据的数量,但实际上给出了(未发送数据已发送但未确认数据)的总和. recent patch (Feb 2016)使得可以从TCP_INFO结构中的tcpi_notsent_bytes字段获取实际的未发送数据.

在macOS和iOS上:getsockopt(fd,SOL_SOCKET,SO_NWRITE,…)就像SIOCOUTQ:它被记录为给出未发送数据的数量,但实际上给出了(未发送数据已发送但未确认的数据)数据).我不知道如何获得更细粒度的信息.

在Windows上:GetPerTcpConnectionEStats使用TcpConnectionEstatsSendBuff选项为您提供未发送的数据和已发送但未发送的数据as two separate numbers.

我不知道如何在其他操作系统上获取此信息.

0

精彩评论

暂无评论...
验证码 换一张
取 消