socket 到底是个啥
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
文章摘要
本文由咸鱼讲述了socket的基本概念、使用场景、底层设计和实际应用,旨在帮助读者深入了解socket。
Socket基本概念
作者首先解释了socket的中文意思是套接字,它是负责不同主机程序之间网络通信连接的技术,其标识由四元组(IP地址:端口)组成。通过对比插座和充电插头的连接来形象地说明socket的连接过程。
Socket使用场景
通过举例微信进程间的通信,解释了socket的使用场景,即通过socket方法得到一个fd句柄(socket_fd),以此来建立连接和传输数据。在服务端和客户端之间进行bind、listen、accept、connect和数据传输的send、recv等操作。
Socket底层设计
深入探讨了socket的底层设计,包括利用IP地址和端口号来定位网络中的特定进程。介绍了在Linux系统中,socket结构体的定义,并讨论了不同网络协议(TCP和UDP)的选择及其对应的网络场景。作者还解释了如何设计数据结构来维护网络协议,并通过继承的方式实现功能复用。
Socket实际应用
描述了socket在内核中的数据结构,并讨论了如何通过接口调用方式,让用户态程序利用内核态的数据结构实现网络传输功能。将socket封装成文件,使用户态程序可以通过文件句柄(fd)操作内核中的socket数据结构。列出了常用的socket接口方法如send、recv等,并通过Python示例展示了客户端如何操作socket。
总结
最后,作者总结了socket的本质:一个由操作系统内核提供的数据结构,用于不同网络协议和场景下的网络传输。同时,socket层的引入和API接口的抽象使得用户态程序能够方便地调用内核态的网络传输功能。作者还指出,除了Internet socket,还有UNIX Domain socket,后者基于本地文件系统进行通信。
想要了解更多内容?
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)