☰
Socket 到底是什么
2026/10/10 18:50:59 网站建设 项目流程

Socket 到底是什么

在刚接触网络时,我们可能被传授一种概念:socket = ip + port,确实,这样的理解,在初步学习阶段足够了,但随着学习的深入,随着对socket的应用,对socket,我们已经不满足于这种浅显的解释了。

定义

socket其实是一套接口,它连接了应用层和内核,同时也是操作系统为网络通信抽象出来的一种端点。

何为接口

如果没有 socket,当我们要进行网络数据传输时,就需要直接操作网卡、处理硬件中断,手动拼装并解析以太网帧、IP、UDP/TCP 头部,还要计算校验和,自行实现 ARP、TCP 握手、重传等全套网络逻辑。

socket()是创建套接字的系统调用,socket 整套系统调用还包括bind(),recv()等,所以它是内核对外暴露出的一套供我们便捷地执行以上复杂操作的接口。

何为端点

我们使用 socket 时,通常先调用socket(),它会返回一个文件描述符(一个句柄)来供我们进行接下来的操作,同时这个操作会在内核中实例化出一个 socket 对象,而这个对象,就是我们用来进行数据收发的端点(即通信端点)。

通信端点是数据传输的起点或终点,但不要把它理解为我们的主机,因为我们的主机可以一次性跑很多服务,比如:我们可以在用短视频软件刷视频的同时在音乐软件下载音乐。

而这些服务,本质是计算机的进程,我们用 port 端口号来标识它们。再回顾网络传输的过程,我们要有 ip 来确定我们数据传输的目的地。

这样,一切都串起来了!

ip + port 其实是套接字地址(sockaddr),是用来定位 socket 端点的,虽然ip + port 不等于 socket,但它们这个伟大组成至关重要的部分。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询