也许我没有仔细阅读标准,但我从未找到单独的部分来描述允许的地址系列和协议。标头的描述netinet/in.h说标头必须包含以下常量,这些常量在getsockopt/setsockopt函数中用作级别(!)值:
- IPPROTO_IP
- IPPROTO_IPv6
- IPPROTO_ICMP
- IPPROTO_RAW
- IPPROTO_TCP
- IPPROTO_UDP
我可以这样解释吗?例如,符合 Posix 的系统不需要使用 SCTP 协议?
地址族的情况与此类似。
也许我没有仔细阅读标准,但我从未找到单独的部分来描述允许的地址系列和协议。标头的描述netinet/in.h说标头必须包含以下常量,这些常量在getsockopt/setsockopt函数中用作级别(!)值:
我可以这样解释吗?例如,符合 Posix 的系统不需要使用 SCTP 协议?
地址族的情况与此类似。
POSIX 是定义所需的最低操作系统接口的标准。因此,除非另有说明,否则其中描述的任何列表都应视为允许的最小值集。
因此,文档的内容
<netinet/in.h>可以解释为“符合 POSIX 的操作系统必须实现列出的 IP 协议”;但这绝不会限制其他协议的实现以及在<netinet/in.h>任何特定操作系统中添加适当的值。