news 2026/4/18 3:31:51

什么是 Unix Socket?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是 Unix Socket?

Unix Socket(通常称为Unix Domain Socket,UDS)是一种仅在同一台主机内部使用的进程间通信(IPC, Inter-Process Communication)机制。它利用文件系统路径作为通信端点,通过内核在本机进程之间高效地传递数据。


一、Unix Socket 的核心概念

定义
Unix Socket 是一种基于 socket 接口、但不经过网络协议栈(如 TCP/IP)的本地通信方式,通信双方必须运行在同一台操作系统上。

本质

  • 属于 socket 家族之一(AF_UNIXAF_LOCAL

  • 通信端点不是 IP + 端口,而是文件系统中的一个路径

  • 数据在内核态直接拷贝,性能优于 TCP


二、Unix Socket 与 TCP Socket 的对比

对比项Unix SocketTCP Socket
通信范围本机进程跨主机
地址形式文件路径(如/var/run/app.sockIP + 端口
协议栈不经过 TCP/IP完整 TCP/IP
性能更高(低延迟、低开销)相对较低
安全性依赖文件权限控制依赖防火墙、认证等
是否可路由

三、Unix Socket 的工作原理

  1. 服务端

    • 创建 socket:socket(AF_UNIX, SOCK_STREAM, 0)

    • 绑定文件路径:bind("/tmp/app.sock")

    • 监听并接受连接:listen()/accept()

  2. 客户端

    • 创建 socket

    • 连接到该文件路径:connect("/tmp/app.sock")

  3. 数据传输

    • 使用read/writesend/recv

    • 数据在内核中直接在进程之间传递


四、Unix Socket 的两种主要类型

1. SOCK_STREAM(流式,类似 TCP)

  • 面向连接

  • 保证顺序、可靠传输

  • 常用于客户端/服务端模型

示例:

  • MySQL

  • Docker daemon

  • PHP-FPM

2. SOCK_DGRAM(数据报,类似 UDP)

  • 无连接

  • 消息边界保留

  • 适合简单通知、日志类通信


五、典型使用场景(工程实践)

结合你日常接触的服务器/工控场景,Unix Socket 常用于:

1. 高性能本地服务通信

  • Nginx ↔ PHP-FPM

  • Docker CLI ↔ dockerd

  • systemd ↔ 各服务进程

示例:

# php-fpm listen = /run/php/php-fpm.sock
fastcgi_pass unix:/run/php/php-fpm.sock;

2. 本地安全通信

  • 通过文件权限控制访问

srw-rw---- 1 www-data www-data app.sock
  • 非授权用户无法连接


3. 替代 TCP 的本机 RPC

  • 避免端口冲突

  • 降低系统资源消耗

  • 提升吞吐量和响应速度


六、Unix Socket 的优势与限制

优势

  • 性能高

  • 延迟低

  • 安全可控(文件权限)

  • 配置简单,无需端口管理

限制

  • 只能在本机使用

  • 依赖文件系统

  • 跨主机或容器隔离场景下受限(需 volume 挂载)


七、一个最简 C 语言示意(服务端)

int fd = socket(AF_UNIX, SOCK_STREAM, 0); struct sockaddr_un addr = {0}; addr.sun_family = AF_UNIX; strcpy(addr.sun_path, "/tmp/demo.sock"); bind(fd, (struct sockaddr*)&addr, sizeof(addr)); listen(fd, 5);

八、一句话总结

Unix Socket 是一种高效、安全、仅限本机的进程间通信机制,用文件路径代替网络地址,常用于本地服务之间的高性能通信。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/1 20:23:44

【干货收藏】2025年中国大模型案例100精选:程序员学习必备

本文汇总了2025年中国最具代表性的100个大模型应用案例,涵盖金融、零售、能源、医疗、制造等多领域。数据显示,大模型在智能客服、知识助手等场景应用广泛,价值性和创新性显著提升。文中精选了广发证券、国家电网、小米等企业的实践案例&…

作者头像 李华
网站建设 2026/4/16 15:28:16

Python 学习笔记:编程环境配置

[!NOTE] 笔记说明 根据之前在《[[关于Python的学习]]》一文中的规划,这篇笔记中将会具体记录配置 Python 编程环境所需执行的操作步骤,这些操作将着重于解决以下问题: 如何根据具体需求来配置运行时环境;如何基于具体的项目来搭建…

作者头像 李华
网站建设 2026/4/10 11:35:11

XGBoost特征重要性动态分析实战

💓 博客主页:借口的CSDN主页 ⏩ 文章专栏:《热点资讯》 XGBoost特征重要性动态分析实战:从静态洞察到实时决策的范式跃迁目录XGBoost特征重要性动态分析实战:从静态洞察到实时决策的范式跃迁 引言:为何静态…

作者头像 李华
网站建设 2026/3/9 11:54:39

西门子罗宾康光纤接口板|A1A461D85.00M|BPQ-Z

西门子罗宾康光纤接口板 A1A461D85.00M|BPQ-Z 技术详解一、产品概述该光纤接口板是西门子罗宾康系列中压变频器的核心通信组件,采用模块化设计实现控制器与功率单元之间的高速光信号传输。其型号编码具有特定含义:A1A461D85.00M:基础物料编号…

作者头像 李华
网站建设 2026/4/15 11:15:59

西门子罗宾康IGBT模块LDZ10503106

一、 概述与背景LDZ10503106 是西门子旗下罗宾康品牌推出的一款高压绝缘栅双极型晶体管(IGBT)模块。罗宾康在工业电力电子领域,特别是中高压变频驱动技术方面拥有深厚的技术积淀和领先的市场地位。该模块是罗宾康针对高性能、高可靠性工业应用…

作者头像 李华
网站建设 2026/4/10 16:24:57

中国企业DevOps工具链选型趋势:本土化与安全可控成核心竞争力

中国企业DevOps工具链选型趋势:本土化与安全可控成核心竞争力 随着数字化转型进入深水区,中国企业在DevOps工具链的选择上正经历着深刻变革。从单纯追求功能完备性到如今更看重本土化适配深度与安全可控能力的综合考量,这一转变反映出中国企业…

作者头像 李华