套接字 (Socket) 是操作系统提供给应用程序的一个通信端点。在 Linux 中,它被抽象为一种特殊的文件。
核心逻辑
Socket 充当了应用层与传输层之间的“插座”,让开发者能像读写本地文件一样进行跨网络的数据交换。
- 文件化抽象:在 Linux 中表现为一个文件描述符 (File Descriptor, FD),支持
read/write等系统调用。 - 唯一标识:一个连接由五元组唯一确定:
{源IP, 源端口, 目的IP, 目的端口, 协议}。 - 内核管理:由内核维护
struct socket结构,负责数据的封装与拆解。
只要五元组中有一个元素不同,就是不同的 Socket 连接。这解释了为什么单机可以支持百万级别的并发连接。