winsock2.h 中的地址族 unknown1 是什么?

what is the address family unknown1 in winsock2.h?

在头文件winsock2.h中,我发现了一个名为unknown1的地址族。

这个地址族代表什么,有什么用??

这是头文件的源代码winsock2.h,这是包含该地址族常量的代码行:

#define AF_UNKNOWN1 20

这实际上是非常自我描述的:它是所有其他没有定义的东西。例如,AF_UNKNOWN1 是一个地址族,它是另一个定义的 地址族的 none; PF_UNKNOWN1就是这样一个协议族。对于1后缀我现在没有找到快速指针,myassumption是为了避免与可能的冲突而引入的已经存在 _UNKNOWN 个定义。

您的 winsock2.h 副本很奇怪,也许您是故意留下评论的。我保留着旧版本的 SDK,它们是 Windows 开发的有趣考古记录。我可以追溯到 1996 年发布的 WinNT 版本 4 SDK,它是第一个支持 Winsock v2 的 SDK 版本。它扩展了 NT 3.1 和 Winsock v1.1 中首先支持的地址族,复制粘贴所有添加的地址族:

#define AF_VOICEVIEW    18              /* VoiceView */
#define AF_FIREFOX      19              /* Protocols from Firefox */
#define AF_UNKNOWN1     20              /* Somebody is using this! */
#define AF_BAN          21              /* Banyan */
#define AF_ATM          22              /* Native ATM Services */
#define AF_INET6        23              /* Internetwork Version 6 */

今天看起来还是一样。显然评论是相关的,Somebody is using this! 应该强调 Somebody。它被那些在 90 年代中期拥有相当成功产品的公司的产品所包围,这些公司大到足以与微软建立工作关系,并让他们的产品得到 Winsock 2 和 WinNT4 的验证和支持(顺便说一句,Firefox 是一家公司,而不是浏览器) .

所以一个有点合理的场景是测试人员检测到冲突,否则不知道他的机器有多脏,并提交了错误报告。如果微软在 1996 年不知道,那么,没人知道。时间对这些公司及其产品并不友好,TCP/IP 的主导地位和互联网泡沫的破灭几乎扼杀了他们所有人。 Somebody Inc 肯定也发生过同样的事情 :)