当我们在c linux中编写套接字(系列,类型,协议)时,内部会发生什么?

时间:2014-03-23 13:06:48

标签: c linux sockets networking

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

1 个答案:

答案 0 :(得分:2)

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

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

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

希望这有帮助!