ip层和4层的接口实现分析
2009-09-10 00:00:00 来源:WEB开发网首先来看一下基于3层的ipv4以及ipv6实现的一些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;
};
- ››iPhone应用帮助残障儿童看图说话
- ››iPhone实用工具AppBox Pro使用教程大揭秘
- ››IPad/IPhone 开发中的布局问题
- ››iPad2和iPhone将为苹果明年带来丰收
- ››iphone4省电方法
- ››iphone 获取地址的详细信息
- ››iPhone 库的基本内存管理策略
- ››iPhone加密文字亲手做 私密信息有保障
- ››iphone 根据经纬度坐标取详细地址(包括国,省,市...
- ››iphone/ipad ios cocoa object-c 近期苹果UI部分小...
- ››iphone中如何进行多线程编程
- ››iPhone OS SDK的这些事[安装、下载、版本、实例、...
更多精彩
赞助商链接