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

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

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示:首先来看一下基于3层的ipv4以及ipv6实现的一些4层的协议: 图片看不清楚?请点击这里查看原图(大图)。这里要注意并没有IGMPV6,这是因为在ipv6中,它是作为iCMPv6的一部分实现的. 首先我们要知道输入数据包的ip头中的protocol域标识了,将要传递的4层协议. 我们这里主要介绍的是ip数据包从3层传

首先来看一下基于3层的ipv4以及ipv6实现的一些4层的协议:

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

图片看不清楚?请点击这里查看原图(大图)。 

这里要注意并没有IGMPV6,这是因为在ipv6中,它是作为iCMPv6的一部分实现的.

首先我们要知道输入数据包的ip头中的protocol域标识了,将要传递的4层协议.

我们这里主要介绍的是ip数据包从3层传递到4层的接口(也就是输入帧接口).而输出帧的处理,我前面的blog都已经有介绍,想了解的话,可以去看前面的blog.

先来看主要的数据结构,然后我们会分析ip_local_deliver_finish函数(也就是3层处理的出口函数).

在内核中,每一个4层协议都是一个net_protocol结构体,而内核会在启动的时候将所有的4层协议都注册到一个数组inet_protos中,然后根据数据包的ip头来得到相应的handle函数:

Java代码

struct net_protocol { 
///协议的处理函数,也就是将要处理输入数据报的4层协议的处理函数. 
 int  (*handler)(struct sk_buff *skb); 
///协议的错误处理函数. 
 void  (*err_handler)(struct sk_buff *skb, u32 info); 
///gso相关的两个函数. 
 int  (*gso_send_check)(struct sk_buff *skb); 
 struct sk_buff    *(*gso_segment)(struct sk_buff *skb, 
      int features); 
 
///主要是被ipsec所使用的两个域 
 unsigned int no_policy:1, 
  netns_ok:1; 
}; 

1 2 3 4 5  下一页

Tags:ip 接口 实现

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接