1. 套接字创建与内核结构体的双向关联
当应用程序调用 socket()
系统调用时,内核会为该套接字分配一个 struct file
结构体,并初始化其中的 private_data
指针指向一个 struct socket
结构体。
同时,struct socket
中的 file
指针会反向指向这个 struct file
结构体。这种双向关联使得内核能够在需要时,在两者间进行导航。
2. 套接字结构体的层次与嵌套关系
在 Linux 内核中,不同类型的套接字(TCP / UDP)通过一系列嵌套的结构体来实现其特定的功能。
以下是这些结构体的层次关系和它们之间的嵌套方式:
// Kernel linux-2.6.24
struct sock;
struct inet_sock;