我很好奇AF_UNIX SOCK_STREAM套接字的默认协议是什么。我正在尝试查找数据包开销应该是多少,但我无法确定默认使用的协议是什么。我怀疑它不是IPPROTO_TCP,因为:
socketpair(AF_UNIX, SOCK_STREAM, 0, sfd)
工作时,这样做:
socketpair(AF_UNIX, SOCK_STREAM, IPPROTO_TCP, sfd)
会出现“不支持的协议错误”。
我很好奇AF_UNIX SOCK_STREAM套接字的默认协议是什么。我正在尝试查找数据包开销应该是多少,但我无法确定默认使用的协议是什么。我怀疑它不是IPPROTO_TCP,因为:
socketpair(AF_UNIX, SOCK_STREAM, 0, sfd)
工作时,这样做:
socketpair(AF_UNIX, SOCK_STREAM, IPPROTO_TCP, sfd)
由于AF_UNIX Unix套接字是本地的,因此在这种情况下没有额外的协议开销。您可以在SOCK_STREAM或SOCK_DGRAM模式下使用它使其分别成为面向连接或无连接的,但仅此而已:不会添加协议头,并且不会遍历网络堆栈中的任何网络或传输协议实现。
AF代表A地址F族,而PF代表P协议F族。
AF_UNIX族没有被该地址族支持的协议IPPROTO_TCP。AF_UNIX用于在UNIX®域中在同一系统上的进程之间进行进程间通信。AF_UNIX和AF_UNIX_CCSID地址族支持协议0,分别用于SOCK_STREAM和SOCK_DGRAM。
阅读更多信息:套接字