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但它们这个伟大组成至关重要的部分。
阅读完成 · 觉得有帮助?