【DeepSeek】Socket API 支持的协议族

📅 2026/7/9 14:21:24 👁️ 阅读次数 📝 编程学习
【DeepSeek】Socket API 支持的协议族

Socket API 支持的协议族非常丰富。为了方便理解,我按照应用场景分类整理了一个表格:

Socket API 支持的主要协议族

地址族协议类型示例典型应用场景与 TCP/IP 的区别
AF_INET / AF_INET6TCP, UDP互联网通信(Web服务、游戏联网)这是主流,跨机器通信,需要 IP 地址和端口。
AF_UNIX / AF_LOCAL流式套接字本机进程通信(Nginx与PHP-FPM通信)不走网卡,基于文件路径,速度极快,仅限本机。
AF_BLUETOOTHL2CAP, RFCOMM蓝牙通信(手机连接蓝牙设备)使用蓝牙 MAC 地址,替代 IP 地址。
AF_CAN原始 CAN 帧汽车电子/工控(CAN 总线通信)针对车辆网络,无“连接”概念,基于报文 ID。
AF_PACKET原始以太网帧抓包工具/黑客工具(Wireshark, Tcpdump)绕过 TCP/IP 协议栈,直接操作网卡收发原始数据帧。
AF_NETLINKNetlink 协议内核与用户空间通信(配置路由、防火墙)用于程序和操作系统内核直接对话,不经过网络传输。
AF_IPXIPX/SPX老旧局域网协议(Novell NetWare)早期局域网协议,现已被 TCP/IP 淘汰,很少使用。

总结

  1. Socket 是“通用插座”
    Socket API 的设计精髓在于抽象。它把“通信”这个动作抽象为sendrecvbindaccept等标准接口,而底层的具体实现(是走网线、走蓝牙、还是走内存)则由不同的协议族来驱动。

  2. TCP/IP 只是“默认选项”
    我们平时最常用AF_INET(IPv4) 和AF_INET6(IPv6),所以大家容易产生“Socket 就是 TCP/IP”的误解。实际上,表格里的其他协议在特定领域(如嵌入式开发、高性能计算、系统管理)同样非常重要。

  3. 编程模型一致
    无论你用哪种协议,Socket 编程的核心流程几乎不变:
    socket()->bind()->listen()->accept()->recv/send()
    唯一的区别在于socket()的第一个参数填什么,以及bind()时传入的地址结构体(是 IP 地址、文件路径还是蓝牙地址)。