02网络协议第二讲(网络协议分析及编程 用TCP IP进行网际互联 课件).ppt

02网络协议第二讲(网络协议分析及编程 用TCP IP进行网际互联 课件).ppt

  1. 1、本文档共113页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网际协议与选路 第5章IP:软件的总体结构 5.1 引言 本章所关心的是实现网际协议(IP)的软件的组织结构。IP提供的功能看似简单,但它的纷繁难懂使软件的实现过程变得复杂,而其精细微妙之处又使软件很难做到准确无误。在讲解IP的过程中,为了不至于因突然涉及所有部分而使人无法接受,我们将具体实现方案分3章讨论。本章给出了数据结构并描述软件的整体结构,还讨论了IP软件的理论性操作以及通过IP层的数据报流程。在稍后的章节中,还要详述选路和差错处理的细节,展示IP软件中的各段程序代码是如何使用这些数据结构的。 5.2 中心环节 单从主机的角度来看,人们会很自然地将IP软件分为两个不同的部分考虑:一部分处理输入,另一部分处理输出。输入部分使用IP首部中的PROTO字段来决定应该由上层协议中的哪个模块来接收传入数据报。输出部分使用一张本地选路表来选择外发数据报要送往的下一跳。 它使得IP和上层协议软件之间的沟通变得十分笨拙。另外,网关中的选路过程要比主机中的更复杂。由于一个网关必须将发送来的数据报继续转送到它的下一跳.所以网关中的软件都不能轻易地被划分成输入和输出部分。这样,在IP处理传入数据报时可能会产生输出数据。而当发送来的数据报引起错误时,网关还必须生成ICMP差错信息,这更进一步地使输入和输出的界限模糊。 5.3 lP软件设计思想 为保持IP软件的简单性和统一性,在范例中采用的组织结构上的技巧有: ●统一的输入队列及统一的选路过程。 ●独立的IP进程。 ●本地主机接口。 虽然建立网关的必要性引发了许多的设计思想,但针对网关的设计在主机上同样有效,并允许在主机和网关上使用同样的程序。 5.4 IP软件结构和数据报流程 5.4.1 选择传入数据报的策略 在第3章中曾提到过,每个网络接口,包括伪网络接口,都有属于自己的、送往IP进程的数据报队列:图5.1描画出该数据流。 如果有多个数据报正在输入队列中等待,IP进程必须选取其中之一,并为其选择路由。IP选取哪一个数据报将决定系统的行为: 挑选数据报并为其选择路由的IP程序段实现了一个重要策略;它决定了数据报来源的相对优先级。 5.4.1 选择传入数据报的策略 正确的做法是公平分配优先权,使传入和外发数据流在选择路由时享有平等的优先权。我们的实现策略是以循环法(round-robin)来选择数据报,以期达到公平合理。也就是说,它从某个队列中选择出一个数据报,并为其做路由处理之后,继续向前移动并检查下一个队列。如果有K个含有数据报的队列正在等待着路由处理,那么IP在处理完所有K个队列中的第一个数据报之后,才有可能处理到任一队列中的第二个数据报。 过程ipgetp实现了循环法选择的策略 5.4.1 选择传入数据报的策略 正如程序代码所示,静态变量ifnext用作接口数组的索引。它遍历整个网络接口结构。在每个接口中,它检查状态变量ni_state,以确定接口是否已被打开。当ipgetp发现一个打开的接口中有正在等待的数据报时,它就使用宏NIGET来提取并返回第一个数据报。再次调用ipgetp时.将跨过前一次处理的接口,继续查找: 5.4.2 允许IP进程被阻塞 过程ipgetp包含了一种微妙的优化思想: 如果所有输入队列都空,IP进程在调用过程ipgetp时被阻塞。一旦有一个数据报到达,IP进程就恢复执行并立刻检查已有数据报到达的那个接口。 首先,当与某个特定接口相关联的设备驱动程序在它的输入队列中放入一个数据报时.就向IP进程发送一个报文。其次,ipgetp中的循环语句以调用receive结束,在ipgetp遍历了所有网络接口而没有发现任何数据报之后,它调用receive,receive在信息到达之前为阻塞状态。当ipgetp返回时,它以函数值的形式向主调过程传送一个报文。报文中包含了一个指针,指向已有数据报到达的接口。ipgetp将该接口指针赋值给ifnext,并重新开始遍历 5.4.2 允许IP进程被阻塞 既然已经知道了IP所使用的选择数据报的策略,那么来查看一下IP进程的结构;其基本算法非常简单。IP不断地调用ipgetp来选择一个数据报,接着调用一个过程来计算下一跳的地址,并将数据报置入与将要发送该数据报的网络接口相关联的队列中。 尽管从概念上看似简单,但许多细节问题使程序代码复杂化。例如,如果数据报来自于某个网络,IP必须验证此数据报的校验和是否正确。如果选路表中没有指定的目的站,

文档评论(0)

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

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

1亿VIP精品文档

相关文档