开发学院软件开发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)
赞助商链接