- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux网络设备分析
潘纲 9811536
浙江大学计算机系 pg@ccnt.zju.edu.cn
[摘要] 在本文中,首先概括了网络设备总体特征和工作原理,接着在分析了一个重要的数据结构device后,重点剖析了网络设备的整个初始化工作过程;简单地分析了设备的打开和关闭的操作后,是有关数据包的传输和接收的分析;在最后,本文对写网络设备驱动程序做了一个总结。以上的每部分的分析,都是在NE2000以太网卡的基础上进行的。在附录中是一个虚拟的字符设备驱动程序以及写这个程序的体会,该程序已成功使用过,它是在网络设备分析之前本人做的一个小小的试验。
网络设备概述
在LINUX中,为了简化对设备的管理,所有外围的硬件设备被归结为三类:字符设备(如键盘、鼠标等)、块设备(如硬盘、光驱、软驱等)和网络设备(也称为网络接口,network inferface),如以太网卡。在本文中,我们将等效使用“网络设备”和“网络接口”这两个概念,而对某个具体的网络设备,我们将称之为“物理设备”或“物理网络设备”。
为了屏蔽网络环境中物理网络设备的多样性,LINUX对所有的物理设备进行抽象并定义了一个统一的概念,称之为接口(Interface)。所有对网络硬件的访问都是通过接口进行的,接口提供了一个对所有类型的硬件一致化的操作集合来处理基本数据的发送和接收。一个网络接口被看作是一个发送和接收数据包(packets)的实体。对于每个网络接口,都用一个device的数据结构表示,有关该数据结构的具体内容,将在本文的后面详细介绍。通常,网络设备是一个物理设备如以太网卡,但软件也可以作为网络设备,如回送设备(loopback)。在内核启动时,通过网络设备驱动程序,将登记存在的网络设备。设备用标准的支持网络的机制来转递收到的数据到相应的网络层。所有被发送和接收的包都用数据结构sk_buff表示。这是一个具有很好的灵活性的数据结构,可以很容易增加或删除网络协议数据包的首部。
网络设备作为其中的三类设备之一,它有其非常特殊的地方。它与字符设备及块设备都有很大的不同:
网络接口不存在于Linux的文件系统中,而是在核心中用一个device数据结构表示的。每一个字符设备或块设备则在文件系统中都存在一个相应的特殊设备文件来表示该设备,如/dev/hda1、/dev/sda1、/dev/tty1等。网络设备在做数据包发送和接收时,直接通过接口访问,不需要进行文件的操作;而对字符设备和块设备的访问都需通过文件操作界面。
网络接口是在系统初始化时实时生成的,对于核心支持的但不存在的物理网络设备,将不可能有与之相对应的device结构。而对于字符设备和块设备,即使该物理设备不存在,在/dev下也必定有相应的特殊文件与之相对应。且在系统初始化时,核心将会对所有内核支持的字符设备和块设备进行登记,初始化该设备的文件操作界面(struct file_operations),而不管该设备在物理上是否存在。
以上两点是网络设备与其他设备之间存在的最主要的不同。然而,它们之间又有一些共同之处,如在系统中一个网络设备的角色和一个安装的块设备相似。一个块设备在blk_dev数组及核心其他的数据结构中登记自己,然后根据请求,通过自己的request_function函数“发送”和“接收”数据块。相似地,为了能与外面世界进行数据交流,一个网络接口也必须在一个特殊的数据结构中登记自己。
在系统内核中,存在字符设备管理表chardevs和块设备管理表blkdevs,这两张保存着指向file_operations结构的指针的设备管理表,分别用来描述各种字符驱动程序和块设备驱动程序。类似地,在内核中也存在着一张网络接口管理表dev_base,但与前两张表不同,dev_base是指向device结构的指针,因为网络设备是通过device数据结构来表示的。dev_base实际上是一条device结构链表的表头,在系统初始化完成以后,系统检测到的网络设备将自动地保存在这张链表中,其中每一个链表单元表示一个存在的物理网络设备。当要发送数据时,网络子系统将根据系统路由表选择相应的网络接口进行数据传输,而当接收到数据包时,通过驱动程序登记的中断服务程序进行数据的接收处理(软件网络接口除外)。以下是网络设备工作原理图:
图一 Linux网络设备工作原理图
每一个具体的网络接口都应该有一个名字,以在系统中能唯一标识一个网络接口。通常一个名字仅表明该接口的类型。Linux对网络设备命名有以下约定:(其中N为一个非负整数)
ethN 以太网接口,包括10Mbps和100Mbps;
trN 令牌环接口;
slN SLIP网络接口;
pppN PPP网络接口,包括同步和异步;
plip
您可能关注的文档
- 有限元的分析大作业试题.doc
- 有限元的分析的应用领域.ppt
- 怎样看待“中国道路”“中国模式”.doc
- 怎样科学管理时间t.ppt
- 植物微量元素营养及微量元素肥料.ppt
- 植物纤维化学答案.doc
- 中国南北方文化差异.ppt
- 中国农业大学科技成果汇编 -种植篇.doc
- 中国企业管理者素质能力调查.ppt
- 中图版城市化课件.ppt
- AI技术背景下课堂教学质量评价体系的理论基础与框架构建.docx
- 2024年化验员能力检测试卷A4版附答案详解.docx
- 2024年化验员能力检测试卷含答案详解(模拟题).docx
- 2024年化验员能力检测试卷及参考答案详解(巩固).docx
- 基于国家智慧教育云平台的职业教育资源整合与共享模式创新研究教学研究课题报告.docx
- “建筑结构抗震设计与施工技术研究”教学研究课题报告.docx
- 《中西医结合治疗糖尿病周围神经病变的中医护理安全管理研究》教学研究课题报告.docx
- 《云计算时代企业数据安全存储的云安全态势感知与预警策略》教学研究课题报告.docx
- 高中探究式学习在学生数字素养发展中的应用策略研究教学研究课题报告.docx
- 初中语文与哲学学科结合的哲学思想与文学创作教学研究教学研究课题报告.docx
最近下载
- 管理学论文5000字.docx VIP
- 新修订特种作业(高处安装、维护、拆除作业)考试题库(核心题版).pdf VIP
- 《服装设计基础》知识考试复习题库资料(含答案).pdf VIP
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题荟萃附答案.docx
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题荟萃附答案.docx
- 2024最新传唤证模板.doc VIP
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题集锦(频考类试题)带答案.docx
- 2025年高压电工复审考试题库库+答案.docx VIP
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题集锦(频考类试题)带答案.docx
- 车轮制动器教案.doc VIP
文档评论(0)