我刚开始使用网络编程。在查看套接字函数时,有些人使用PF_INET,而其他人则使用AF_INET。在wikipedia中查看,它表示这种设计用于支持不同协议族使用不同的地址族。今天有没有这样的协议系列支持多种地址类型?
当我搜索Address family Vs Protocol系列时,我也遇到了这个错误:
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地址?
感谢。
答案 0 :(得分:4)
socket
的Windows文档说地址族是第一个参数;我的Linux机器上的手册页说这应该是协议族。从平台无关的角度来看,Linux版本似乎更为正确 - 理论上,套接字具有协议族,地址具有地址族,并且两者应该是兼容的。
但实际上,内置协议的PF_
和AF_
宏具有相同的值(在Linux和Windows中)。我想这对于大多数操作系统来说都是类似的故事,因为所有常见的协议系列都有一个地址族。 (你会认为IP会有两个,但是没有。对于IPv4和IPv6,有单独的协议系列。)这(以及C的相对弱的类型)允许它们可以互换使用。
请注意,并不能保证所有操作系统或某些第三方驱动程序支持的协议都是如此。在这种情况下,您应该查阅特定平台的文档。
至于“NS地址”是什么,就我所知,它们是Xerox史前Network Systems protocol的一部分(协议系列类似TCP / IP,但现代PC不同且不兼容和未使用) 。除非你正在使用古老的系统,否则你不会看到它们在使用中;为什么以此为例不仅仅是我。