WEB开发网
开发学院软件开发Java ip层和4层的接口实现分析 阅读

ip层和4层的接口实现分析

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示: 然后这些协议的注册都是在内核boot的时候在inet_init中初始化的,下面就是inet_init的代码片段.: Java代码 staticint__initinet_init(void){.........................................../**Addall

然后这些协议的注册都是在内核boot的时候在inet_init中初始化的,下面就是inet_init的代码片段.:

Java代码 static int __init inet_init(void) 
{ 
 ........................................... 
 /* 
 * Add all the base protocols. 
 */ 
 
 if (inet_add_protocol(&icmp_protocol, IPPROTO_ICMP) < 0) 
 printk(KERN_CRIT "inet_init: Cannot add ICMP protocol\n"); 
 if (inet_add_protocol(&udp_protocol, IPPROTO_UDP) < 0) 
 printk(KERN_CRIT "inet_init: Cannot add UDP protocol\n"); 
 if (inet_add_protocol(&tcp_protocol, IPPROTO_TCP) < 0) 
 printk(KERN_CRIT "inet_init: Cannot add TCP protocol\n"); 
#ifdef CONFIG_IP_MULTICAST 
 if (inet_add_protocol(&igmp_protocol, IPPROTO_IGMP) < 0) 
 printk(KERN_CRIT "inet_init: Cannot add IGMP protocol\n"); 
#endif 
 
.................................. 
}

知道协议如何注册之后,我们来分析ip_local_deliver_finish函数,来看3层是如何将数据包发送到4层的.

1 我们知道linux支持raw数据包的发送,因此在这里会对raw socket进行了特殊处理,它会clone一份数据包然后传递给相应的raw处理函数,然后再继续后面的处理.

2 ipsec.这时还需要加上相应的ipsec头,然后再传给4层处理.看下面的图: 

ip层和4层的接口实现分析

上一页  1 2 3 4 5  下一页

Tags:ip 接口 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接