Mac OS X: 内核扩展如何获取TCP连接的tcpcb结构?

Mac OS X: How is the tcpcb struct of a TCP connection obtained by a kernel extension?

我想提供一个用户 space 函数,通过实现内核扩展来获取 TCP 连接统计信息。通过检查 TCP 源,我看到 tcpcp 结构包含此类统计信息。给定来自用户 space 的套接字句柄,如何通过内核扩展获取关联的 tcpcb 结构和 return 用户 space 的统计信息?

问题的直接答案:我相信如果不使用一些私有 headers 来获取所涉及结构的内存布局,您将无法从 kext 获取此信息。这将破坏 if/when Apple 更改了这些结构的布局。

但是,您似乎并不真正关心 kext 方面,并且很乐意从用户空间获取信息,那么您是否调查过 TCPCTL_PCBLIST sysctl?这为您提供了系统中 TCP 连接的 CB,并且 xtcpcb64 结构确实包含您之后的字段。不过,此机制可能不够精细,无法满足您的目的。