• 正在加载中...
  • 网络层

    网络层是OSI参考模型中的第三层,介于运输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若直干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。

    编辑摘要

    基本信息 编辑信息模块

    中文名: 网络层 英文名: The network layer
    目的: 数据透明传送 内容: 虚电路分组交换等

    目录

    功能目的/网络层 编辑

    网络层网络层
    网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使运输层不需要了解网络中的数据传输和交换技术。为了说明网络层的功能,如图4.1所示的交换网络拓扑结构,它是由若干个网络节点按照任意的拓扑结构相互连接而成的。网络层关系到通信子网的运行控制,体现了网络应用环境中资源子网访问通信子网的方式。网络层从物理上来讲一般分布地域宽广,从逻辑上来讲功能复杂,因此是OSI模型中面向数据通信的下三层(也即通信子网)中最为复杂也最关键的一层。

    虚电路和数据报/网络层 编辑

    网络层网络层

    端点之间的通信是依靠通信子网中的节点间通信来实现的,在OSI模型中,网络层是网络节点的最高层,所以网络层将现通信子网向端系统所提供的网络服务。在分组交换中,通信子网向端系统提供的虚电路和数据报两种网络服务,而通信子内部的操作方式也有虚电路和数据报两种。1、通信子网的虚电路操作方式及网络层提供的虚电路服务:虚电路操作方式:为了进行数据的传输,网络的源节点之间先要建立一条逻辑通路,因为这条逻辑电路不是专用的,所以称这为“虚”电路。每个节点到其它任一节点之间可能有若干条虚电路支持特定的两个端系统之间的数据传输,两个端系统之间也可以有多条虚电路为不同的进程服务。这些虚电路的实际路径可能相同,也可能不同。


    假设有两条虚电路经过某节点,当一个数据分组到达时,该节点可利用下述方法判明该分组属于哪条虚电路,并且能将其转送至下一正确节点。一个端系统每次在建立虚电路时,选择一个末被使用虚电路号分配给该虚电路,以便区别于本系统中的其它虚电路。在每个被传送的数据分组上不仅要有分组号、检验和等控制信息,还要有它要通过的虚电路的号码,为区别于其它虚电路的数据分组。在每个节点上都保存一张虚电路表,表中各项记录了一个打开的虚电路的信息,包括虚电路号、前一个节点、下一个节点等信息,这些信息是在虚电路建立过程中被确定的。上述采用固定虚电路号的虚电路表法存在着缺陷,因为各个端系统各自独立地选取虚电路号,就有可能造成虚电路号的重复,如果两条编号相同的虚电路经过同一个节点,便会产生畸义。解决的方法是采用“动态”的虚电路号。


    “动态”的虚电路号,是指各节点对同一条虚电路,根据本节点的实际情况给予可能不同的编号,与之对应的各节点的虚电路表可能也是在呼叫请求过程中建立的。比如,与A节点相连的端系统发出呼叫请求时,请求分组已含有端系统所选取的不用的最低虚电路号N,A节点到请求分组后不直接其转送给下一节点C,而是在A节点与C节点间所有已使用的虚电路号之外选取一个最低编号NA,并将请求分组中的虚电路号N替换成该编号NA,再将分组发送给下一节点C。自此以后的各节点依次逐个根据自身实际情况选取新的编号(如NB、NC、ND)等来替换收到的分组中的虚电路编号,目的节点最后将请求分组传送给连接它的端系统,这样便使得虚电路所跨越的每一段连接上的虚电路号都是唯一的。在虚电路建立好以后各类分组的传送过程中,也同样要进行如上的虚电路号的替换操作。

    网络层网络层图4-2

    在建立虚电路的同时,每个节点的虚电路中的每一项要记录两个虚电路号:前一个节点所选取的虚电路号和本节点所选取的虚电路号。这样一来,每条虚电路就有了唯一的一套虚电路编号。图4.2说明了图4.1网络中各节点的虚电路表,这里假设建立了6条虚电路。由于虚电路上的数据是双向传输的,为保证两节点之间正、反两个方向的虚电路不相混淆,在一个节点选取虚电路号来替换其前一节点使用的虚电路号时,不仅要考虑以下一节点之间的虚电路号不相同,还要考虑以下一节点作为另一条反向虚电路的上一节点时所选取的虚电路号相区别。例如,在建立虚电路1-BAE时,(这里1-BAE表示源节点为B,建立虚电路时选取1为虚电路号,并经A传送到E),在节点B中,尽管A节点是第一次作为B节点,但由于虚电路0-ABCD中A到B间已使用了虚电路号0,因此在出路一栏应选B到A间的虚电路号为1。这样,当从节点A发来一个分组时,若它所携带的虚电路号0,则说明是虚电路ABCD上的正向分组;若为1,则说明是虚电路BAE的反向分组。对于2-BFE的建立也是同样情况。


    虚电路服务:虚电路服务是网络层向运输层提供的一种使所有分组按顺序到达目的系统的可靠的数据传送方式。进行数据交换的两个端系统之间存在着一条为它们服务的虚电路。为了建立端系统之间的虚电路,源端系统的运输层首先向网络层发出连接请求,网络层则通过虚电路网络访问协议向运输层发出连接指示,最后,接收方运输层向发起方发回连接响应从而使虚电路建立起来。以后,两个端系统这间可传送数据,数据由网络层拆成若干组送给通信子网将分组传送到数据接收方。


    上述虚电路的服务是网络层向运输层提供的服务,也是通信子网向端系统提供的网络业务。但是,提供这种虚电路服务信子网内部的实际操作既可以是虚电路方式的,也可以是数据报方式的。以虚电路方式操作的网络,一般总是提供虚电路服务,OSI中面向连接的网络服务就是虚电路服务。在虚电路操作方式中,端系统的网络层同信子网节点的操作是一致的,SNA,TRANSPAC等多数公共网络都采用这种虚电路操作支持虚电路服务的方式。


    以数据报方式操作的网络,也可以提供虚电路服务,即通信子网内部节点按数据报方式交换数据,而与端系统相连的网络节点则向端系统提供虚电路服务。对于端系统来说,它的网络层与网络节点间的通信仍象虚电路操作方式的网络节点间情形一样,先建立虚电路,再交换数据分组,最后拆电路。但实际上,每个分组被网络节点分成若干个数据报,附加上地址序号、虚电路号等信息,分送到目的节点。目的节点再将数据报进行排序,拼成原来的分组,送给目的端系统。因此,源端系统和源网络节点之间、目的节点和目的网络层按虚电路操作方式交换分组,而目的节点和源节点之间则按数据报方式完成分组的交换。尽管通信子网的数据报交换不是很可靠,但是两端的网络节点做了许多诸如排序、重发等额外工作,从而满足了虚电路服务的要求。例如,在ARPANET中,内部使用数据报交换方式,但可以向端系统提供数据报和虚电路两种服务。


    2、通信子网的数据报操作方式及网络层提供的数据报服务:数据报操作方式:在数据报方式中,每个分组被称为一个数据报,若干个数据报构成一次要传送的报文或数据块。每个数据报自身携带有足够的信息,它的传送是被单独处理的。一个节点接收到一个数据报后,根据数据报中的地址信息和节点所存储的路由信息,找出一个合适的出路,把数据报原样地发送到下一个节点。当端系统要发送一个报文时,将报文拆成若干个带有序号和地址信息的数据报,依次发给网络节点。此后,各个数据报所走的路径就可能不同了,因为各个节点在随时根据网络的流量、故障等情况选择路由。由于各行其道,各数据报不能保证按顺序到达目的节点,有些数据报甚至还可能途中丢失。在整个传送过程中,不必建立虚电路,但要为每个数据报作路由选择。


    数据报服务:数据报服务一般仅由数据报交换网来提供。端系统的网络层同网络节点中的网络之间,一致地按照数据报操作方式交换数据。当系统要发送数据时,网络层给该数据附加上地址、序号等信息,作为数据报发送给网络节点;目的端系统收到的数据报可能是不按序到达的,也可能有数据报的丢失。例如,在ARPANET、DNA等网络中,就提供了数据报服务。数据报服务与OSI的无连接网络服务类似。由虚电路交换网提供数据报服务的组合方式并不常见。可以想象有这么一种特殊情况:一个端系统的网络层已经构造好了用于处理数据报的服务,而当它要接入以虚电路方式操作的网络时,网络节点就需要做一些转换工作。当端系统向网络节点发送一个携带有完整地址信息的数据报时,若发向同一地址的数据报数量足够大,则网络节点可以为这些数据报同目的节点间建立一条虚电路,所有相同地址的数据报要发送时,这条虚电路便可拆除。所以,这种数据报服务具有了虚电路服务的通信质量,但是既不经,效率也低。


    3两种操作方式及两种网络服务的特点:两种操作方式的特点:虚电路分组交换适用于端系统之间长时间的数据交换,尤其是在频繁的,但每次传送数据又很短的交互式会话情况下,免去了每个分组中地址信息的额外开销,但是每个网络节点却需要负担维持虚电路表的开销。因此,要将这两个因素进行权衡,另外还要考虑如果建立和拆除电路的次数过于频繁也不合适。数据报免去了呼叫建立过程,在分组传输数量不多的情况下要比虚电路简单灵活。每个数据报可以临时根据网络中的流量情况选取不太拥挤的链路,不象虚电路中的每个分组必须按照连接建立时的路径传送。每个节点没有额外开销,但每个分组在每个节点都要经过路由选择处理,会影响传送速度


    虚电路提供了可靠的通信功能,能保证每个分组的正确到达,且分组保持原来顺序。另外,还可以对两个数据端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送分组,但虚电路有一个致命的弱点,即当某个节点或某条链路出故障的影响面要小得多,当发生上述故障时,仅有缓存在该节点上的分组可能丢失,其它分组则可绕开故障区到达目的地,或者一直被搁置到故障修复后再传送。不过,数据报不保证数据分组的按序到达,数据的丢失也不会立即被发现。两种网络服务的特点:虚电路服务与数据报服务的本质差别表现为:是将顺序控制、差错控制和流量控制等通信功能交由通信子网完成,还是由端系统自己来完成。虚电路服务向端系统保证了数据的按序到达,免去了端系统在顺序控制上的开销。但是,当端系统本身并不关心数据的顺序时,这项功能便成了多余,反倒影响了无序数据的整体效率。


    虚电路服务向端系统提供了无差错的数据传送,但是,在端系统只要求快速的数据传送,而不在乎个别数据块丢失的情况下,虚电路服务所提供的差错控制也就并不很必要了。相反,有的端系统却要求很高的数据传送质量,虚电路服务所提供的差错控制还不能满足要求,端系统仍需要自己来进行更严格的差错控制,此时虚电路服务所做的工作又略嫌多余。不过,这种情况下,虚电路服务毕竟在一定程度上为端系统分担了一部分工作,为降低差错概率还是起了一定作用


    至于虚电路服务所提供的流量控制,有时对端系统来说也并不适宜,比如在要求数据交换速率尽可能高的情况下。因为,虚电路服务将数据总是按固定路径传送,而不灵活地走捷径;另外,流量控制本身就可能规定了交换速率的上限。虚电路服务提供了可靠的数据传送和方便的进网接口。但是,虚电路服务中电路的建立与拆除在交互式应用中会影响通信效率。可以看出,两种服务优、缺点各自参半,对二者的选择取决于应用背景,即网络用户对通信子网是要求只管数据传送而不必多管“闲事”,还是希望通信子网提供更可靠的服务来减轻自身的负担。有人将虚电路服务比作坐公共汽车,将数据报服务比作坐出租车,这种比喻在某种程度上形象地说明了两种服务的特点。

    路由选择及其算法/网络层 编辑

    网络层网络层
    通信子网络源节点和目的节点提供了多条传输路径的可能性。网络节点在收到一个分组后,要确定向一下节点传送的路径,这就是路由选择。在数据报方式中网络节点要为每个分组路由做出选择;而在虚电路方式中,只需在连接建立时确定路由。确定路由选择的策略称路由算法。设计路由算法时要考虑诸多技术要素。首先是路由算法所基于的性能指标,一种是选择最短路由,一种是选择最优路由;其次要考虑通信子网是采用虚电路还是数据报方式;其三,是采用分布式路由算法,即每节点均为到达的分组选择下一步的路由,还是采用集中式路由算法,即由中央点或始发节点来决定整个路由;其四,要考虑关于网络拓扑,流量延迟等网络信息的来源;最后,确定是采用动态路由选择策略,还是选择静态路由选择策略。


    1 、静态路由选择策略:静态路由选择策略不用测量也无须利用网络信息,这种策略按某种固定规则进行路由选择。其中还可分为泛射路由选择、固定路由选择和随机路由选择三种算法。

    (1)泛射路由选择法: 这是一种最简单的路由算法。一个网络节点从某条线路收到一个分组后,再向除该条线路外的所有线路重复发送收到的分组。结果,最先到达目的节点的一个或若干个分组肯定经过了最短的路线,而且所有可能的路径都被同时尝试过。这种方法可用于诸如军事网络等强壮性要求很高的场合,即使有的网络节点遭到破坏,只要源、目间有一条信道存在则泛射路由选择仍能保证数据的可靠传送。另外,这种方法也可用于将一条分组从数据源传送到所有其它节点的广播式数据交换中,它还可用来进行网络的最短传输延迟的测试


    (2)固定路由选择:这是一种使用较多的简单算法。每个网络节点存储一张表格,表格中每一项记录对应着某个目的节点或链路。当一个分组到达某节点时,该节点只要根据分组的地址信息便人固定的路由表中查出对应的目的节点及所应选择的下一节点。固定路由选择法的优点是简便易行,在负载稳定,拓扑结构变化不大的网络中运行效果很好。它的缺点是灵活性差,无法应付网络中发生的阻塞和故障。


    (3)随机路由选择:在这种方法中,收到分组的节点,在所有与之相邻的节点中为分组随机选择一个出路节点。方法虽然简单,也较可靠,但实际路由不是最佳路由,增加了不必要的负担,而且分组传输延迟也不可预测,故此法应用不广。


    2 、动态路由选择策略:节点路由选择要依靠网络当前的状态信息来决定的策略称动态路由选择策略,这种策略能较好地适应网络流量、拓扑结构的变化,有利于改善网络的性能。但由于算法复杂,会增加网络的负担,有时会因反应太快引起振荡或反应太慢不起作用。独立路由选择、集中路由选择和分布路由选择是三种动态路由选择策略的具体算法。

    (1)独立路由选择:在这类路由算法中,节点仅根据自己搜到的有关信息作出路由选择的决定,与其它节点不交换路由选择信息,虽然不能正确确定距离本节点较远的路由选择,但还是能较好地适应网络流量和拓扑结构的变化。一种简单的独立路由选择算法是Baran在1964年提出的热土豆(Hot Potato)算法。当一个分组到来时,节点必须尽快脱手,将其放入输出列最短的方向上排队,而不管该方向通向何方。


    (2)集中路由选择:集中路由选择也象固定路由选择一样,在每个节点上存储一张路由表。不同的是,固定路由选择算法中的节点路由表由手工制作,而在集中路由选择算法中的节点路由表由路由控制中心RCC(Routing Control Center)定时根据网络状态计算、生成并分送各相应节点。由于RCC利用了整个网络的信息,所以得到的路由选择是完美的,同时也减轻了各节点计算路由选择的负担。


    (3)分布路由选择:采用分布路由选择算法的网络,所有节点定其地与其每个相邻节点交换路由选择信息。每个节点均存储一张以网络中其它每个节点为索引的路由选择表,网络中每个节点占用表中一,每一项又分为两个部分,即所希望使用的到目的节点的输出线路和估计到目的节点所需要的延迟或距离。度量标准可以是毫秒或链路段数、等待的分组数、剩余的线路和容量等。对于延迟,节点可以直接发送一个特殊的称作“回声”(echo)的分组,接收该分组的节点将其加上时间标记后尽快送回,这样便可测出延迟。有了以上信息,节点可由此确定路由选择。

    阻塞控制/网络层 编辑

    阻塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中通常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动(局部死锁)。


    网络层网络层图4-3
    通信子网吞吐量和通信子网负荷之间一般有如图4.3 所示的关系。当通信子网负荷(即通信子网正在传输的分组数)比较小时,网络的吞吐量(单位为分组数/秒)随网络负荷(可用每个节点中分组的平均数表示)的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量反而下降,则表征网络中出现了阻塞现象。在一个出现阻塞现象的网络中,到达一个节点的分组将会遇到无缓冲区可用的情况,从而使帝些分组不得不由前一节点重传,或者需要由源节点或源端系统重传。当阻塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降,由此导致恶性循环,使通信子网的局部甚至全部处于死锁状态,网络有效吞吐量接近为。在理想的情况下,整个网络的利用率为100%,但为了使网络在高负荷上能稳定运行,应控制网络节点的队列长度,以避免由于队列无限增长而产生通信量的崩溃。有控制的网络可以以接近于理想吞吐的状态稳定运行

    【阻塞控制方法】(1)缓冲区预分配法:这种方法用于采用虚电路的分组交换网。在建立虚电路时,让呼叫请求分组途经的节点为虚电路预先分配一个或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个“忙”信号给呼叫者。这样,通过途经的各节点为每条虚电路开设的永久性缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的分组。当节点收到一个分组并将它转发出去之后,该节点向发送节点返回一个确认信息,该确认一方面意味着接收节点已正确收到分组,另一方面告诉发送节点,该节点已空出缓冲区以备接收下一分组。上面是“停-等”协议下的情况,若节点之间的协议允许多个未处理的分组存在,则为了完全消除阻塞的可能性,每个节点要为每条虚电路保留等价于窗口大小数量的缓冲区。这种方法不管有没有通信量,都有可观的资源(线路容量或存储空间)被某个连接永久地占有。由于为每条连接分配了专用资源因此不可能有效地利用网络资源。此时的分组交换跟电路交换很相似。


    (2)分组丢弃法:这种方法不用预先保留缓冲区,而在缓冲区占满时,将到来的分组丢弃。若通信子网提供的是数据报服务,则用分组丢弃法来防止阻塞发生不会引起大的影响。但若通信子网提供的是虚电路服务,则必须在某处保存被丢弃分组的拷贝,以便阻塞解决后能重新传送。有两种解决被丢弃分组重发的方法,一种是让发送被丢弃的节点超时,并重新发送分组直至分组被收到;另一种是让发送被丢弃分组的节点在尝试一定次数后放弃发送,并迫使数据源节点超时而重新开始发送。但是不加分辩地随意丢弃分组也不妥,因为一个包含确认信息的分组可以释放节点的缓冲区,若因节点无空余缓冲区来接收含确认信息的分组,这便使节点缓冲区失去了一次释放机会。解决这个问题的方法可以为每条输入链路永久地保留一块缓冲区,心用于接纳并检测所有进入的分组,对于捎带确认信息的分组,在利用了所捎带的确认释放了一个缓冲区后,再将该分组丢弃或将该捎带好消息的分组保存在刚空出的缓冲区中。


    (3)定额控制法:这种方法直接对通信子网中分组的数量进行严格、精确的限制,以防止阻塞的发生。从图4.3网络吞吐量与负荷的关系曲线中可看出,为避免阻塞,可将通信子网中正在传输的分组数保持在某一负荷值Lc以下。因此,可以设计在通信子网中存在Lc个称“许可证”的特殊信息,这些许可证中的一部分在通信子网开始工作之前预先以某种策略分配给各个源节点,另一部分则在子网开始工作后在网中四处环游。当源节点要发送一个刚从源端系统送来的分组时,它必须首先拥有这种许可证,并且每发送一个分组要注销一张许可证。而在目的节点方,则每收到一个分组并将其递交给目的端系统后,便生成一张许可证。这样,便保证了子网中分组数量不会超过许可证的数量


    【死锁及其防止】阻塞的极端后果是死锁。死锁是网络中容易发生的故障之一,即使在网络负荷不很重时也会发生。死锁发生时,一组节点由于没有空闲缓冲区而无法接收和转发分组,节点之间相互等待,即不能接收分组也不能转发分组,并永久保持这一状态,严重的甚至导致整个网络的瘫痪。此时,只能靠人工干预,重新启动网络解除死锁。但重新启动后并未消除引起死锁的隐患,所以可能再次发生死锁。死锁是由于控制技术方面的某些缺陷所引起的,起因通常难以难捉摸难以发现,即使发现,常常不能立即修复。因此,在各层协议中都必须考虑如何避免死锁的问题

    网络层网络层图4-4

    存储转发死锁及其防止: 最常见的死锁是发生在两个节点之间的直接存储转发死锁。此时,A节点的所有缓冲区全部用于输出到B节点的队列上,而B节点的所有缓冲区也全部用于输出到A节点的队列上,A节点不能从B节点接收分组,B节点也不能从A节点接收分组,如图4.4(a)所示。这种情况也可能发生在一组节点之间,每个节点都企图向相邻节点发送分组,但每个节点都无空闲缓冲区用于接收分组,这种情形称作间接存储转发死锁,如图4.4(b)所示。当一个节点处于死锁状态时,与之相连的所有链路都将被完全阻塞。


    有一种防止存储转发死锁的方法。设一通信子网直径为M,即从任一源点到一目的节点的最大中间链路段数为M,每个节点需要M+1个缓冲区,以0到M编号。对于一个源节点,规定仅当其0号缓冲区空时才能接收源端系统来的分组,而此分组仅能转发给1号缓冲区空闲的相邻节点,再由该节点将分组转发给它的2号缓冲区空闲的相邻节点......。最后,该分组或者顺利到达目的节点,并被递交给目的端系统;或者到了某个节点编号为M的缓冲区中,再也转发不下去,此时,一定发生了循环,应该将该分组丢弃。由于每个分都按照一定的顺序规则分配缓冲区,即分组所占用的缓冲区编号一直在递增,从而会使节点之间相互等待空闲缓冲区而发生死锁情况。


    重装死锁及其防止:死锁中一种比较严重的情况是生装死锁。假设发给一个端系统的报文很长,被源节点拆成若干个分组发送,目的节点要将所有具有相同报文编号的分组重新装配成报文递交给目的端系统。由于目的节点用于重装报文的缓冲区空间有限,而且它无法知道在接收的报文究竟被拆成多少个分组,此时,就可能发生严重的问题:为了接收更多的分组,该目的节点用完了它的缓冲空间,但它又不能将尚未接收并拼装完整的报文递送给目的端系统。而邻节点仍在不断地向它传送分组,但它却无法接收。


    这样,经过多次尝试后,邻节点就会绕道从其它途径再向该目的节点传送分组,但该目的节点已被牢牢锁死,其周围区域也由此发生了阻塞现象。下面几种方法可以用于免重装死锁的发生: 允许目的节点将不完整的报文递交给目的端系统。 一个不能完整重装的报文能被检测出来,并要求发送该报文的源端系统重新传送。 为每个节点配备一个后备缓冲空间,当重装死锁发生时,将不完整的报文暂移至后备缓冲区中。两种方法不能很满意地解决重装死锁,因为它们使端系统中的协议复杂化了。一般的设计中,网络层应该对端系统透明,也即端系统不该考虑诸如报文拆、装之类的事情。第三种方法虽然不涉及端系统,但每个点增加了开销,降低了可靠性。

    X.25协议/网络层 编辑

    CCTT于1974年提出了对于分组交换网(Packet-Switched Network,PSN)的标准访问协议---X.25,并于1976、1980、1984和1988年相继作了修订,X.25描述了主机(DTE)与分组交换网(PSN)之间的接口标准,使主机不必关心网络内部的操作,从而能方便地实现对各种不同网络的访问

    网络层图4-5

    1 、X.25协议层次:X.25实际上是DTE与PSN之间接口的一组协议,X.25协议组包括三个层次,即物理层、数据链路层和分组层,分别定义了三个级别上的接(见图4.5)。从图4.5(a)可看出,X.25的三个协议级仅具有本地意义,这与端到端操作的运输层协议不同(MQB ltu 4.5(b))。X.25的分组纩的主要功能相当于OSI参考模型中的第三层,即网功能是向主机提供多信道的道的虚电路服务。


    2 、X.25分组级的功能:X.25分组级的主要功能是将数据链路层所提供的连接DTE/DCE的一条或多条物理链路复用成数条逻辑信道,并且对每一逻辑信道所建立的虚电路执行与链路层单链路协议类似的链路建立、数据传输、流量控制、顺序和差错检测、链路的拆除等操作。所发送的数据均按分组格式,各种类型的分组长度及交互时的逻辑顺序在标准中均有严格的规定。利用X.25分组级协议,可向网络层的用户提供多个虚电路连接,使用户可以同时与公用数据网中若干个其它X.25数据终端用户(DTE)通信


    在X.25中,DCE向DTE提供本地DTE之间的虚电路业务,这里包括两种虚电路:一种是虚呼叫业务,即虚电路请求DTE向DCE发出呼叫请求分组,接收方DCE向被呼DTE发出呼叫分组;然后被DTE发出呼叫接受分组,主呼DTE收到呼叩连通分组,由另一方确认后,虚电路便被拆除。另一种是永久虚电路,即它们是在DTE接入X.25网中时由协商指定的DTE之间的不需要呼叫建立与拆除过除过程的虚电路。在正常情况下,永久虚电路两端的DTE可随时发送与接收数据。正如4.1节中介绍过的一样,每条虚电路都被赋 一个虚电路号。在X.25中,一个虚电路号由逻辑信道组号(<15)和逻辑信道号(<225)组成,而且在虚电路两端的虚电路号是互相无关的,由DCE将虚电路号映射到虚电路上去。用于虚呼叫的虚电路号范围和永久虚电路的虚电路号应在签订业务时与管理部门协商确定与分配。


    公用数据网有两种操作方式,一种是虚电路方式,另一种是数据报方式。尽管其它一些网络体系结构(如Ethernet)仍在有效地使用数据报技术,但数据报服务已在1980年的修订中被从X.25标准中删去,取而代之的是一个称作快速选择(FastSelect)的可选扩选扩充业务。X.25所规定的虚电路服务属于面向连接的OSI服务方式,这正好符合OSI参考模型中的网络系层服务标准定义,为公用数据网与OSI结合提供了可能性。OSI网络层的功能是提供独立于运输层的中继器和路由选择以及其它与之相关的功能。在面向连接的网络层服务中,要进行通信的网络层实体必须首先建立连接,这在X.25中即不相应的建立虚电路的呼叫建立规程。网络层向运输层提供与路由选择和中继器无关的网络层服务。

    网络层网络层图4-6

    3、 X.25分组级组格式:在分组级上,所有的信息都是以分组作为基本单位进行传输和处理的,无论是DTE之间所要传输的数据,还是交换网所用的控制信息,都要以分组形式来表示,并按照链路协议穿越DTE\DCE界面进行传输。因此数据链路层上传输时,分组应嵌入到信息帧(I帧)的信息字段中,即表示成如下的格式:标记字段F/地址字段A/控制字段C/[分组]/帧校验序列FCS/标记字段F。每个分组都是由分组头和数据信息两部分组成,其一般格式如图4.6所示。


    分组格式的数据部分(可以为空)通常被递交给高层协议或用户程序去处理,所以分组协议中不对它作进一步规定。分组头用于网络控制,主要包括DTE/DCE的局部控制信息,其长度随分组类型不同,但至少要包含前三个字节,化们分别给通用格式标积、逻辑信道标识和分组类型标识,它们的含义如下:


    (1)通用格式标识(GFI):由分组中第一个字节的前4位组成,用于指出分组头中其余部分的格式。第一(b8)称作q位或限定位,只用于数据分组中。这是为了对分组中的数据进行特殊处理而设置的,可用于区分数据是正常数据,还是控制信息。对于其它类型的分组,该设置为“0”。第二位(b7)称d位或传送确认位,设置该位的目的是用来指出DTE是否希望用分组接收序号P(R)来对它所接数据作端一端确认。在呼叫建立时,DTE之间可通过D位来商定虚电路呼叫期间是否间是将使用D位规程。第三、四位(b6、b5)用以指示数据分组的序号是用3位即8(b6置“1”)还是7位即模128(b5置“1”),这两位或者取“10”,一旦选定,相应的分组格式也有所变化。


    (2)逻辑信道标识:由第一个字节中的剩余四位(b4、b3、b2、b1)所作的逻辑信道组号(LCGN)和第二个字节所作的逻辑信道号(LCN)中分组成,用以标识逻辑信道。


    (3)分组类型标识:由第三个字节组成,用于区分分组的类型和功能。若该字节的最后一位(b1)是“0”,则表示分组为数据分组;若该位是“1”,则表示分组为控制其中可包括呼叫请求或指示分组及释放请求或指示分组。若该字末三位(b3、b2、b1)为全“1”,则表示该分组是某个确认或接受分组。


    第四个字节及其后诸字节将依据分组类型的不同而有不同的定义。X.25分组级协议规定了多种类型的他组。由于DTE与DCE的不对称性,所以珍有相同类型编码的同类型分组,因其传输方高的不同有不同的含义和解释,具体实现时也有所不同。为此,分组协议从本地DTE的分组表示地DTE经DCE向远地DTE发送的命令请求或应答响应;反之,从DCE到DTE的分组表示DCE代表远地DTE向本地DTE送的命令或应答响应。


    数据类型编码部分,除了用M位代替I帧中的P/F位外,其它内容与数据链路级的帧格式控制字段C非常类似,最末位的“0”是数据类型分组的特征位。M(More data)位置“1”,表示还有后续的数据,即当前数据分组中的数据将以同一逻辑信道上的下一数据分给中的数据作为逻辑继续。P(S)、P(R)分别称为分组发送顺序号和接收顺序号,它们作用大与帧格式中的N(S)和N(R)相当。但是,它们的主要作用是控制每条逻辑入道上向分组交换网发送或从交换网收的数据流,而不只为站点之间提供确认手段,目的是为了调节每个逻辑信道上的流量,以防止对分组交换网的压力过重。实际上,P(s)或P(R)的值用以确定一个给定的逻辑信道上的“窗口”,表示信道上允许传送多少个未被响应的分组。能传输未响应分组的最大值称为窗口大小W,每条虚电路的窗口大小是在呼叫建立时分配的,但最大不能超过7(序号采用3位时)或127(序号采用7位时)个分组。


    与数据链路级帧格式一样,分组级也包括RR、RNR和REJ三种分组,它们被为流量控制分组,这些分组中的类型字段只包括接顺序号P(R),而无发送顺序号P(S)。RR用于告知对方本方正准备从给定逻辑信道上接收数据分组。RNR可以通过同一方向上发送的RR分组加以清除。与数据链路级帧格式一样,分组级也包括一些无编号的分组,如中断请求分组,化不需要等待事先已发送的其它分组,而能立即向外发送,甚至在对方不能接收数据时也能发送。中断请求分组只能携带一个字节的用户数据,放在原因字段中用以向对方中断信息或原因。


    X.25中还定义了很多其它类型的分组,包括释放请求/指示、复位请求/指示、重启动请求/指示。其中除复位请求/指示分组多一个诊断代码外,其它均与中断请求分组格式相同。这些分组都包括一个“原因”字段,用以存入引起相应动作的原因。需要说明一下复位与重启动之间的差别,复位请求是为了在数据传输状态中对虚呼叫或永久虚电路进行重新初始准备而设置的;而重启动则用于同时释放DTE/DCE界面上所有虚呼叫及复位所有永久电路而设置的。最后一类分组仅含三个字节,属于该类格式的分组包括各种确认分组。它们分别是用以对呼叫、释放、中断、复位及重启动的请示或指示的确认。

    网际互连/网络层 编辑

    网络层网络层图4-8

    网际互连的目的是使得一个网络上的某一主机能够与另一网络上的主机进行通信,也即使一个网络上的用户能访问其它网络上的资源,可使不同网络上的用户互相通信和交换信息。若互连的网络都具有相同的结构,则互连的实现比较容易。ISO的OSI参考模型正是为达到这一境界而提出的。但是事实上存在着大量的异构网,据前几年统计,全世界已拥有超过2个的IBM的SNA网络和DEC的DECNET网络,而各种类型的局域网则更不知其数。尽管OSI的系统相当诱人,但异构网在相当长一段时期的存在却是一个不容置疑的事实。


    网际互连有“局域网-局域网”、“局域网-广域网”、“广域网-广域网”、“局域网-广域网-局域网”等四种形式,见图4.8。图中B表示桥接器(Bridge),G表示网间连接器(Gateway),LAN表示局域网,WAN表示广域网。


    1、 网际互连原理和结构方案:网际互连功能可分为基本功能和扩展功能两类。基本功能是网际互连必须具备的功能,它包括不同网络之间传输信息时的寻址和路由选择等;扩展功能是当各种互连网络提供不同的服务时所需的功能,包括协议的转换、分组的分段、组合、重定序以及差错检测等。网际互连并不单纯指不同的通信子网在网络层上互连,实际上,两个网络之间要互连时,它们之间的差异可以表现在OSI七层模型中的任一层上,因为非OSI系统要与OSI系统互连,非OSI系统之间也要互连,用于网络之间互连的中断设备称网络连接器


    按它们进行协议和功能转换对象的不同,可以分为以下几类:

    中断器(Repeater):在物理层中实现透明的二进制比特复制,以补偿信号衰减。

    桥接器(Bridge):在不同或相同的局域网(LAN)之间存储和转发帧,提供链路层上的协议转换。

    路由器(Router):在不同的网络之间存储和转发分组,提供网络层上的协议转换。

    协议转换器:专门用于高层协议转换的网间联接器。用于运输层及运输层以上。  根据网际互连接口的特性是DCE还是DTE,以及传输服务是端到端还是网络对网络,可将互连网络结构方案分成四种,即DCE级端到端的桥接器、网络对网络的X.75协议,DTE级端到端的网间协议IP,网络对网络的协议转换器。


    2 、桥接器:桥接器是一种存储转发设备,用来连接类型相似的局域网。从互连网络的结构看,桥接器属于DCE级的端到端的连接;从协议层次看,桥接器属于链路层范畴,在该层将数据帧进行存储转发。它既不同于只作单纯信号增强的中断器,也不同于进行网络层转换的网间连接器。但桥接器仍然是一种网络连接的方法,因为局域网本身没有网络层,只有在主机站点上才有网络层或提供网络层服务的功能。桥接器接收帧,并送到数据链路层进行差错校验,然后送到物理层再经物理传输介质送到另一个子网。在转发帧以前,桥接器对帧的内容和格式不作修改或仅作很少修改。桥接器应该有足够的缓冲空间,以便能满足高峰负荷时要求。另外,桥接器必须具备寻址和路由选择的逻辑功能

    网络层网络层

    局域网的逻辑功能自下向上可分为物理层,介质访问控制层(MAC)及逻辑链路控制层(LLC)三层。各种不同的局域网的差异主要体现在物理层及介质访问控制层中。图4.9给出了一个假想的桥接器的工作原理图。图中的两个局域网802.X和802.Y分别为802.3、802.4和802.5MAC标准中的一种。其中802.3为CSMA/CD局域网,802.4为令牌总线(Token Bus)局域网,802.5为令牌环(Token Ring)局域网。


    3、 路由器和信关:Gateway 译作信关或网间连接器。这是一种连接两个系统,特别是两个不同协议的系统的设备。过去把具有路由功能的设备称作信关或网间连接器,目前已将这种设备称作路由器(Router)。而信关或网间连接器则用来称呼一些具有特殊用途的设备,例如七层协议转换设备。路由算法或路由器间通信需要一种内部网间连接器协议IGP(InteriorGatewayProtocol),这是一种Internet协议,用以在独立系统内部交换路由信息。

    ISDN和ATM/网络层 编辑


    1、ISDN的定义:ISDN从面上解释是Intergrated Services Digital Network的缩写,译作综合业务数字网。但也可把“IS”理解为Standard Interface for all Services(一切业务的标准接口);把“DN”理解为Digital End to End to End connectivity(数字端到端连接)。现代社会需要一种全社会的、经济的、快速存取信息的手段,ISDN正是在这种社会需要的背景下,以及计算机技术、通信技术、VLSI技术飞速发展的前提下产生的。ISDN目标提供经济的、有效的、端到端的数字连接以支持广泛的服务,包括声音的和非声音的服务。用户只需通过有限的网络连接及接口标准,就可在很大的区域范围,甚至全球范围内存取网络的信息。


    2、ISDN 系统结构:ISDN系统结构主要讨论用户设备和ISDN交换系统之间的接口。一个重要的概念称为数字位管道,即在用户设备和传输设备之间通过比特流的管道。不管这些数字位来自于数字电话、数字终端、数字传真机,或任何其它设备,这些比特流都能双向通过管道。数字位管道用比特流的 时分复用支持多个独立的通道。在数字位管道的接口规范中定义了比特流的确切格式以及比特流的复用。已经定义了两个位管道的标准,一个是用于家庭的低频带标准,另一个是用于企事业的高频带标准,后者可支持多个通道,如果需要的话,也可配置多个位管道。

    网络层网络层图4-11

    图4.11(a)是用于家庭或小企事业单位的配置,在用户设备和ISDN交换系统之间设置一个网络终端设备NT1、NT1设置在靠近用户设备这一边,利用电话线和几公里以外的交换系统相连。NT1装有一个连接器,无源总线电缆可插入连接器,最多有八个ISDN电话、终端或其它设备可接到总线电缆,如同接到局域网的方法一样连接。从用户的角度看,和网络的界面是NT1上的连接器。NT1不仅起接插板的作用,它还包括网络管理、测试、维护和性能监视等。在无源总线上的每个设备必须有一个唯一的地址。NT1还包括解决争用的逻辑,当几个设备同时访问总线时,由NT1来决定哪个设备获得总线访问权。从OSI参考模型来看,NT1是一个物理层设备。


    对于大的企事业单位需要用图4.11(b)的配置,因为往往有很多电话在同时进行,总线无法处理。在这种配置中有一个NT2设备,实际上,NT2和NT1就是前面讨论过的CBX。NT2和NT1连接并对各种电话、终端以及其它设备提供真正的接口。事实上NT2和ISDN交换系统没有本质上的差别,只是规模比较小。在单位内部通电话或数字通信,只需拨四个数字的分机号码,和ISDN交换系统无关。拨一个“9”字,就和外线相连,CBX专门分配一个通道和数字通道相连。CCITT定义了四个参考点,称R、S、T和U,如图4.11所示。U参考点连接ISDN交换系统和NT1,目前采用两线的铜双绞线,今后可能被光纤代替。T参考点是NT1上提供给用户的连接器。S参考点是ISDN的CBX和ISDN终端的接口。R参考点用以连接终端适配器和非ISDN终端,R参考点是使用很多不同的接口。


    3 、宽带ISDN(B-ISDN)及其信息传送方式:当今人们对通信的要求越来越高,除原有的语声、数据、传真业务外,还要求综合传输高清晰度电视、广播电视、高速数据传真等宽带业务。随着光纤传输、微电子技术、宽带通信技术和计算机技术的发展,为满足这些迅猛增长的要求提供了基础。早在1985年1月,CCITT第18研究组就成立了专门小组着手研究宽带ISDN,其研究结果见1988年通过的修订的I-系列建议。


    网络层网络层图4-12
    由窄带ISDN向宽带ISDN的发展,可分为三个阶段。第一阶段是进一步实现话音、数据和图像等业务的综合。它是由三个独立的网构成初步综合的B-ISDN(如图4.12所示)。由ATM构成的宽带交换网实现话音、高速数据和活动图象的综合传输。第二阶段的主要特征是B-ISDN和用户/网络接口已经标准化,光纤已进入家庭,光交换技术已广泛应用,因此它能提供包括具有多频道的高清晰度电视 HDTV(HighDefinition Telecison)在内的宽带业务。第三阶段的主要特征是在宽带ISDN中引入了智能管理网。由智能网控制中心来管理三个基本网。智能网也可称作智能专家系统。


    目前B-ISDN采用的传送方式主要有高速分组交换、高速电路交换、异步传送方式ATM和光交换方式四种。高速分组交换是利用分组交换的基本技术,简化了X.25协议,采用面向连接的服务,在链路上无流量控制、无差错控制,集中分组交换和同步时分交换的优点,已有多个试验网已投入试运行。高速电路交换主要是多速时分交换方式(TDSM),这种方式允许信道按时间分配,其带宽可为基本速率的整数倍,由于这是快速电路交换,其信道的管理和控制十分复杂,尚有许多问题需要继续研究,目前还末进入实用阶段。交换技术的主要设备是光交换机,它将光技术引入传输回路和控制回路,实现数字信号的高速传输和交换。由于光集成电路技术尚末成熟,故光交换技术预计要到21世纪才能进到实用阶段。
      

    网络层网络层
    4、ATM工作原理:ATM的特点是进一步简化了网络功能。ATM网络不参与任何数据链路层功能。将差错控制与流量控制工作都交给终端去做。图4.15是分组交换、帧中继和ATM交换三种方式的功能比较。可以看出,分组交换网的交换节点参与了OSI第一到第三层的全部功能;帧中继节点只参与第二层功能的核心部分,也即数据链路层中的帧定界、0比特填充和CRC检验功能第二层的其它功能,即差错控制和流量控制,以及第三层功能则义给终端去处理;ATM网络则更为简单,除了第一层的功能之外,交换节点不参与任何工作。从功能分布的情况来看,ATM网和电路交换网特点相似。因此有人说ATM网是综合了分组交换和电路交换的优点而形成的一种网络,这是很有道理的。


    ATM克服了其它传送方式的缺点,能够适应任何类型的业务,不论其速度高低,突发性大小,实时性要求和质量要求如何,都能提供满意的服务。CCITT在I.113建议中给ATM下了这样的定义:ATM是一种转换模式(即前面所说的传送方式),在这一模式中信息被组织成信元,而包含一段信息的信元并不需要周期性地出现,从这个意义上来说,这种转换模式是异步的。信元(cell)实际上就是分组,只是为了区别于X.25的分组,才将ATM的信息单元叫作信元。ATM的信元具有固定的长度,即总是53个字节。其中5个字节是信头(header),48个字节是信息段,或称有效负荷(payload)。信头包含各种控制信息,主要是表示信元去向的逻辑地址,另外还有一些维持信息,优先度及信头的纠错码。信息段中包含来自各种不同业务的用户信息,这些信息透明地穿过网络。信元的格式与业务无关,任何业务的信息都同样被切割封装成统一格式的信元。

    网络层网络层图4-16

    ATM采用异步时分复用的方式,见图4.16。来自不同信息的信元汇集到一起,在一个缓冲器内排队,队列中的信元逐个输到传输线路,在传输线路上形成首尾相接的信元流。信元的信头中写有信息的标志(如A和B),说明该信元去往的地址,网络根据信头中的标志来转移信元。由于信息源产生信息是随机的,因此,信元到达队列也是随机的。高速的业务信元来得十分频繁、集中;低速的业务信元来得很稀疏。这些信元都按先来后到在队列中排队。队列中的信元按输出次序用在传输线上,具有同样标志的信元在传输线上并不对应某个固定的时间间隙,也不是按周期出现的,也就是说信息和它在时域中的位置之间没有任何关系,信息只是按信头中的标志来区分的。这种复用方式叫作异步时分复用(Asynchronous Time Division Multiplex),又叫统计复用(Statistic Multiplex),在同步时分复用方式(如PCM复用方式)中,信息以它在一帧中的时间位置(时隙)来区分,一个时隙对应着一条信道,不需要另外的信息头来标志信息的身份


    异步时分复用方式使ATM具有很大的灵活性,任何业务都可按实际需要来占用资源,对特定业务,传送的速率随信息到达的速率而变化,因此网络资源得到最大限度的利用。此外,ATM网络可以适用于任何业务,不论其特性如何(速率高低、突发性大小、质量和实时性要求等),网络都按同样的模式来处理,真正做到了完全的业务综合。如果在某个时刻队列排空了所有的信元,此时线路上就出现末分配信元(信头中含有标志@);反之,如果在某个时刻传输线路上找不到可以传送信元的机会(信元都已排满),而队列已经充满缓冲区,此时,为了尽量减少对业务质量的影响,在信元的信头写有优先度标志,首先丢弃的总是那些优先度低,不太重要的信元。当然缓冲区的容量必须根据信息流量来计算,使信元丢失率在10-9以下。


    为了提高处理速度,降低延迟,ATM以面向连接器方式工作。网络的处理工作十分简单:通信开始时建立虚电路,以后用户将虚电路标志写入信头(即地址信息),网络根据虚电路标志将信元送往目的地。经过ATM复用后,信元流速率取决于传输线路的速率,如果采用单模光纤,这个速率可高达几处Gbps。每条虚电路的速率和属于该虚电路的信元出现的频率有关。ATM网络包括一些节点,这些节点提供信元的交换。实际上,节点完成的只是虚电路的交换,因为同一虚电路上的所有信元都选择同样的路由,经过同样的通到达目的地。在接收端,这些信元到达的次序总是和发送次序相同。ATM交换节点的工作比X.25分组交换网中的节点要简单得多。ATM节点只做信头的CRC检验,对于信息段的传输差错根本不过问。ATM节点不做差错控制(信头中根本没有信元的编号),也不参与流量控制,这些工作都留给终端去做。ATM节点的主要工作就是读信头,并根据信头的内容快速地将信元送往要去的地方,这件工作在很大程度上依靠硬件来完成,因此,ATM交换的速度非常快,可以和光纤的传输速度相匹配。

    网络层协议/网络层 编辑


    TCP/IP网络层得核心是IP协议,它是TCP/IP协议族中最主要得协议之一。IP协议非常简单,仅仅提供不可靠、无连接得传送服务。IP协议得主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能得还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。

    网络层网络层

    【IP地址结构】TCP/IP网络使用32位长度的地址以标识一台计算机和同它相连的网络,它的格式为:IP地址=网络地址+主机地址。IP地址是通过它的格式分类的,它有四种格式:A类、B类、C类、D类。如下所示
    格式位数主机地址:A类0网络(7位)主机地址(24位)、
    B类10网络(14位)主机地址(16位)、C类110网络(21位)主机地址(8位)、D类1110多路通信地址(28位)、未来的格式11110将来使用。这样,A类地址空间为0-127,最大网络数为126,最大主机数为16,777,124;B类地址空间为128-191,最大网络数为16384,最大主机数为65,534;C类地址空间为192-223,最大网络数为2,097,152,最大主机数为254;D类地址空间为224-254。


    C类地址空间分配概况。分配区域地址空间:多区域192.0.0.0~193.255.255.255、欧洲:194.0.0.0~195.255.255.255、其他:196.0.0.0~197.255.255.255、北美:197.0.0.0~199.255.255.255、中南美:200.0.0.0~201.255.255.255、太平洋地区:202.0.0.0~203.255.255.255、其他:204.0.0.0~205.255.255.255、其他:206.0.0.0~207.255.255.255。注:其中“多区域”表示执行该计划前已经分配的地址空间;“其他”表示已指定名称的地区之外的地理区划。


    特殊格式的IP地址:广播地址:当网络或主机标志符字段的每位均设置为1时,这个地址编码标识着该数据报是一个广播式的通信,该数据报可以被发送到网络中所有的子网和主机。例如,地址128.2.255.255意味着网络128.2上所有的主机。本网络地址:IP地址的主机标识符字段也可全部设置为0,表示该地址作为“本主机”地址。网络标识符字段也可全部设置为0,表示“本网络”。如,128.2.0.0表示网络地址为128.2的网络。使用网络标识符字段全部设置为0的IP地址在一台主机不知道网络的IP地址时时是很有用的。私有的IP地址:在有些情况下,一个机构并不需要连接到Internet或另一个专有的网络上,因此,无须遵守对IP地址进行申请和登记的规定。该机构可以使用任何的地址。在RFC1597中,有些IP地址是用作私用地址的:A类地址:10.0.0.0到10.255.255.255。B类地址:172.16.0.0到172.31.255.255.255。C类地址:192.168.0.0到192.168.255.255。

    网络层网络层

    【地址解析协议】ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。协议属于链路层的协议在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当然,点对点的连接是不需要ARP协议的。


    ARP协议的数据结构

    以下是引用片段:

    typedefstructarphdr
    {unsignedshortarp_hrd;/*硬件类型*/

    unsignedshortarp_pro;/*协议类型*/

    unsignedchararp_hln;/*硬件地址长度*/

    unsignedchararp_pln;/*协议地址长度*/

    unsignedshortarp_op;/*ARP操作类型*/

    unsignedchararp_sha[6];/*发送者的硬件地址*/

    unsignedlongarp_spa;/*发送者的协议地址*/

    unsignedchararp_tha[6];/*目标的硬件地址*/

    unsignedlongarp_tpa;/*目标的协议地址*/

    }ARPHDR,*PARPHDR;


    为了解释ARP协议的作用,就必须理解数据在网络上的传输过程。这里举一个简单的PING例子

    假设我们的计算机IP地址是192.168.1.1,要执行这个命令:ping192.168.1.2.该命令会通过ICMP协议发送ICMP数据包。该过程需要经过下面的步骤:1、应用程序构造数据包,该示例是产生ICMP包,被提交给内核(网络驱动程序);2、内核检查是否能够转化该IP地址为MAC地址,也就是在本地的ARP缓存中查看IP-MAC对应表;3、如果存在该IP-MAC对应关系,那么跳到步骤9;如果不存在该IP-MAC对应关系,那么接续下面的步骤;4、内核进行ARP广播,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令类型为REQUEST(1),其中包含有自己的MAC地址;5、当192.168.1.2主机接收到该ARP请求后,就发送一个ARP的REPLY(2)命令,其中包含自己的MAC地址;6、本地获得192.168.1.2主机的IP-MAC地址对应关系,并保存到ARP缓存中;7、内核将把IP转化为MAC地址,然后封装在以太网头结构中,再把数据发送出去;使用arp-a命令就可以查看本地的ARP缓存内容,所以,执行一个本地的PING命令后,ARP缓存就会存在一个目的IP的记录了。当然,如果你的数据包是发送到不同网段的目的地,那么就一定存在一条网关的IP-MAC地址对应的记录。知道了ARP协议的作用,就能够很清楚地知道,数据包的向外传输很依靠ARP协议,当然,也就是依赖ARP缓存。要知道,ARP协议的所有操作都是内核自动完成的,同其他的应用程序没有任何关系。同时需要注意的是,ARP协议只使用于本网络。

    网络层网络层

    【逆地址解析协议】具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(一帧在网络上广播的数据),请求某个主机响应该无盘系统的IP地址(在RARP应答中)。在概念上这个过程是很简单的,但是实现起来常常比ARP要困难。RARP的正式规范是RFC903[Finlaysonetal.1984]。


    RARP的分组格:RARP分组的格式与ARP分组基本一致。它们之间主要的差别是RARP请求或应答的帧类型代码为0x8035,而且RARP请求的操作代码为3,应答操作代码为4。对应于ARP,RARP请求以广播方式传送,而RARP应答一般是单播(unicast)传送的。RARP服务器的设计:虽然RARP在概念上很简单,但是一个RARP服务器的设计与系统相关而且比较复杂。相反,提供一个ARP服务器很简单,通常是TCP/IP在内核中实现的一部分。由于内核知道IP地址和硬件地址,因此当它收到一个询问IP地址的ARP请求时,只需用相应的硬件地址来提供应答就可以了。


    作为用户进程的RARP服务器:RARP服务器的复杂性在于,服务器一般要为多个主机(网络上所有的无盘系统)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的实现的一部分。更为复杂的是,RARP请求是作为一个特殊类型的以太网数据帧来传送的。这说明RARP服务器必须能够发送和接收这种类型的以太网数据帧。在附录A中,我们描述了SBD分组过滤器、SUN的网络接口栓以及SVR4数据链路提供者接口都可用来接收这些数据帧。由于发送和接收这些数据帧与系统有关,因此RARP服务器的实现是与系统捆绑在一起的。


    每个网络有多个RARP服务器:RARP服务器实现的一个复杂因素是RARP请求是在硬件层上进行广播的,这意味着它们不经过路由器进行转发。为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上(例如一根电缆)要提供多个RARP服务器。当服务器的数目增加时(以提供冗余备份),网络流量也随之增加,因为每个服务器对每个RARP请求都要发送RARP应答。发送RARP请求的无盘系统一般采用最先收到的RARP应答(对于ARP,我们从来没有遇到这种情况,因为只有一台主机发送ARP应答)。另外,还有一种可能发生的情况是每个RARP服务器同时应答,这样会增加以太网发生冲突的概率。


    【因特网报文协议】ICMP的作用:由于IP协议的两个缺陷:没有差错控制和查询机制,因此产生了ICMP。ICMP主要是为了提高IP数据报成功交付的机会,在IP数据报传输的过程中进行差错报告和查询,比如目的主机或网络不可到达,报文被丢弃,路由阻塞,查询目的网络是否可以到达等等。

    网络层网络层
    ICMP有两种报文类型:差错报告报文和询问报文。差错报告报文:终点不可到达(由于路由表,硬件故障,协议不可到达,端口不可达到等原因导致,这时路由器或目的主机向源站发送终点不可到达报文);源站抑制(发生拥塞,平衡IP协议没有流量控制的缺陷);超时(环路或生存时间为0);参数问题(IP数据报首部参数有二义性);改变路由(路由错误或不是最佳)。询问报文:回送请求或回答(用来测试连通性,如:PING命令);时间戳请求或回答(用来计算往返时间或同步两者时间);地址掩码请求或回答(得到掩码信息);路由询问或通告(得知网络上的路由器信息)。ICMP是网际(IP)层的协议,它作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去。


    PING命令与ICMP协议:应用层的PING(PacketInterNetGroper)命令用来测试两个主机之间的连通性,PING使用了ICMP回送请求与回送回答报文,属于ICMP询问报文,它是应用层直接使用网络层ICMP的一个特例,它没有通过运输层的TCP或UDP。IP数据报首部的协议字段:IP报文首部的协议字段指出了此数据报是使用的何种协议,以便使目的主机的网络层能够知道如何交付,将数据上交到哪个处理过程。当其协议字段的值为1时,表示其IP数据是ICMP报文。


    差错报文:一些要点:对于携带ICMP差错报文的数据报,不再产生ICMP差错报文;对于分片的数据报,如果不是第一个分片,则不产生ICMP差错报文;对于特殊

    地址如127.0.0.0,0.0.0.0或多播地址不产生ICMP差错报文。
    应注意:所有的差错报文都包括数据部分,而这数据部分包括原始数据报的首部加上数据报中的前8
    个字节。加上原始数据报中的首部的目的是为了向接收差错报文的原始信源给出关于数据报本身的信息,要包括数据的前8个字节是国为这前8个字节提供了关于端口号(UDP和TCP)和序号(TCP)的信息。


    网络层网络层
    【因特网组管理协议】因特网组管理协议(IGMP)被IP主机用于向所有的直接相邻的多播路由器报告它们的多播组成员关系。本文档只描述在主机和路由器之间的确定组成员关系的IGMP应用。作为多播组成员的路由器应当还能表现为一台主机,甚至能对自己的查询作出响应。IGMP还可以应用在路由器之间,但这种应用不在这里描述。就像ICMP一样,IGMP作为整合在IP里面的一部分。所有希望接收IP组播的主机都应当实现IGMP。IGMP消息被封装在IP数据报中,IP协议号为2。本文档所描述的所有IGMP消息在发送时TTL都为1,并在它们的IP首部中含有一个路由器警告选项。主机所关心的所有IGMP消息都具有以下格式:8位类型+8最大响应时间+16位校验和+32位组地址。

    类型:主机跟路由器交互时所关心的IGMP消息有三种类型:0x11=组成员关系查询。组成员关系查询有两种子类型:普通查询,用于获知一个相连的网络上有哪些组具有成员。组特定的查询,用于获知在一个相连的网络上,某一个特定的组是否具有成员。这两种消息是通过组地址来区分的,成员关系查询消息以下简称为“查询”消息。0x16=第2版的成员关系报告。0x17=离开一个组。除此之外,还有一种类型的消息,只是为了对IGMPv1保持向下兼容:0x12=第一版的成员关系报告。这份文档把成员关系报告简称为“报告”。如果不指明版本,那么内容对两个版本均适用。未识别的消息类型会被忽略。在更新版本的IGMP中可能还会有新的消息类型,以被多播路由协议,或其它使用。


    最大响应时间:最大响应时间只在成员关系查询消息中有意义,它以1/10秒为单位标明相应的报告发送所允许的最大延迟时间。在其它类型的消息中,发送者把该字段清0。接收者忽略这个字段。这个修改允许IGMPv2的路由器可以调节“离开延时”(最后一台主机离开组的时刻到路由协议被通过该组已经没有成员之间的时间间隔)。它也可以调节子网内IGMP流量的爆炸。校验和:校验和是以16位为一段对整个IGMP消息(一个完整的IP负载)的取反求和。为计算校验和,校验和字段应当先被清0。当发送数据报时,必须计算校验和并放到该字段中。当收到一个数据报后,在处理之前,必须先验证校验和。组地址:在一个成员关系查询消息中,在发送一个普通的查询之前,组地址字段必须被清0,在发送一个指定组的查询之前,把组地址设置为需要查询的那个组。在一个组成员关系报告或离开组的消息中,组地址字段应当是被报告的或要离开的那个组的IP地址。其它字段:需要注意的是,IGMP消息是可能大于8个字节的,特别是将来的向下兼容的IGMP版本。只要类型字段是可以被识别的,IGMPv2的实现在处理数据报时必须忽略超过8个字节的内容。但是IGMP校验和始终是针对整个数据报的,而不仅仅是前面的8个字节。

    参考文献/网络层 编辑

    1、http://www.ee.zsu.edu.cn/network/newpage2aa.htm

    2、http://www.course.cug.edu.cn/computernet/ch-8/ch-8.htm


    3、http://www.netemu.cn/BBS/viewthread.php?tid=806


    4、《计算机通信网》 王晓军 毛京丽 编著


    5、物联网组织架构及相关技术:http://www.5lian.cn/html/2012/wulianpuji_0317/31515.html


    6、物联网的定义和体系架构:http://www.5lian.cn/html/2012/wulianpuji_0213/30238.html

    相关文献

    添加视频 | 添加图册相关影像

    扩展阅读
    15联网
    2应用于泛在网络层感知/延伸层的IPv6技术标准化现状

    互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于www.baike.com。

    登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。

    互动百科用户登录注册
    此词条还可添加  信息模块

    WIKI热度

    1. 编辑次数:31次 历史版本
    2. 参与编辑人数:17
    3. 最近更新时间:2014-05-27 19:23:27

    相关词条