【问题标题】:network programming: Socket function: Address family Vs Protocol family网络编程:套接字功能:地址族 Vs 协议族
【发布时间】:2011-02-11 05:12:45
【问题描述】:

我刚开始接触网络编程。在查看套接字函数时,有些使用 PF_INET,有些使用 AF_INET。查看wikipedia,它说这种设计是为了让不同的协议族可以使用不同的地址族。现在有支持多种地址类型的此类协议系列吗?

我在搜索地址族与协议族时也遇到了这个错误:

Address family not supported by protocol family

这是否意味着存在支持多个地址族的协议?

我遇到了这个statement

you shouldn't necessarily expect to be able to use NS addresses with ARPA Internet protocols

什么是 NS 地址?

谢谢。

【问题讨论】:

    标签: network-programming


    【解决方案1】:

    socket 的 Windows 文档说地址族是第一个参数;我的 Linux 机器上的手册页说那应该是协议族。从与平台无关的角度来看,Linux 版本似乎更正确——理论上,套接字有一个协议族,地址有地址族,两者应该兼容。

    但实际上,内置协议的 PF_ 和 AF_ 宏具有相同的值(在 Linux 和 Windows 中)。我想这对于大多数操作系统来说都是一个类似的故事,因为所有常见的协议系列都有一个地址系列。 (您可能认为 IP 会有两个,但不是。IPv4 和 IPv6 有单独的协议族。)这(以及 C 相对较弱的类型)允许它们几乎可以互换使用。

    请注意,不能保证所有操作系统或某些第三方驱动程序支持的协议等都是这种情况。在这些情况下,您应该查阅特定平台的文档。

    至于什么是“NS 地址”,据我所知,它们是施乐的史前 Network Systems protocol 的一部分(类似于 TCP/IP 的协议系列,但现代 PC 不同且不兼容且未使用)。除非您使用过时的系统,否则您不会看到它们在使用中;为什么将其保留为示例,我无法理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多