Linux 内核 IPv4 套接字创建机制与协议表管理深度解析
一、inet_create:IPv4 套接字创建的核心引擎
1.1 核心功能与执行流程
inet_create 是 Linux 内核处理 socket(AF_INET, type, protocol) 系统调用的核心实现,主要完成以下关键任务:
-
协议匹配与初始化:根据套接字类型和协议号匹配协议处理模块
-
资源分配:创建并初始化套接字核心数据结构
-
协议特性配置:设置端口重用、PMTU 发现等网络参数
-
安全校验:执行能力检查与安全模块回调
其执行流程可分为七个关键阶段:
// 简化的代码执行流程 int inet_create(struct net *net, struct socket *sock, ...) {// 1. 协议匹配list_for_each_entry_rcu(answer, &inetsw[sock->type], list) {if (protocol == answer->protocol) break;}// 2. 动态模块加载if (unlikely(!answer)) {request_module("net-pf-%d-proto