我很好奇AF_UNIX SOCK_STREAM套接字的默认协议是什么。我正在尝试准确追踪数据包开销应该是什么,但我无法确定默认情况下使用的协议。我怀疑它是不是 IPPROTO_TCP因为这个:
socketpair(AF_UNIX, SOCK_STREAM, 0, sfd)
同时工作:
socketpair(AF_UNIX, SOCK_STREAM, IPPROTO_TCP, sfd)
提供“不支持协议错误”。
答案 0 :(得分:4)
AF 代表 A 地址 F amily,而 PF 代表 P rotocol F amily。
AF_UNIX 系列没有该地址系列支持的协议IPPROTO_TCP。 AF_UNIX用于UNIX®域中同一系统上进程之间的进程间通信。 AF_UNIX和AF_UNIX_CCSID地址系列支持SOCK_STREAM和SOCK_DGRAM的协议0。
在此处阅读更多内容:Sockets
答案 1 :(得分:2)
由于 AF_UNIX unix套接字是本地的,因此在这种情况下不会增加协议开销。您可以在 SOCK_STREAM 或 SOCK_DGRAM 模式下使用它,分别使其面向连接或无连接,但这就是全部:没有添加协议头,它不会遍历任何网络或网络堆栈中的传输协议实现。
答案 2 :(得分:2)