44实现IPv4.doc

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

4.4 实现IPv4转发 4.4.1实验目的 通过前面的实验,我们已经深入了解了 IPv4 协议的分组接收和发送处 理流程。本实验需要将实验模块的角色定位从通信两端的主机转移到作为中间节点的路由器上,在 IPv4 分组收发处理的基础上,实现分组的路由转发 功能。 网络层协议最为关注的是如何将 IPv4分组从源主机通过网络送达目的 主机,这个任务就是由路由器中的 IPv4协议模块所承担。路由器根据自身 所获得的路由信息,将收到的 IPv4分组转发给正确的下一跳路由器。如此 逐跳地对分组进行转发,直至该分组抵达目的主机。IPv4分组转发是路由器 最为重要的功能。 本实验设计模拟实现路由器中的 IPv4 协议,可以在原有 IPv4 分组收发实验的基础上,增加 IPv4分组的转发功能。对网络的观察视角由主机转移到路由器中,了解路由器是如何为分组选择路由,并逐跳地将分组发送到目 的主机。本实验中也会初步接触路由表这一重要的数据结构,认识路由器是 如何根据路由表对分组进行转发的。 4.4.2实验要点 1、转发流程 分组转发是路由器最重要的功能。分组转发的依据是路由信息,以此将目的地址不同的 分组发送到相应的接口上,逐跳转发,并最终到达目的主机。 本实验要求按照路由器协议栈的 IPv4 协议功能进行设计实现,接收处理所有收到的分组(而不只是目的地址为本机地址的分组),并根据分组的 IPV4 目的地址结合相关的路由信息,对分组进行转发、接收或丢弃操作。 实验的主要流程和系统接口函数与前面“IP收发实验”基本相同。在下层接收接口函数 Stud_fwd_deal( )中,实现分组接收处理。 主要功能是根据分组中目的 IPv4 地址结合对应的路由信息对分组进行处理。分组需要上交,则调用接口函数 Fwd_LocalRcv( ) ;需要丢弃,则调用函数 Fwd_DiscardPkt( );需要转发,则进行转发操作。转发操作的实现要点包括,TTL 值减 1,然后重新计算头校验和,最后调用发送接口函数 Fwd_SendtoLower( ) 将分组发送出去。注意,接口函数 Fwd_SendtoLower( )比前面实验增加了一个参数 pNxtHopAddr,要求在调用时传入下一跳的 IPv4 地址,此地址是通过查找路由表得到的。 另外,本实验增加了一个路由表配置的接口,要求能 够根据系统所给信息来设定本机路由表。实验中只需要简单地设置静态路由信息,以作为分组接收和发送处理的判断依据,而路由信息的动态获取和交互,在有关路由协议的实验(RIP协议)中会重点涉及。 2、路由表设计 与前面IP实验不同的是,在本实验中分组接收和发送过程中都需要引入路由表的查找步骤。路由器的主要任务是进行分组转发,它所接收的多数分组都是需要进行转发的,而不像主机协议栈中 IPv4 模块只接收发送给本机的分组;另外,路由器也要接收处理发送给本机的一些分组,如路由协议的分组(RIP 实验中会涉及到)、ICMP 分组等。如何确定对各种分组的处理 操作类型,就需要根据分组的 IPV4 目的地址结合路由信息进行判断。 一般而言,路由信息包括地址段、距离、下一跳地址、操作类型等。在接收到IPv4分组后,要通过其目的地址匹配地址段来判断是否为本机地址, 如果是则本机接收;如果不是,则通过其目的地址段查找路由表信息,从而得到进一步的操作类型,转发情况下还要获得下一跳的IPv4地址。发送IPv4分组时,也要拿目的地址来查找路由表,得到下一跳的 IPv4地址,然后调用发送接口函数做进一步处理。在前面实验中,发送流程中没有查找路由表来确定下一跳地址的步骤,这项工作由系统来完成了,在本实验中则作为实验内容要求学生实现。需要进一步说明的是,在转发路径中,本路由器可能是路径上的最后一跳,可以直接转发给目的主机,此时下一跳的地址就是IPv4分组的目的地址;如果本路由器不是最后一跳,下一跳的地址是从对应的路由信息中获取的。因此,在路由表中转发类型要区分最后一跳和非最后一跳的情况。 路由表数据结构的设计是非常重要的,会极大地影响路由表的查找速度,进而影响路由器的分组转发性能。本实验中虽然不会涉及大量分组的处理问题,但良好且高效的数据结构无疑会为后面的实验奠定良好的基础。链表结构是最简单的,但效率比较低;树型结构的查找效率会提高很多,但组织和维护有些复杂,学生可以根据自己的编程能力和习惯自主进行路由表数据结构的设计。 需要注意的是,路由查找遵循最长匹配原则,最长匹配原则就是如果有多条符合条件的路由匹配,选择子网掩码最长的一个路由。 4.4.3 实验内容 1、实验要求 本实验只涉及编程实验,在前面IPv4分组收发实验的基础上,增加分组转发功能。具体来说,对于每一个到达本机的IPv4分组,根据其目

文档评论(0)

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

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

1亿VIP精品文档

相关文档