第19章 一个简单网络协议栈的.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第19章 一个简单网络协议栈的

第19章 一个简单网络协议栈的例子SIP 本章主要对网络协议栈SIP进行介绍,包含如下的内容 SIP网络协议栈的功能定义 SIP网络协议栈的架构 SIP网络协议栈的存储缓冲区 SIP网络协议栈的网络接口层 SIP网络协议栈的ARP层协议 SIP网络协议栈的IP层协议 SIP网络协议栈的ICMP层的实现方式进行介绍。 SIP网络协议栈的UDP协议层的实现方式进行介绍,并对例如bind、connect、send、recv等主要的接口的实现进行解析。 SIP网络协议栈的协议无关层进行介绍。 SIP网络协议栈的用户接口层的相关函数的实现方式进行介绍。 19.1 SIP网络协议栈的功能描述 SIP网络协议栈是Simple IP Stack的简称,基于应用层实现的一个简单的网络协议栈模型。SIP网络协议栈的目的用于展示网络协议栈的架构,向读者介绍网络协议的细节部分,使得读者有一个可以参考的简单网络协议栈模型。通过对SIP网络协议栈的了解可以更深入的了解网络协议、了解网络协议栈实现时候的一些问题。 19.1.1 SIP网络协议栈的基本功能描述 SIP网络协议栈符合网络协议的标准,主要是对RFC标准的兼容。能够对网络数据进行解析,实现所定义功能。SIP网络协议栈主要包含如下几个部分的协议支持: 以太网的支持。 ARP协议的支持。 IP协议的支持。 ICMP协议支持。 UDP协议的支持。 协议抽象层的支持。 用户接口的支持。 19.1.2 SIP网络协议栈的分层功能描述 SIP网络协议栈采用逻辑上的分层结构,相邻两层之间会有互相调用的关系,间隔的各层之间没有明显的联系。这种设计方式一方面能够将网络协议的层间结构和实现比较容易的对应起来;更重要的是架构设计和实现的时候容易完成,测试和调试软件容易,即使某个层出现问题,也不会将问题扩散到其他各层上,造成软件开发的极大困难。 19.1.2 SIP网络协议栈的分层功能描述 19.1.3 SIP网络协议栈的用户接口功能描述 SIP网络协议栈提供用户应用层接口API函数,这些应用层API函数可以满足用户基本的网络程序设计需要,可以进行基本的网络连接的初始化、建立、数据的接收、数据的发送、简单的连接控制等,如表19-1所示。SIP网络协议栈提供给用户的API函数可以分为三类: 基本用户接口函数 用户IO接口函数 连接和协议栈的控制类函数 19.1.3 SIP网络协议栈的用户接口功能描述 19.2 SIP网络协议栈的架构 小节19.1中对SIP网络协议栈的基本功能进行了说明,本小节中对SIP网络协议栈的架构进行介绍。对SIP中的各个模块的相互关系和数据流的方向进行说明,简单介绍各层级之间的关系。由于SIP中采用了各层基本一致的处理架构,显得SIP网络协议栈看起来很简单。 SIP网络协议栈是一个在应用层实现的网络协议栈,为了能够达到这个目标,有两个方面的影响: 为了方便协议栈的实现。 为了能够实现应用层的网络协议栈而又能利用现有的系统,不必重新编写网卡的驱动程序,SIP网络协议栈的以太网层采用了一个虚拟的网卡,使用SOCK_PACKET,对Linux内核网络协议栈的网卡数据直接操作。 19.2 SIP网络协议栈的架构 19.3 SIP网络协议栈的存储区缓存 网络协议栈对存储器的管理提出了比较高的要求,需要存储器能够对所管理的网络数据在层间进行变换的时候能够灵活的应对,适应不同网所协议的需求,并能够尽量的减少这些操作所占用的系统资源。SIP采用了和Linux内核网络协议栈相似的存储区缓存管理器,skbuff。 19.3.1 SIP存储缓冲的结构定义 SIP网络协议栈中的存储缓冲结构定义为skbuff,它主要包含各个不同层次的协议结构指针,控制指针和网络数据的指针。 1.skbuff结构的原型 2.结构skbuff的用途 3.结构skbuff在不同层中的作用 19.3.1 SIP存储缓冲的结构定义 19.3.2 SIP存储缓冲的处理函数 为了方便对结构skbuff的处理,构造了几个用于结构skbuff处理的函数,有用户申请skbuff结构的函数skb_alloc()、用户skbuff释放的skb_free()、用于skbuff复制的skb_clone()和用于skbuff指针移动的skb_put()。 1.函数skb_alloc的作用 2.函数skb_alloc的实现代码 19.3.2 SIP存储缓冲的处理函数 19.4 SIP网络协议栈的网络接口层 SIP网络协议栈的网络接口层构建了一个虚拟的网卡类似结构来实现网络数据的收发。主要包含接收和发送两个部分,接收到数据后进行数据的网络接口层处理,按照不同协议分发给不同的上层协议;发送的数据,进行以太网层头部的封装后发送出去。网络接口层使用S

文档评论(0)

wnqwwy20 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档