39 | 瞧一瞧Linux:详解socket实现与网络编程接口
LMOS
该思维导图由 AI 生成,仅供参考
你好,我是 LMOS。
前面我们了解了网络的宏观架构,建立了网络模块知识的大局观,也进行了实际的组网实践。现在我们来瞧一瞧 Linux 的网络程序,不过想要入门 Linux 的网络编程,套接字也是一个绕不开的重要知识点,正是有了套接字,Linux 系统才拥有了网络通信的能力。而且网络协议的最底层也是套接字,有了这个基础,你再去看相关的网络协议的时候也会更加轻松。
我会通过两节课的内容带你了解套接字的原理和具体实现。这节课,我们先来了解套接字的作用、工作原理和关键数据结构。下一节课,我们再一起研究它在 Linux 内核中的设计与实现。
好,让我们开始今天的学习吧。
如何理解套接字
根据底层网络机制的差异,计算机网络世界中定义了不同协议族的套接字(socket),比如 DARPA Internet 地址(Internet 套接字)、本地节点的路径名(Unix 套接字)、CCITT X.25 地址(X.25 套接字)等。
Internet 套接字是 TCP/IP 协议栈中传输层协议的接口,也是传输层以上所有协议的实现。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了Linux套接字的实现与网络编程接口。首先,解释了套接字的作用和工作原理,以及不同协议族的套接字。重点讲解了Internet套接字在TCP/IP协议栈中的重要性,以及套接字在网络程序功能中的作用。接着,详细介绍了Linux操作系统下套接字的数据结构,包括struct socket和struct sock的定义和作用。此外,还讨论了套接字与文件的连接实现方式,以及套接字缓存的重要性和作用。文章通过深入浅出的方式,帮助读者了解了Linux套接字的原理和具体实现,为进一步学习网络编程奠定了基础。文章还强调了Linux的套接字体系结构独立于具体网络协议栈的套接字,可以同时支持多个网络协议栈的工作,并分析了套接字从创建的过程。整体而言,本文内容丰富,适合对Linux套接字感兴趣的读者深入学习。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《操作系统实战 45 讲》,新⼈⾸单¥68
《操作系统实战 45 讲》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- 不及胜于过之置顶昨天一天撸完,体会很深,专门写了一个学习总结与linux的爬坡之路,https://mp.weixin.qq.com/s/XqXIvEfhNPXQ1RSs0XeFUQ 麻烦多指正,过去一直持续在学linux,这个时候看到您的文章对我是一个很好的沉淀与认知突破,巨感谢大佬
作者回复: 6666
2021-08-092 - 不及胜于过之今天一天看完了您的所有课程,收获非常非常大。尤其是:要实现一个功能模块,首先要设计出相应的数据结构(以及这些数据结构的管理数据结构,比如链表等),基于数据结构设计初始化函数以及该功能模块对应的业务函数。为学习操作系统模块或所有技术项目代码提供了思路,感谢东哥。
作者回复: 哈哈 对的 基于数据结构才能解决问题
2021-08-0827 - pedro进程间的通信方式有很多,比如说管道,共享内存,信号等,但这些通信方式都有一个很大的局限性,那就是无法跨物理机通信,只能与同一个机器上的其它进程通信,而套接字恰好打破了这个桎梏,只要你在线上(网络上),我就可以通过ip地址打你电话,和你说话!
作者回复: 是的 铁汁
2021-08-066 - 艾恩凝哎,说实话从本科开始就讨厌网络,现在依然如此
作者回复: 为什么啊
2022-05-162 - MacBao套接字可以跨主机,其他的不可以
作者回复: 哈哈 铁汁牛逼
2021-08-06 - 摘桃慢好多新的名字出现,有些抽象,希望能够形象一些。不知道能不能举个例子?2023-07-16归属地:江苏1
- Mike_Han老师,有个疑问,文中说到:“结合上面代码我们发现,内核使用 struct inet_protosw 数据结构实现的协议交换表,将应用程序通过 socketcall 系统调用指定的套接字操作,转换成对某个协议实例实现的套接字操作函数的调用。”为什么不直接调用 socket 中的 ops(ops 直接指向具体协议的操作)呢2021-10-21
收起评论