c - 当我们在 c linux 中编写 socket(family, type, protocol) 时,内部到底发生了什么?

标签 c linux sockets networking

我的疑问是 linux 内核如何在内核级别处理套接字创建、发送和接收数据?我在哪里可以获得它们的源代码并学习内部编码?

最佳答案

Linux 通过 VSF(虚拟文件系统)处理套接字的功能,这就是为什么您可以使用带有套接字文件描述符的文件系统系统调用。在了解此内容之前,您应该熟悉 Linux 的文件系统和 VFS。

当您发出系统调用时,Linux 将在进程的task_struct 中分配一个文件描述符,并将其与一个套接字数据结构 相关联。 VFS 在某种程度上是面向对象 并且基本上是套接字结构扩展了一些功能以使用 Linux 堆栈上的网络协议(protocol)。在这个套接字数据结构上,还有信息和进一步的方法扩展,以套接字所属的协议(protocol)为条件。

背景发生了很多事情,阅读源代码肯定是最好的信息,还有关于这个主题的非常好的文献:O'Reilly Understanding Linux Network Internals .

希望这对您有所帮助!

关于c - 当我们在 c linux 中编写 socket(family, type, protocol) 时,内部到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22591309/

相关文章:

c - 此 C 程序中的段错误

r - 无法在 R 3.4.1 redhat linux 上安装软件包

c - 绑定(bind)服务器套接字: : Address already in use. UDP C编程时出错

linux - 如何使用 df 命令查找可用和已用内存总量

c - 是否允许从截断的有效负载计算 UDP 校验和?

C++ 套接字不接收传入数据包,在 Python 中工作

c - 段错误: 11 received in socket programming

c - 将变量的值传递给 C 中的宏

c - scanf 指针段错误

xml - 如何搜索xml文件,条件是文件名在文件内