- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ipv6初始化和处理流程分析
Ipv6初始化和处理流程分析一.Ipv6的初始化1.网络子系统概述Linux 内核中,与网络相关的代码是一个相对独立的子系统,称为网络子系统。网络子系统是一个层次化的结构,可分为以下几个层次:1)Socket 层Linux 在发展过程中,采用 BSD socket APIs 作为自己的网络相关的 API 接口。同时,Linux 的目标又要能支持各种不同的协议族,而且这些协议族都可以使用 BSD socket APIs 作为应用层的编程接口。因此,在 socket APIs 与协议族层之间抽象出一个 socket 层,用于将 user space 的 socket API 调用,转给具体的协议族做处理。2)协议族层(INET协议族、INET6协议族等)Linux 网络子系统功能上相当完备,它不仅支持 INET 协议族(也就是通常所说的 TCP/IP stack),而且还支持其它很多种协议族,如 DECnet, ROSE, NETBEUI 等。INET6 就是一种新增加的协议族。对于 INET、INET6 协议族来说,又进一步划分为传输层和网络层。?3)设备驱动层设备驱动层则主要将协议族层与物理的网络设备隔离开。它不在本文的讨论范围之内。下图是 Linux 网络系统层次结构图。2.网络子系统的初始化1)Socket 层的初始化:Init()-do_basic_setup()-sock_init()Sock_init():对 sock 和 skbuff 结构进行 SLAB 内存的初始化工作2)各种网络协议族的初始化:Do_initcalls():对于编译到内核中的功能模块(而不是以模块的形式动态加载),它的初始化函数会在这个地方被调用到。?内核映象中专门有一个初始化段,所有编译到内核中的功能模块的初始化函数都会加入到这个段中;而 do_initcalls() 就是依次执行初始化段中的这些函数。INET 协议族通常是被编译进内核的;它的模块初始化函数是 net/ipv4/af_inet.c 中的 inet_init() 而INET6 是作为一个模块编译的。它的模块初始化函数是 net/ipv6/af_inet6.c 中的 inet6_init()3.协议族Linux 网络子系统可以支持不同的协议族,Linux 所支持的协议族定义在 include/linux/socket.h1)协议族数据结构协议族数据结构是 struct net_proto_family。struct?net_proto_family?{????????????int?????????????????????family;????????????int?????????????????????(*create)(struct?socket?*sock,?int?protocol);????????????short?????????????????authentication;????????????short?????????????????encryption;????????????short?????????????????encrypt_net;????????????struct?module????*owner;};这个结构中,最重要的是create 函数,一个新的协议族,必须提供此函数的实现。这是因为:???? 不同的网络协议族,从user space的使用方法来说,都是一样的,都是先调用socket()来创建一个 socket fd,然后通过这个fd发送/接收数据。在user space 通过 socket() 系统调用进入内核后,根据第一个参数协议族类型,来调用相应协议族create()函数。对INET6来说,这个函数inet6_create()。因此,要实现一个新的协议族,首先需要提供一个create() 的实现。关于 create() 里面具体做了什么,后面再叙述。Linux 系统通过这种方式,可以很方便的支持新的网络协议族,而不用修改已有的代码。这很好的符合了“开-闭原则”,对扩展开放,对修改封闭。2)协议族注册Linux 维护一个struct net_proto_family ?的数组net_families[]如果要支持一个新的网络协议族,那么需要定义自己的struct net_proto_family,并且通过调用sock_register 将它注册到 net_families[] 中。4.sock层socket 层又叫 “socket access protocol layer”。它处于 BSD socket APIs 与底层具体的协议族之间。这是一个抽象层,它起着承上启下的作用。在这一层的数据结构也有着这种特点1)数据结构在 us
您可能关注的文档
- ANSYS多窗口显示教程.doc
- AO法生活污水处理工艺.doc
- AO设计方案4-11.doc
- 911配套站场改造碰口方案.docx
- AT500600安装调试操作手册.doc
- aurora协议.doc
- ARM微处理器体系结构及其发展趋势.docx
- AT500600磁致伸缩液位计安装调试操作手册.doc
- BBD系列双进双出钢球磨煤机结构及工作原理.docx
- BUG处理流程规范.doc
- 1.1细胞是生命活动的基本单位课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 1.2细胞的多样性和统一性第1课时课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 第16课《白杨礼赞》课件-2025-2026学年统编版语文八年级上册.pptx
- 2026届高三生物一轮复习课件+减数分裂与生物的遗传、变异.pptx
- 3.1细胞膜的结构和功能第2课时课件-2025-2026学年高一上学期生物人教版必修1.pptx
- 2025届高三生物一轮复习课件2.1减数分裂和受精作用.ppt
- 中考语文二轮专题复习课件:新闻概括题.pptx
- 第6课《我看》课件+++2025-2026学年统编版语文九年级上册.pptx
- 第21课《人民英雄永存不朽》课件-2025-2026学年统编版语文八年级上册.pptx
- 2025年广西河池罗城特聘农机技术指导员的(1人)考前自测高频考点模拟试题含答案详解(b卷).docx
文档评论(0)