第5章网络层 5.1网络层的功能及服务 5.1.1网络层的功能 网络层是通信子网的边界,是通信设备的协议最高层,实现主机到主机的网络连接,屏蔽低端不同技术的差异,向上层提供一致的服务。图51表示了从A端发送数据到B端,A端网络层接收传输层的数据进行封装,传递给数据链路层及物理层,中间经过的通信设备都工作在网络层及以下的层。 图51主机到主机连接示意图 网络层的功能主要如下。 (1) 规定数据分组的类型与格式。将传输层传递过来的数据信息拆分为若干分组,即分组的组装、拆卸,确定收发双方的网络地址。 (2) 路由选择。从源端到目的端存在许多中间节点,这些中间节点构成了从源端到目的端的多条路径,路由即路径选择,涉及为源到目标的分组选择一条最佳的传输路径。 (3) 路由转发。当一个分组到达网络层设备的一条输入链路时,该设备将该分组先缓存下来,在输出线路空闲的时候,把该分组通过输出链路发送出去,即基于存储转发技术完成接收分组并转发分组功能。 (4) 拥塞控制和负载平衡。当通信子网中的某一部分有太多的数据分组时,会导致网络性能的下降。这种现象称为网络中的拥塞。拥塞会引起网络分组的丢失,在严重的情况下,会导致网络运行的瘫痪。 (5) 异构网络的连接。提供与多种网络的接口,支持异构网络的互连。将不同的网络技术在网络层统一在IP协议之下。不同网络技术的主要区别在数据链路层和物理层,如不同的局域网技术和广域网技术。 5.1.2提供的服务 网络层为传输层提供不同的服务: 面向连接的虚电路服务和面向无连接的数据报服务。 1. 面向连接的虚电路服务 通信子网借以实现面向连接服务的工作方式,需要在源与目标之间建立一条逻辑上的通信链路,保证数据通信的可靠传输。服务的特点如下。 (1) 包传输路径相同,不需要源地址与目标地址信息。 (2) 除了建立连接时需要路由,在数据传送过程中不需要路由,无路由信息,只有虚电路连接信息。 (3) 包的传输不会出现丢失、重复和乱序现象。 (4) 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是电路交换的通信,先建立了一条真正的物理连接。因此分组交换的虚连接和电路交换的连接只是类似,并不完全一样。 虚电路逻辑连接的三个阶段如下。 (1) 电路建立: 从源机器到目标机器之间的一条路径被选择作为连接的一部分,并且保存在中间这些路由器的内部表中。 (2) 数据传输: 对于所有在这个连接上发送的数据都使用这条路径进行传输,传输时依据虚电路标识进行转发。 (3) 虚电路拆除: 数据传输结束,当连接被释放之后,虚电路也随之终止。 2. 面向无连接的数据报服务 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。可靠通信只能由网络层以上的用户主机来保证。服务的特点如下。 (1) 分组在传输前不需要预先确定从源到目的的路径,因而被称为无连接方式。 (2) 每个分组是一个独立的传输单位,包含完整的目的地址,在每个路由器上被独立转发。各个分组的传输路径可能不同。 (3) 每个路由器中包含转发表,用于转发决策。转发表是根据路由算法生成的、便于快速查找的数据结构,路由表由路由模块负责生成和维护。 (4) 由于每个分组被独立转发,数据报网络无法保证分组传输的顺序,也很难察觉分组的丢失。到达时可能出现乱序、重复和丢失现象。 3. 虚电路与数据报的比较 虚电路和数据报服务的异同点如表51所示。 表51虚电路与数据报的特点比较 对比的方面虚电路服务数据报服务 思路可靠通信应当由网络来保证可靠通信由用户主机来保证 连接的建立必须有不需要 续表 对比的方面虚电路服务数据报服务 终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发 当节点出故障时所有通过出故障的节点的虚电路均不能工作出故障的节点可能会丢失分组,一些路由可能会发生变化 分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序 端到端的差错处理和流量控制可以由网络负责,也可以由用户主机负责由用户主机负责 5.1.3网络层的协议 在Internet上网络层运行的协议包括以下几个。 互联网协议第4版IPv4(Internet Protocol version 4),是第一个被广泛使用,构成现今互联网技术的基础协议。 互联网协议第6版IPv6(Internet Protocol version 6),用于替代现行IPv4协议的下一代IP协议,IPv6的使用不仅能解决网络地址资源匮乏的问题,而且也解决了多种接入设备连入互联网的问题。 地址解析协议(Address Resolution Protocol,ARP),是根据一个IP地址通过网络获得对应物理地址的协议。 反向地址解析协议(Reverse Address Resolution Protocol,RARP),是与ARP相反的方式工作,RARP发出要反向解析的物理地址并希望返回其对应的IP地址。 互联网控制报文协议(Internet Control Message Protocol,ICMP),用于在IP主机、路由器之间传递网络通不通、主机是否可达、路由是否可用等网络本身的控制消息。 互联网组管理协议(Internet Group Management Protocol,IGMP),是一个组播协议,该协议运行在主机和组播路由器之间。 还包括一些路由协议,在后续章节中将依次介绍这些协议,其中,IPv4和路由协议仍旧是目前网络层的重点内容。 5.2IPv4协议 5.2.1协议概述 IP协议的工作类似于邮政服务,事先不需要通知收信人,邮政服务会接收信件,并将其按照邮递路线送给收信人。无连接数据通信也是不通知终端主机就将IP数据包发送出去。IP协议是作为低开销协议设计的,它只提供通过网络系统从源主机向目的主机传送数据包所必需的功能,该协议并不负责跟踪和管理数据包的流动。因此,Internet在网络层就是采用无连接的数据报服务设计思路。 (1) 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 (2) 网络在发送分组时不需要先建立连接,也不需要 PDU 报头中包含其他字段来维持连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。此过程显著降低了 IP 的开销。 (3) 网络层不提供服务质量的承诺,即不可靠传输。所传送的分组可能出错、丢失、重复和失序(不按发送顺序到达终点),IP 不具备管理和恢复未送达数据包或已损坏数据包的功能。当然也不保证分组传送的时限。 但是,IP数据包传送可能会导致数据包抵达目的时顺序错误。如果数据包顺序错乱或丢失导致该应用程序使用数据出问题,则必须由上层服务来解决这些问题。如图52所示,A点发送了IP包1、包2、包3三个数据,B点可能只接收到包1和包2数据,而且还可能先收到包2。 图52IP数据包传输问题 5.2.2协议格式 一个IP数据报由IP头部和传输层数据两部分组成,完整的格式如图53所示。在IP头部中又分为固定项和选项。 图53IP协议头部格式 头部的前20字节部分是固定项,是所有IP数据报必须有的。在头部固定部分的后面可以有一些可选字段,其长度是可变的。 (1) 协议版本(4位),包含 IP 版本号(4)。 (2) 头部长度(4位),可表示的最大数值是15个单位(一个单位为4B),因此IP的头部长度最大值是60B。固定长度为20B。 (3) 服务类型(8 位),用于确定每个数据包的优先级别。通过此值,可以对优先级别高的数据包(如传送电话语音数据的数据包)使用服务质量 (QoS) 机制。处理数据包的路由器可以配置为根据服务类型值来确定首先转发的数据包。 (4) 报文总长度(16位),指头部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535B。总长度必须不超过最大传送单元MTU。 (5) 报文标识(16位),此字段用于唯一标识原始的IP数据包。 (6) 标志(flag)(3 位),目前只有后两位有意义。标志字段中间的一位是 DF(Don't Fragment),只有当 DF = 0 时才允许分片。如果路由器必须对数据包分片后才能将其向下传送到数据链路层,但DF位却设置为1,则该路由器将丢弃此数据包。标志字段的最低位是 MF (More Fragment)。MF = 1表示后面“还有分片”,MF = 0 表示是最后一个分片。 (7) 片偏移(13 位),路由器从一种网络向具有较小 MTU 的另一种网络转发数据包时必须将数据包分片。较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节为偏移单位。 (8) 协议(8 位),指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给相应的处理过程。典型的值有01—ICMP,06 —TCP,17—UDP。 (9) 生命周期(8 位),记为TTL (Time To Live),数据报在网络中可通过的路由器数量的最大值,单位为跳数。在因特网中传输的最大跳数为255个路由器。当该值变为零时,路由器会丢弃数据包。 (10) 头部检验和(16 位),只检验数据报的头部,不检验数据部分。采用累加法,以16位字为单位加。 (11) 源IP地址(32 位),包含一个 32 位二进制值,代表数据包源主机的网络层地址。 (12) 目的IP地址(32 位),包含一个 32 位二进制值,代表数据包目的主机的网络层地址。 (13) 选项域: 提供一种途径允许后续版本的协议,包含一些原来的设计中没有出现的信息; 允许实验人员实验新的想法; 避免为那些不常使用的信息分配头部域。 选项域通常由以下几部分组成。 (1) 安全: 指明了信息的加密程度。 (2) 严格的源路由: 给出了从源到目标的完整路径,其形式是一系列的IP地址。数据报必须严格地沿着这条路径向前传输。 (3) 宽松的源路由: 要求该分组穿越指定的路由器列表,并且要求按照列表中的顺序前进,但是在途中也允许经过其他的路由器。 (4) 记录路径: 告诉沿途的路由器,将它们的IP地址附到该选项域中。 (5) 时间戳: 和记录路由类似,只不过每台路由器除了记录32位IP地址外,还要记录一个32位的时间戳。常被用于路由调度算法。 5.2.3IP地址 IP地址就是给每个连接在Internet上的主机(或路由器)分配一个在全世界范围唯一的32位标识符。 IPv4地址具有层次性,由两部分组成: IP 地址={<网络号>,<主机号>}。网络号代表主机或路由器所处的物理网络,主机号代表在所处物理网络中的编号。正是因为网络标识所给出的网络位置信息才使得路由器能够在通信子网中为IP分组选择一条合适的路径。主机或路由器接口的IP地址在一个Internet网络环境中具有全局唯一性,即每个地址只能定义一个接入网络的主机或路由器接口。 根据网络号的不同,将IP地址分为5类: A类,B类,C类地址都是单播地址,D类地址用于多播,E类地址保留,如图54所示。 图54分类的网络地址 组播(Multicast)又被称为多播,它是相对于单播(Unicast)而言的。在网络中,大部分的分组传输都是以一对一的单播方式实现的,即一个源节点只向一个目标节点发送数据。但另外一些时候也需要以一对多的组播方式实现分组传输,例如,在传送路由更新信息和交互式的音频与视频流时。在组播中,同一个或同一组源节点一次所发送的相同内容的分组可以被多个接收者接收到,这些具有相同接收需求的主机被看成是一个组播组,并要被赋予一个相同的组地址,这个地址就是组播地址。 为了方便人们的记忆和识别,通常把32位IP地址划分为8位一组的4组,每组的8位二进制数转换为十进制数字,并且在这些十进制数字之间加上一个点,即点分十进制记法,例如,1100 0000 1010 1000 0000 0001 0000 0001记为192.168.1.1。如图55所示表示了对应关系。 图55IP地址表示举例 此例中的前三个二进制8位数(192.168.1)标识了该地址的网络部分,最后一个二进制8位数(1)标识了主机。网络部分表明了每个唯一的主机地址位于哪个网络中,路由器只需知道如何到达每个网络,而不需要知道每台主机的位置。 在所有IP地址中规定了一些特殊的IP地址。 1. 全0和全1地址 网络号或主机号为全0和全1有特殊意义,表52说明了各种情况的具体含义。 表52全0和全1的含义 网络号主机号含义 全0全0本网络中的本主机 全0主机号本网络中的某个主机 网络号全0某个网络的网络号 网络号全1某个网络的广播地址 全1全1本地网络的广播地址 2. 网络标识地址 具有正常的网络号部分,而主机号部分为全0的IP地址代表一个特定的网络,被称为网络标识地址或网络号地址。如102.0.0.0、138.1.0.0和198.10.1.0分别代表了一个A类、B类和C类网络。网络标识对于IP网络通信非常重要,位于同一网络中的主机必然具有相同的网络号,而且它们之间可以直接相互通信; 而网络号不同的主机之间则不能直接进行相互通信,必须经过第三层网络设备如路由器进行转发。 3. 网络广播地址 具有正常的网络号部分,而主机号部分为全1的IP地址代表在指定网络中的广播,被称为直接广播地址,如102.255.255.255、138.1.255.255和198.10.1.255分别代表在一个指定的A类、B类和C类网络中的广播。广播地址对于网络通信非常有用,在计算机网络通信中,经常会出现对某一指定网络中的所有机器发送数据的情形。如果没有广播地址,源主机就要对所有目标主机启动多次IP分组的封装与发送过程。 4. 环回地址 网络号为127的地址作为环回地址,保留作为本地软件测试,也不分配,常见的是127.0.0.1。 5. 私有IP地址 在A类、B类、C类地址中各有一段地址被规定为内部主机使用,这些地址不会被外部Internet识别。 10.0.0.0~10.255.255.255; 172.16.0.0~172.31.255.255; 192.168.0.0~192.168.255.255 5.2.4子网划分和子网掩码 在实际的IP地址规划过程中会面临两个非常严峻的问题。一方面是IP地址的浪费。当一个公司或组织机构获得一个网络号时,即使它的网络节点数少于(有时甚至是远远少于)这个网络号所规定的最大节点数,那些多余出来的IP地址也不能为其他网络所使用; 另一方面是地址资源的短缺。除了网络互联规模增大所产生的地址紧缺外,网络管理也在一定程度上刺激了IP地址资源的需求。例如,当一个企业或组织机构的网络因主机规模增加而经常出现冲突增加、吞吐率下降或网络难以有效管理等多种性能问题时,通常会采用网络分段的方法,而根据IP网络的特点,就需要为这些新分出来的网段指定新的网络号并申请新的IP地址资源。但是,随着Internet规模的增大,32位的IPv4地址已出现了严重的资源紧缺,已经不可能随心所欲地获取网络号。 为了提高IP地址资源的利用率,同时也为了解决IP地址资源短缺的问题,人们引入了子网划分、无类别域间路由和网络地址翻译技术。 1. IP子网和子网划分 将未引进子网划分前的A、B、C类地址称为有类别的IP地址。对于有类别的IP地址,主机或路由设备可以简单地通过IP地址中关于地址类的标识位直接判定主机所属的网络类别并进一步确定其网络标识。例如,对于IP地址102.2.3.3,由于该地址第一个二进制位的值为0,因此可以判定这是一个A类地址,而地址中第一个8位组所对应的点分十进制数102就是该地址所对应的网络号。但是,引入子网后,这种依靠地址类标识来分离网络号的方法就行不通了。同样是一个IP地址102.2.3.3,已经不能简单地将其看成是一个A类地址而认为网络号就是102.0.0.0。假如这个地址是进行了8位子网划分而来的,则该地址就相当于是一个B类地址,相应的网络标识就是102.2.0.0; 如果是进行了16位的子网划分,那么它又相当于是一个C类地址,相应的网络标识就是102.2.3.0; 若是其他位数的子网划分,则甚至不能将该地址归入任何一个传统的IP地址类中,既不是A类地址,也不是B类地址或C类地址。换言之,引入子网划分技术后,IP地址类的概念已不复存在,对于一个给定的IP地址,其中用来表示网络号和主机号的位数可以是变化的,取决于子网划分的情况。为此,人们将引入子网技术后的IP地址称为无类别的IP地址,在今天看来,有类IP地址的设计确实不够合理,主要缺点如下。 1) IP地址的空间利用率低 一个A类地址网络可连接的主机数超过1000万,而每一个B类地址网络可连接的主机数也超过6万。然而有些网络对连接在网络的计算机数目有限制,根本达不到这样大的数值。例如,10BaseT以太网规定其最大节点数只有1024。这样的以太网若使用一个B类地址就浪费6万多个IP地址,地址空间的利用率还不到2%,而其他单位的主机无法使用这些被浪费的地址。IP地址的浪费,还会使IP地址空间的资源更早地被用完。 从网络的吞吐量考虑,将大量主机安装在一个网络上往往会影响网络的性能。当网络上工作的主机数小于一定数值时,网络的吞吐量和网络上工作的主机数大约成正比。但是当网络上工作的主机数超过一定数值时,拥塞就可能产生,这就导致网络的吞吐量增加缓慢,甚至反而随主机数的增加而下降。因此,从提高网络的吞吐量考虑,一个网络上的主机数也不应太多。这一因素也使得IP地址空间的利用率根本不可能很高。 2) 路由表条目急剧增加 每一个路由器都应当能够从路由表查出应怎样到达其他网络的下一跳路由器。因此,互联网中的网络数越多,路由表的项目数也就越多。这样,即使我们拥有足够多的IP地址资源可以给每一个物理网络分配一个网络号,也会导致路由器的路由表中的项目数过多。这不仅增加了路由器的成本(需要更多的存储空间).而且使查找路由时耗费更多的时间,同时也使路由器之间定期交换的路由信息急剧增加,因而使路由器和整个因特网的性能都下降了。 3) 两级的IP地址不够灵活 有时情况紧急,一个单位需要在新的地点马上开通一个新的网络。但是在申请到一个新的IP地址之前,新增加的网络是不可能连接到因特网上工作的。我们希望有一种方法,使本单位能随时灵活地增加本单位的网络,而不必事先到因特网管理机构申请新的网络号。原来的两级的IP地址无法做到这一点。 为解决上述问题,从1985年起在IP地址中又增加了一个“子网号字段”,使两级的IP地址变成为三级的IP地址,它能够较好地解决上述问题。这种做法叫做划分子网,或子网寻址或子网路由选择。划分子网已成为因特网标准协议。 子网划分(Subnetworking)是指由网络管理员将一个给定的网络分为若干个更小的部分,这些被分出来的更小部分被称为子网(Subnet)。当网络中的主机总数未超出所给定的某类网络可容纳的最大主机数,但内部又要划分成若干个网络段(Segment)进行管理时,就可以采用子网划分的方法。 一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网,划分子网纯属一个单位内部的事情。本单位以外的网络看不见这个网络是由多少个子网组成,因为这个单位对外仍然表现为一个大网络。 划分子网的方法是从网络的主机号借用若干位作为子网号,而主机号也就相应减少了若干个比特。于是两级的IP地址在本单位内部变为三级的IP地址: 网络号netid,子网号subnettid和主机号hosttid。或者可以用以下方法来表示: IP地址∷={<网络号>,<子网号>,<主机号>} 注意: 子网号同主机号规定一样,二进制位不能全为0或者1,所以子网号最少用两位主机位数代表,最多用6位主机位数代表。 为了创建子网,网络管理员需要从原有IP地址的主机位中借出连续的若干高位作为子网络标识,于是IP地址从原来两层结构的“网络号+主机号”形式变成了三层结构的“网络号+子网络号+主机号”形式。可以这样理解,经过划分后的子网因为其主机数量减少,已经不需要原来那么多位作为主机标识,从而人们可以借用那些多余的主机位用作子网标识。 在子网划分时,首先要明确与子网划分相关的需求,即划分后所要得到的子网数量和每个子网中所要拥有的主机数。在确定从原主机位借出的子网标识位数时,应权衡子网数量和每个子网中的主机数这两大因素,在满足基本需求的前提下,要尽可能提供子网数量和主机数的冗余以便为将来扩充网络提供支持。 根据全0和全1的IP地址的保留规定,子网划分时至少要从主机位的高位中选择两位作为子网位,且要能保证保留两位作为主机位。相应地,A、B、C类网络最多可借出的子网位是不同的,A类可达22位,B类为14位,C类则为6位。 2. 子网掩码 通过前面的介绍,知道了网络号对于网络通信非常重要。主机在发送一个IP数据包之前,首先要判断源主机和目标主机是否具有相同的网络号,具有相同网络号的主机被认为位于同一网络中,它们之间可以直接相互通信; 而网络号不同的主机之间则不能直接进行相互通信,必须经过第三层网络设备如路由器进行转发。但引入子网划分技术后,却引发了如何对主机网络号进行有效识别的新问题: 主机或路由设备因为无法区分一个给定的IP地址是否已被进行了子网划分,无法正确地从给定的地址中分离出相应的网络号(包括子网络号的信息)。引入子网掩码的概念来描述IP地址中关于网络标识和主机号位数的组成情况。 无论创建的子网数量多少,都需要全部32位才能标识每台主机,那么就需要另外使用一个32位的数字来表示哪些是网络号,哪些是主机号,称为子网掩码(Subnet Mask)。子网掩码与IP地址是一一对应的,由一串“1”和一串“0”组成,其中,“1”的个数对应于IP地址中的网络号和子网号,“0”对应于主机号,并用点分十进制表示。通常子网掩码中用作网络部分的位数是从高位开始连续1的个数,也可以称为前缀长度,用“/”表示。例如,若某个C类网络,则使用前24位来表示地址的网络部分,表示为255.255.255.0,及前缀表示为“/24”。 原来两级IP地址的A、B、C类地址使用的网络号也就是默认子网掩码。 将IP地址和子网掩码按位进行“与”运算,就可以得到IP地址的网络号。子网掩码告知路由器,IP地址的前多少位是网络地址,后多少位是主机地址,使路由器正确判断任意IP地址是否是本网段的,从而正确地进行路由。 例如,一个C类主机IP地址为202.100.3.100,子网掩码是255.255.255.192,则此IP地址的网络号如图56所示。 图56IP地址的网络号 【例51】有两台主机,主机A的IP地址为222.21.160.6,子网掩码为255.255.255.192; 主机B的IP地址为222.21.160.73,子网掩码为255.255.255.192。试分析主机A要给主机B发送数据的过程。 解: 首先要判断两个主机是否在同一网段。 (1) 主机A。 IP地址为222.21.160.6,即11011110.00010101.10100000.00000110。 子网掩码为255.255.255.192,即11111111.11111111.11111111.11000000。 按位逻辑与运算结果: 11011110.00010101.10100000.00000000。 网络地址的十进制形式: 222.21.160.0。 (2) 主机B。 IP地址为222.21.160.73,即11011110.00010101.10100000.01001001。 子网掩码为255.255.255.192,即11111111.11111111.11111111.11000000。 按位逻辑与运算结果: 11011110.00010101.10100000.01000000。 网络地址的十进制形式: 222.21.160.64。 两个结果不同,即两台主机的网络地址不同,意味着两台主机不在同一网络,主机A需先发送给默认网关,然后再发送给主机B所在网络。 【例52】某公司申请到一个C类IP地址,但要分配给10个子公司使用,一个子公司最多有8台计算机,每个子公司内部在同一个网段中,则子网掩码应该如何计算? 解: 10个子网就需要用4位主机号作为子网号,24=16>10,每个子网留下4位主机号,可供24-2=14台主机使用,符合>8要求,因此子网掩码由255.255.255.0再加上4位子网号,变为255.255.255.240。 【例53】子网划分示例。 对B类网络135.41.0.0/16需要划分为20个能容纳200台主机的网络(即子网)。因为16<20<32,即24<20<25,所以,子网位只需占用5位主机位就可划分成32个子网,可以满足划分成20个子网的要求。B类网络的默认子网掩码是255.255.0.0,转换为二进制数为11111111.11111111.00000000.00000000。现在子网又占用了5位主机位,根据子网掩码的定义,划分子网后的子网掩码应该为11111111.11111111.11111000.00000000,转换为十进制数应该为255.255.248.0。现在再来看一看每个子网的主机数。子网中可用主机位还有11位,211=2048,去掉主机位全0和全1的情况,还有2046个主机ID可以分配,而子网能容纳200台主机就能满足需求,按照上述方式划分子网,每个子网能容纳的主机数目远大于需求的主机数目,造成了IP地址资源的浪费。为了更有效地利用资源,也可以根据子网所需主机数来划分子网。还以上例来说,128<200<256,即27<200<28,也就是说,在B类网络的16位主机中,保留8位主机位,其他的8位当成子网位,也可以将B类网络135.41.0.0划分成256(28)个能容纳256-2=254台(去掉全0和全1情况)主机的子网。此时的子网掩码为11111111.11111111.11111111.00000000,转换为十进制为255.255.255.0。 通过此例可知,子网划分的计算步骤可以归纳为如下三步。 (1) 确定要划分的子网数。 (2) 求出子网数目对应二进制数的位数N及主机数目对应二进制数的位数M。 (3) 对该IP地址的原子网掩码,将其主机地址部分的前N位置取1或后M位置取0,即得出该IP地址划分子网后的子网掩码。 上例中分别根据子网数和主机数划分了子网,得到了两种不同的结果,都能满足要求。实际上,子网占用5~8位主机位时所得到的子网都能满足上述要求,那么在实际工作中,应按照什么原则来决定占用几位主机位呢? 一般情况下,在划分子网时,不仅要考虑目前需要,还应了解将来需要多少子网和主机,对子网掩码使用必须要更多的子网位,可以得到更多的子网,节约了IP地址资源,若将来需要更多子网时,不用再重新分配IP地址,但每个子网的主机数量有限; 反之,子网掩码使用较少的子网位,每个子网的主机数量允许有更大的增长,但可用子网数量有限。一般来说,一个网络中的节点数太多,网络会因为广播通信而饱和,所以,网络中的主机数量的增长是有限的,也就是说,在条件允许的情况下,会将更多的主机位用于子网位。 综上所述,子网掩码的设置关系到子网的划分。子网掩码设置的不同,所得到的子网也不相同。 【例54】某单位现有100台计算机需要联网,分配一个C类网络号192.168.1.0,要求划分子网,每个子网内的主机数不少于40台,如何划分? (1) 需要确定要划分的子网数。使用一个C类地址划分子网,必然要从代表主机号的第4个字节中取出若干位数用于划分子网。若取出1位,根据子网划分的规则,无法使用。若取出3位,可以划分8个子网,似乎可行,但子网的增多也表示了每个子网容纳的主机数减少,8个子网中每个子网容纳的主机数为30,而实际要求是每个子网内的主机数不少于40台。若取出两位,可以划分两个子网,每个子网可容纳62个主机号(全为0和全为1的主机号不能分配给主机),因此取出两位划分子网是可行的。 (2) 确定子网掩码。按照子网掩码的取值规则,子网掩码为255.255.255.192,如图57所示。 图57子网掩码的确定 (3) 确定标识每一个子网的网络地址。如图58所示,两个子网的网络地址分别为192.168.1.64和192.168.1.128。 图58子网的网络地址 (4) 确定每一个子网的主机地址范围,如图59所示。 图59子网的主机地址范围 经过以上4步,取主机位数的前两位作为子网号部分,其中,00与11组合不能使用,只能使用01和10组合。主机位数还剩下6位,每个子网最多可容纳主机数量为26-2=62台,符合题目要求。 5.2.5VLSM和CIDR 1. VLSM 虽然采用子网划分的方法可以部分解决一个大的网络地址分配过程中如何去适应小的网络应用的问题,但是这种子网划分方法还是有很大的局限性,就是在划分子网后每一个子网所能够提供的有效主机地址的数量是相同的。这在实际应用过程中就无法适应各种不同的应用环境。例如,一个单位在获得了一个C类地址后,将这个C类地址划分成了6个子网,每个子网所能够提供的有效主机地址是30个。可单位的实际情况是,有的部门需要20个IP地址,可以分配给这个部门一个子网地址就可以了,但是有的部门需要的IP地址有50个,这个时候就不好解决了。一般情况下有两种办法: 一是给这个部门分配两个子网地址,但是这个部门之间的通信就变成了网间通信了; 另外一个办法是重新规划子网,新划分的子网所提供的有效IP地址能够满足这个部门的需求,这种办法虽然解决了主机数量比较多部门的问题,但是对需求IP地址比较少的部门来说就浪费了大量的地址。 通过上面的分析可以知道,仅使用子网划分技术进行网络地址分配,整个网络必须使用相同的子网掩码,当用户选择了一个子网掩码后,每个子网内所包含的主机地址数量就固定下来了,用户就不能再随便改变这个网络子网掩码,除非要对网络的地址划分重新进行规划。也就是说,子网划分技术可以从某种程度上解决网络地址规模与产生的广播信息的问题,可以将网络规模控制在一个合理的范围内,但这种技术的缺点也是比较明显的,它对地址分配的灵活性不足,不能很好地适应用户网络规模的实际情况。在某些情况下,对IP地址的浪费是很严重的。为了解决这个问题,1987年,IETF提出了一个方案,这就是RFC1009。这个文件主要用来规范如何在一个网络中使用多个不同的子网掩码。这样每一个网络中所能够提供的主机地址数目可能是不同的,这与子网划分所讲的在一个网络中只允许使用相同的子网掩码完全不同,所以这种技术又被称为可变长子网掩码(Variable Length Subnet Mask,VLSM)。 VLSM技术使得IP地址的分配更加灵活和合理,对一个组织来说,可以根据实际的IP地址需求情况来制定相应的子网掩码。下面来看一下采用子网划分技术和使用可变长子网掩码技术来分配IP地址所产生的差异。例如,某组织拥有一个 B类网络,其网络地址是 130.73.0.0,如何对这个网络的地址进行分配是这个组织要首先考虑的问题。如果从主机位上借6位作为网络号,可以得到62个子网,每个子网可以提供1022个有效的主机地址。 在这种子网划分方式下,每个 IP 地址中与网络地址有关的位数是22位,可以表示成以下的形式: 130.73.*.*/22,其中,/22是网络前缀。再来看一下每个子网的情况,由于使用了 6 位子网位,利用前面所讲的知识可以得到划分了子网后的子网掩码是255.255.252.0,所有的子网均使用相同的子网掩码。对于每一个子网来说,它可以提供1022个有效的主机地址。对于拥有六七百台计算机的单位来说,考虑到以后单位网络规模的增加,使用这个子网划分方法是能够为人们接受的。但是对于一些小的单位来说,它们往往只拥有几十台的计算机,即使他们并不需要这么多的主机地址,也会将1022个地址全部分配给这样的单位,造成的地址浪费就太大了,是很难为人接受的一种地址分配方案。因为子网的分配方法使用单一的子网掩码,并且预分配的子网掩码是固定的,所以造成IP地址分配中的浪费是无法避免的。 一个比较常用的解决方案是,根据用户的不同需求给用户分配合适大小的地址块,而不再像子网划分那样,每次划分子网所分配的地址块的大小是固定的。如果给用户分配的地址块大小是可变化的,那么用户所使用的子网掩码必然是不同的。可变长子网掩码与子网划分所使用的子网掩码完全不同,在子网划分中,整个网络中所使用的子网掩码是完全相同的。下面来看一下在C类地址中,如果使用可变长子网掩码技术来划分地址块,使用不同的子网掩码则能够提供的有效主机地址也是不同的。具体情况见表53。 表53VLSM划分C类地址参照 地 址 前 缀掩码有效主机地址数地址块大小 /261926264 /272243032 /282401416 /2924868 /3025224 这是一个非常有用的表,用户在使用可变长子网掩码技术时,首先要根据自己网络的实际情况确定自己所需要的地址块的大小,通过查表可以得到相应的子网掩码。需要指明的是,在路由器协议RIPv1和IGRP中均不支持子网信息的传递,在它们所发出的数据包中,是没有子网掩码的相关信息的,这就意味着如果路由器的某个商品上设置了子网掩码,那么它就认为所有端口都使用相同的子网掩码。因此,可以说RIPv1和IGRP是有类路由协议。很容易得出下面的结论: 在运行有类路由协议的网络中,是无法使用可变长子网掩码的。但是在RIPv2和EIGRP中已经加入了对子网信息的支持,在路由器传送的数据包中包含子网掩码的相关信息,于是在同一个网络中就可以使用不同的子网掩码,可以很好地支持可变长子网掩码技术。 【例55】某公司最初拥有十多台计算机,由于公司规模不大,因此大家的计算机都在同一个C类网络192.168.1.0中。但随着公司的发展,人员规模增大,而且为了能够更好地保护公司的信息和文档,现在要求根据不同的部门把原来的一个网络分为多个子网。 【问题1】原来财务部的两台PC的IP地址是192.168.1.118和192.168.1.116,现在需要增加1台PC,最多可能增加到5台。那么应该使用的新的子网掩码是什么?新增加的这台PC可用的IP地址有哪些? 由于财务部最多增加到5台PC,即最多只用到5个IP有效主机IP地址,也就是只用到主机位数的3位(23-2=6)就可以容纳5个IP。而原来两台PC的C类IP地址最后一个字节转换为二进制分别为01110110与01110100,除了最后3位外其余二进制位数均相同,所以掩码可以取到IP地址(二进制)的前29位,掩码划分与IP分配如图510所示。 根据财务部的子网划分方案,可以得出财务部使用的新子网掩码为255.255.255.248,新增加的IP地址可以为192.168.1.113、192.168.1.114、192.168.1.115/192.168.1.117。 【问题2】开发部的6台机器原来的IP地址比较零散,数字最小的是192.168.1.16,最大的是192.168.1.43,为了使这些机器都处于一个子网,那么应该使用的新的子网掩码是什么?这个子网最多可以容纳多少台PC?子网号和子网广播地址分别是什么? 开发部IP地址最小的是192.168.1.16,最大的是192.168.1.43,换算成二进制后的结果如图511所示。 图510财务部子网划分方案 图511开发部子网分配方案 从分配方案中看到,开发部6个不连续IP只有最后6位不同(二进制),为了使它们属于同一个子网,取IP地址中前26位数作为网络与子网号最为合理,所以掩码为255.255.255.192。这个子网中的主机位为6位,所以所容纳的最大主机数(有效IP地址数)为26-2=62台。主机位数均为0的IP代表子网号,所以子网号为192.168.1.0,子网广播号地址即主机位数均为1,所以为192.168.1.63。 2. CIDR地址 无类域间路由(Classless InterDomain Routing,CIDR)在RFC1517~RFC1520中做出了描述,现已成为Internet标准。提出CIDR的初衷是为了解决IP地址空间不足(特别是B类地址)的问题,全球的B类IP地址已经在1995年耗尽。CIDR是在VLSM的基础上提出无分类编址方法,并不使用传统的有类网络地址的概念,即不再区分A、B、C类网络地址。在分配IP地址段时也不再按照有类网络地址的类别进行分配,而是将IP网络地址空间看成是一个整体,并划分成连续的地址块。然后,采用分块的方法进行分配。 CIDR地址从三级编址(使用子网掩码)又回到了两级编址。无分类的两级编址的记法为: CIDR地址::={<网络前缀>,<主机号>},该技术将网络前缀都相同的连续IP地址组成CIDR地址块。 在CIDR技术中,常使用子网掩码中表示网络号二进制位的长度来区分一个网络地址块的大小,称为CIDR前缀。如IP地址210.31.233.1,子网掩码255.255.255.0可表示成210.31.233.1/24; IP地址166.133.67.98,子网掩码255.255.0.0可表示成166.133.67.98/16; IP地址192.168.0.1,子网掩码255.255.255.240可表示成192.168.0.1/28等。 CIDR可以用来做IP地址汇总(或称超网,Super Netting; 或称路由汇聚,Route Aggregation)。在未做地址汇总之前,路由器需要对外声明所有的内部网络IP地址空间段。这将导致Internet核心路由器中的路由条目非常庞大(接近十万条)。采用CIDR地址汇总后,可以将连续的地址空间块总结成一条路由条目。路由器不再需要对外声明内部网络的所有IP地址空间段。这样,就大大减小了路由表中路由条目的数量。 使用CIDR地址汇总时应该注意以下几点。 (1) 构成超网的CIDR地址块中的地址数一定是2的整数次幂; (2) 网络前缀越短,其地址块包含的地址数就越多,而划分子网是使网络前缀变长; (3) 汇总(汇聚)后的CIDR地址遵循最长匹配原则,即汇聚后的网络前缀与各个CIDR地址前缀相同的位数尽量多。 CIDR地址可以方便地进行汇总和可变长子网掩码,目前在各大厂商的网络设备也均支持CIDR地址(无类IP),该技术作为互联网标准广泛应用在网络规划中,本书后面章节中所引用的IP地址如无特别说明,均是无类的CIDR地址。 【例56】CIDR地址路由聚合示例。 设有4条路由: 172.18.129.0/24、172.18.130.0/24、172.18.132.0/24和172.18.133.0/24,如果进行路由汇聚,能覆盖这4条路由的地址是多少? 4条路由均为CIDR地址块,前缀为24位,网络前缀换算为二进制形式如图512所示。 图512CIDR地址汇聚示例 可以看出4个地址只有前21位是相同的,4条路由汇聚地址前缀只要小于21位就可以将这4条路由覆盖,但根据最长匹配原则(网络前缀最长),最合理的汇聚地址前缀就是21位,这样不仅将路由汇聚,也避免了将不存在的地址汇聚进来,所以能覆盖的地址为172.18.128.0/21。 5.3IPv6协议 互联网协议第6版IPv6(Internet Protocol version 6)是被指定为IPv4继任者的下一代互联网协议版本。IPv6是个用于封包交换互联网络的网络层协议。重新设计互联网协议的主要原因是,20世纪90年代初有人担心10年内IPv4的IP地址就会不够用,同时新技术的出现对IP协议提出了更多的需求。1998年12月,互联网工程任务组(Internet Engineering Task Force,IETF)通过公布互联网标准规范(RFC2460)的方式出台了IPv6的相关定义。 一般而言,IPv6与IPv4是不兼容的,它与其他的Internet协议是兼容的,包括TCP,UDP,ICMP,IGMP,OSPF,BGP和DNS。IPv6的主要特征如下。 (1) IPv6(16字节固定长度的地址)有比IPv4更长的地址。 (2) IPv6对头部进行了简化,包括7个域。这一变化使得路由器可以更快地处理分组,从而提高了路由器的吞吐量,并缩短了延迟。 (3) 有更多的支持选项。IPv6允许数据报包含选项的控制信息,因而可以包含一些新的选项,允许协议继续扩充。 (4) 安全性方面的改进。IPv6中增加了安全性支持,可以将数据安全问题放到网络层协议中实现,其中,认证和隐私是关键特征。 5.3.1IPv6地址分类和格式 1. IPv6地址分类 协议主要定义了三种地址类型: 单播地址(Unicast Address)、组播地址(Multicast Address)和任播地址(Anycast Address)。与原来的IPv4地址相比,新增了“任播地址”类型,取消了原来IPv4地址中的广播地址,因为在IPv6中的广播功能是通过组播来完成的。 (1) 单播地址: 用来唯一标识一个接口,类似于IPv4中的单播地址。发送到单播地址的数据报文将被传送给此地址所标识的一个接口。 (2) 组播地址: 用来标识一组接口(通常这组接口属于不同的节点),类似于IPv4中的组播地址。发送到组播地址的数据报文被传送给此地址标识的所有接口。 (3) 任播地址: 用来标识一组接口(通常这组接口属于不同的节点)。发送到任播地址的数据报文,但数据报只交付给距离源节点最近(根据使用的路由协议进行度量)的一个接口。 2. IPv6地址格式 IPv6地址长度为128位,是IPv4地址长度的4倍,在表示和书写上比IPv4地址要困难,原来的IPv4使用十进制来表示,而IPv6由于地址太长,则采用十六进制来表示。地址格式有以下三种表示方法。 1) 冒分十六进制表示法 格式为X:X:X:X:X:X:X:X,其中,每个X表示地址中的一个16位值,以十六进制表示,例如: ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 在这种表示法中,每个X的前导0是可以省略的,例如: 1001: 00CC: 0000: 0002: 0000: 0000: 1002: AABB 1001: CC: 0: 2: 0: 0: 1002: AABB 2) 0位压缩表示法 在某些情况下,一个IPv6地址中可能包含多个全0的段,可以把连续的多段0压缩为“::”。但为保证地址解析的唯一性,地址中“::”只能出现一次,例如: 1001: CC: 0: 2: 0: 0: 1002: AABB →1001: CC: 0: 2:: 1002: AABB 0: 0: 0: 0: 0: 0: 0: 1 → :: 1 0: 0: 0: 0: 0: 0: 0: 0 → :: 3) 内嵌IPv4地址表示法 为了实现IPv4与IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为X: X: X: X: X: X: d.d.d.d,前96位采用冒分十六进制表示,而最后32位地址则使用IPv4的点分十进制表示,例如“: : 192.168.0.1”与“:: FFFF: 192.168.0.1”。注意在前96位中,压缩0位的方法依旧适用。 5.3.2IPv6报文头部 IPv6数据报文由一个基本报头加上0个或多个扩展报头再加上上层协议数据单元构成。如图513所示,扩展报头加上层PDU称为有效载荷,基本报头的长度固定有40字节,格式如图514所示。 图513IPv6数据报文格式 (1) 协议版本(Version): 长度4b,和IPv4报头版本号意思相同,这里为6。 (2) 流类型(Traffic Class): 长度8b,它等同于IPv4报头中的服务类型字段,表示IPv6数据报的类型或优先级,主要应用于QoS。 (3) 流标签(Flow Label): 长度20b,流可以理解为某一源地址发往一个或多个目的地址的连续单播、组播或任播报文的总称,所有属于同一个流的数据报都具有相同的流标签。IPv4中区分一个特定的数据流需要5元组(源、目的IP,源、目的端口,协议)。IPv6中用流标签字段、源地址字段和目的地址字段3元组为特定数据流指定了网络中的转发路径。这样,报文在IP网络中传输时会保持原有的顺序,提高了处理效率。 图514IPv6报文头部的格式 (4) 负载长度(Payload Length): 长度16b,定义了负载的长度,指紧跟IPv6报头后面的扩展报头和上层协议数据单元的长度,该字段能表示最大长度为65535B的有效载荷。 (5) 下一报头(Next Header): 长度8b。该字段定义了紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。这个区域类似于IPv4报头中的协议字段,但是在IPv6中,紧随在数据报头的不一定是上层协议的头(IPv4里面的数据报头后面跟的就是上层协议的头),有可能是扩展报头。 所以下一报头区域的命名具有很大范围的意义。 (6) 跳数限制(Hop Limit): 长度8b,该字段类似于IPv4报头中的Time to Live字段,它定义了IP数据报所能经过的最大跳数。每经过一个路由器,该数值减去1; 当该字段的值为0时,数据报将被丢弃。 (7) 源IP地址(Source IP Address)、目的IP地址(Destination IP Address): 长度分别为128b,表示源、目IPv6地址。 比较一下IPv4与IPv6的协议头部,主要区别如下。 (1) IPv4的头部长度域去掉了,因为IPv6头有固定的长度。 (2) IPv4的协议域也被去掉了,因为Next Header域指明了最后的IP头部跟的是什么。 (3) IPv4的所有与分段有关的域也被去掉了,因为IPv6采用另一种方法来实现分段功能。 (4) IPv4的校验和域也被去掉了,因为校验和会极大地降低性能。 5.3.3IPv6扩展头部 IPv6把原来IPv4头部中选项的功能都放在扩展头部中,并把扩展头部留给路径两端的源主机和目的主机来处理,而路由器不处理这些扩展头部(除了逐跳选项扩展头部之外),大大提高了路由器的处理效率。在RFC2460中定义了以下6种扩展头部。 (1) 逐跳选项报头(HopbyHop Options Header); (2) 目的站选项报头(Destination Options Header); (3) 路由选择报头(Routing Header); (4) 分片报头(Fragment Header); (5) 身份验证报头(Authentication Header); (6) 封装安全有效载荷报头(Encapsulating Security Payload Header)。 每一个扩展头部都由若干个字段组成,长度也各不同。所有扩展头部的第一个字段都是8位的“下一报头”字段。该字段的值指出了在该扩展头部后面的下一个扩展头部或上层协议是什么。当使用多个扩展头部时,应按以上的先后顺序出现。上层协议头部总是放在最后面。如在TCP数据之前有一个路由选择扩展头部加一个分片扩展头部,则报文格式为如图515所示。 图515有扩展头部的报文格式举例 5.4ARP与RARP 5.4.1ARP 1. 地址解析协议 尽管Internet上的每台机器都有一个(或者多个)IP地址,但是,真正发送分组的时候使用的并不是IP地址,因为数据链路层硬件并不理解Internet地址。现实中,大多数计算机都是通过一块接口卡连接到LAN上,该接口卡只能理解LAN地址(一个48位的以太网地址)。以太网的厂家从一个中心权威机构申请一块地址,这样可以保证任何两块网卡都不会有相同的地址。 每一个主机都设有一个ARP高速缓存(ARP Cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,这个映射表还经常动态更新。ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如何得到同一个局域网内其他主机的MAC地址? ARP的工作过程: 主机A在局域网内广播ARP请求分组,其他主机接收分组,IP地址与报文中一致的主机B收下分组,并在自己的ARP缓存中写入主机A的IP地址到MAC地址的映射,并发送ARP响应报文,A收到响应报文后在自己的ARP缓存中写入主机B的IP地址到MAC地址的映射。 2. 使用 ARP 的4种典型情况 (1) 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。 (2) 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。 (3) 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。 (4) 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。 3. 地址解析工作原理 在每台安装有TCP/IP的计算机里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。以主机A(192.168.1.5,00aa0078c612)向主机B(192.168.1.1,00aa0062c609)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址封装进数据帧里面发送就可以了; 如果在ARP缓存表中没有找到目标IP地址,主机A就会在网络上发送一个广播,A主机目标MAC地址是ffffffffffff,这表示向同一网段内的所有主机发出这样的询问: “我是192.168.1.5,我的硬件地址是00aa0078c612,请问IP地址为192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A以单播的形式做出这样的回应: “192.168.1.1的MAC地址是00aa0062c609”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时A和B还都更新了自己的ARP缓存表(因为A在询问的时候把自己的IP和MAC地址一起告诉了B),下次A再向主机B或者B向A发送信息时,直接从各自的ARP缓存表里查找就可以了。ARP缓存表设置了生存时间TTL,在一段时间内(一般15~20min),如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。 【例57】ARP工作原理示例(网络拓扑如图516所示)。 图516ARP工作示例网络拓扑 PC1与PC2通过双绞线与一台交换机相连,各自的IP地址分别为192.168.1.1与192.168.1.2,掩码为255.255.255.0,网关不设置。通过ipconfig 命令查看,得到两台计算机的MAC地址,PC1使用ping命令测试到PC2的连通性。 首先PC1会查找本机的ARP地址缓存表,由于是第一次通信,缓存表里没有PC2的映射内容,所以PC1会以广播帧(目标MAC地址位全为1)进行本网广播,询问PC2的MAC地址是多少,其中,ARP询问包格式中询问的MAC位数全部为0。ARP询问帧格式以及封装的以太网数据帧格式如图517所示。 图517ARP询问帧格式 当PC2收到PC1的ARP询问后,从询问包中解析出PC1的IP与MAC地址的映射关系,并且把这个关系添加进其自身的ARP地址缓存表内。因为此时PC2已经获得了PC1的物理地址与逻辑地址,所以PC2会以单播的形式对PC1响应。当PC1收到响应后也会将PC2的IP与MAC地址映射关系添加进ARP缓存中,同时执行ping命令向对方发送ICMP请求包。PC2的ARP响应帧和封装的以太网数据帧格式如图518所示。 图518ARP响应帧格式 4. 跨网段通信的地址解析 地址解析就是主机在发送数据帧前将目标IP地址转换成目标MAC地址的过程。另外,当发送主机和目的主机不在同一个网段中时,即便知道目的主机的MAC地址,两者也不能直接通信,因为双方无法构成直接链路连接,必须经过路由转发才可以。所以此时发送主机通过ARP获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址(经常是网关地址)。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送,这种情况称为ARP代理(ARP Proxy)。 【例58】跨网段通信地址解析示例(网络拓扑如图519所示)。 图519跨网段通信ARP解析示例网络拓扑 首先在PC1的命令提示符下,使用arpd命令清除PC1的地址缓存表内容,再使用ping命令测试到PC2的连通性。因为PC1与PC2的网络号分别是192.168.1.0/24与192.168.2.0/24,并不在同一个网段,所以属于跨网段通信。在这种情况下,PC1仍旧以广播形式发出ARP询问帧,不过询问的地址不是其他网段的PC2,而是本地网关(192.168.1.1/24)的MAC地址,ARP询问帧格式如图520所示。 图520跨网段通信ARP询问帧格式 由于是询问网关的MAC地址,本地网关收到PC1的ARP询问帧后,使用ARP响应帧对PC1回应,告知网关的IP与MAC地址的映射关系。网关的ARP响应帧格式如图521所示。 图521跨网段通信ARP响应帧格式 当PC1收到网关的响应后,会将网关的地址关系添加到本地地址缓存表中,同时向目标主机PC2(192.168.2.2)发送IP数据包(封装的是ICMP请求数据)。IP数据包的源和目标地址分别为PC1与PC2的IP地址,但封装的以太网数据帧的源和目标MAC地址却是PC1与网关(192.168.1.1)的MAC地址,这样数据帧被送到网关。IP与数据帧格式如图522所示。 图522跨网段通信IP数据包与数据帧格式 从本案例可以看出,在跨网段通信中,源与目标IP地址始终不变,而源与目标MAC地址,随着网段的不同却发生变化。由于ARP的地址询问是以广播形式发出的,所以地址解析范围仅局限在同一网段内,不能通过网络互联设备(路由器)。如果超过这个范围,则临时使用ARP代理的MAC地址作为接收方地址,ARP代理临时作为发送方转发数据帧,以此类推,直到将数据帧交付给真正的接收方。 5.4.2RARP 反向地址转换协议(Reverse Address Resolution Protocol,RARP )就是将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。 工作过程如下。 (1) 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。 (2) 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。 (3) 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。 (4) 如果不存在,RARP服务器对此不做任何的响应。 (5) 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通信,如果一直没有收到RARP服务器的响应信息,表示初始化失败。 5.5ICMP 控制报文协议(Internet Control Message Protocol,ICMP)用于主机或路由器报告差错情况和提供有关异常情况的报告。当意外事情发生时,通过ICMP可以报告有关的事件,ICMP也可以用于测试Internet。ICMP是网络层协议的一部分,但从细分的体系结构上看它是位于IP协议之上,因为ICMP报文是封装在IP 分组中传输的。即ICMP报文是作为IP有效载荷,就像TCP与UDP报文段作为IP有效载荷那样。同样地,当一台主机收到一个指明上层协议为ICMP的IP数据报时,它多路分解该数据报的内容给ICMP,就像多路分解一个数据报的内容给TCP或UDP一样。 5.5.1报文的格式 ICMP报文按功能分为差错报告报文和查询报文。ICMP报文的格式如图523所示。前4个字节是固定的格式,共有三个字段: 类型、代码和校验和。 图523ICMP报文的格式 (1) 类型(1B),表明ICMP消息的类型,不同的值代表不同的ICMP消息类型。表54列出了常用的ICMP报文类型。 (2) 代码(1B),是类型字段的附加信息,相当于子类型。比如类型3中代码=0表示网络不可达; 代码=1表示主机不可达。 (3) 校验和(2B),用来对整个ICMP报文进行检验。 (4) 接着的4个字节与ICMP的类型有关。 (5) 最后面是数据字段,其长度取决于ICMP的类型。 表54常用的ICMP报文类型 类型功能类型功能 0回送应答(Echo Reply)11数据报的时间超过 3目的站不可达12数据报的参数故障 4源站抑制13时间戳请求 5改变路由14时间戳应答 8回送请求 5.5.2协议的应用 1. 分组网间探测ping 广泛使用的ping程序可用来测试两个主机之间的连通性。ping是应用层直接使用网络层 ICMP的例子,它没有通过运输层的TCP 或UDP。使用ping可以检测常见的网络故障。使用ping命令时,将向目的站点发送一个ICMP回送请求报文(包括一些任选的数据),如目的站点接收到该报文,必须向源站点发回一个ICMP回送应答报文,源站收到应答报文(且其中的任选数据与所发送的相同),则认为目的站点是可达的,否则为不可达。报文格式如图524所示。 图524回送请求/应答报文 2. Tracert程序 Tracert是用ICMP报文来实现的。该程序允许使用者跟踪从一台主机到世界上任意一台其他主机之间的路由。 为了判断源和目的之间所有路由器的名字和地址,源主机中的Tracert向目的主机发送一批普通的IP数据报。每个数据报携带了具有一个不可达UDP端口号的UDP报文段。第一个数据报的TTL为1,第二个的TTL为2,第三个的TTL为3,以此类推。源主机也为每个数据报启动定时器。当第n个数据报到达第n个路由器时,第n个路由器观察到这个数据报的TTL正好终止。 根据IP协议规则,路由器将丢弃该数据报并发送一个ICMP警告报文给源主机(类型11,代码0)。该警告报文包含路由器的名字与IP地址。当该ICMP报文到达源主机时,源主机从定时器得到往返时延,从ICMP报文中得到第n个路由器的名字与IP地址。 5.6路由与路由协议 5.6.1路由选择 如果目的主机与源主机位于同一个网络中,则无需路由器即可通过本地网络在两台主机之间传送数据包。如果通信的主机位于不同的网络中,则数据包可能要跨多个不同网络,通过许多路由器转发数据包,本地网络就只需要将数据包从源主机传送到其网关路由器。路由器检查数据包目的地址的网络部分后将数据包转发到相应的接口。如果目的网络直接连接到此路由器,则将数据包直接转发到目的主机。而如果目的网络并非与其直接连接,则将数据包转发到作为下一跳路由器的接口上。 网络层的主要功能是把数据分组从源节点传送到目的节点,所以为传送的数据分组选择合适的路径就是网络层要解决的关键问题。路径选择算法的好坏关系到网络资源的利用率和网络性能的高低。不同的路由算法对最佳路径的评判有着不同的标准。 无论采用什么样的路由选择算法,路由选择过程都涉及下面一些问题。 (1) 测量(或获取)有关路由选择的网络参数。 (2) 把路由信息传播到适当的网络节点(网管中心或有关的转发节点)。 (3) 计算和更新路由表。 (4) 根据路由表的信息对传送中的分组进行调度。 按路由算法能否自动适应网络状态(如通信流量、拓扑结构等)的变化分为: 静态路由(非自适应算法)和动态路由(自适应算法)。许多网际网络中通过结合使用静态路由、动态路由和默认路由来提供所需要的路由。 5.6.2静态路由 静态路由不会根据当前测量或者估计的流量和拓扑结构,来调整它们的路由决策。相反,从发送端到接收端所使用的路由选择是预先在离线情况下手动配置好的,在网络启动的时候被下载到路由器中。默认路由也可以静态配置。 如果路由器与多台其他路由器相连则需要掌握网间结构。为了确保使用最合适的下一跳来路由数据包,每个已知目的网络都需要已经配置了路由或默认路由。由于在每一跳都要转发数据包,因此每台路由器必须配置能够反映出它在网络中位置的通往下一跳的静态路由。 此外,如果网间结构改变或有新的网络可用,还必须在每台路由器上手动更新此更改。如果没有及时更新,路由信息可能就不完整或不准确,从而导致数据包延迟并可能丢失。 1. 最短路径路由算法 这是一种最简单的路由选择策略。基本思路: 建立一个子网图,图中的每个节点代表一台路由器,每条弧代表一条通信线路(通常称为一条链路)。为了在一对给定的路由器之间选择一条路由路径,路由算法只需在图中找到这对节点之间的最短路径即可。每一对源和目标之间的通路都是按照某种最小费用准则预先选择好的,并存储在网络中某些地方。在设计网络路由时依据的费用准则不能与网络的动态参数(例如通信量的分布)有关,至多在网络拓扑结构变化时才重新计算一次全网的路由。 2. 扩散式路由算法 扩散式路由算法的基本思路: 源节点把分组发送给每个相邻节点(除了分组接收的节点),每个中间节点接收到分组后复制若干拷贝,转发给除输入链路之外的其他各个相邻节点,这样同一分组的拷贝像洪水泛滥一样迅速布满全网,总有一个拷贝最先到达目标节点。目标节点接收最先到达的分组后丢弃其余分组。使用扩散式路由选择时,有可能发生分组被重复拷贝的情况,实际上,除非采取某一种办法来抑制扩散过程,否则扩散法将会产生无限多的分组。 扩散式路由选择技术有以下两个特性值得注意。 (1) 源和目标节点之间所有可能的通路都被试用了,这样无论有多少链路或节点失效,只要有一条通路存在分组总能到达目的地。 (2) 由于所有通路都被利用了,必然有一个分组走了最短的通路最先到达目标节点。 5.6.3动态路由 静态路由不会产生任何网络开销而且将条目直接放入路由表中; 路由器无须做任何处理。静态路由的代价在于管理成本,即通过手动配置和维护路由表来确保高效率的有效路由。网络中的所有路由器都必须了解最新的路由信息,但通过手动的静态配置来维护路由表有时却并不可行。因此,需要使用动态路由协议。 动态路由协议是路由器动态共享其路由信息所依据的规则集。当路由器注意到自身充当网关的网络发生变化或者路由器之间的链路变更时,会将此类信息传送给其他路由器。当一台路由器收到有关新路由或路由更改的信息时,它会更新自己的路由表并依次将该信息传递给其他路由器。通过这种方式,所有路由器都会准确地动态更新路由表,而且可以掌握相距很多跳的远程网络的路由。 动态路由算法是通过对网络运行的自学习,自动构造路由表,具有自适应功能,算法比较复杂。算法的优点如下。 (1) 能极大地改善网络的性能,网络的经营者可以得到最大的吞吐率,网络用户则会明显感到网络延迟很小。 (2) 能对网络的通信量进行控制,避免或减缓网络中拥挤和阻塞的发生。 同时,实现这种灵活算法要付出更大的代价。 (1) 最佳路由的计算更复杂,更频繁,因而开销更大。路由器必须拥有足够的处理能力才能实施协议的算法和及时执行数据包路由和转发。 (2) 收集到的路由信息要传播到计算路由的节点,或者计算的结果要传播到转发分组的节点,这些都增加了网络的负载。 (3) 自适应算法对网络参数的变化反应太快会引起网络流的振荡,反应太慢则得不到最佳路由,为减少这些风险要经常对算法本身的某些参数进行调整,这又增加了网络管理的难度。 常用的路由协议包括: (1) 路由信息协议(Routing Information Protocol,RIP); (2) 开放最短路径优先(Open Shortest Path First,OSPF); (3) 增强型内部网关路由协议(Enhanced Interior Gateway Routing Protocol,EIGRP)。 5.6.4距离矢量算法和RIP 1. 距离矢量路由算法 每个路由器维护一张表(即一个矢量),表中列出了当前已知的到每个目标的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新它们内部的表。 2. 路由信息协议 RIP是最早的Internet路由协议之一,目前仍在广泛使用。RFC1058中定义了RIP版本1,RFC2453中定义了向后兼容的协议版本2。 RIP是一种分布式的基于距离矢量的路由协议,它使用“跳数”,即Metric来衡量到达目标地址的路由距离。这种协议的路由器只与自己相邻的路由器交换信息,范围限制在15跳之内。因为每经过一个路由器,跳数就加1。 RIP允许一条路径最多只能包含15个路由器,“距离”的最大值为16 时即相当于不可达。可见RIP只适用于小型互联网。 RIP不能在两个网络之间同时使用多条路由。RIP选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。 RIP有以下三个要点。 (1) 仅和相邻路由器交换信息。 (2) 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 (3) 按固定的时间间隔交换路由信息,例如,每隔30s交换一次。 收到相邻路由器(其地址为 X)的一个 RIP 报文,处理过程如下。 (1) 先修改此RIP报文中的所有项目: 把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。 (2) 对修改后的RIP报文中的每一个项目,重复以下步骤: 若项目中的目的网络不在路由表中,则把该项目加到路由表中。否则,若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。否则,若收到项目中的距离小于路由表中的距离,则进行更新,否则,什么也不做。 (3) 若3min还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。 (4) 返回。 RIP的报文由首部和多个路由部分组成,如图525所示。 首部由1字节的命令、1字节的版本和2字节的0组成,“命令”字段为1时表示RIP请求,为2时表示RIP应答。2字节的0为了4字节字的对齐。 图525RIP报文格式 每个路由信息部分需要用20B,包括: 地址类型标识,路由标记,网络地址,该网络的子网掩码,下一跳路由器地址以及到此网络的距离。 命令字段: 指定RIP消息的类型。命令字段值为1时表示请求消息,即要求应答系统发送所有或者部分路由表。命令字段值为2时代表响应消息,表示该消息包含发送者所有或者部分路由表。命令字段值为3或4(traceon、traceoff)已废弃。命令字段值为5由Sun系统保留使用。扩展的新命令值由6开始。 版本字段: 版本字段包含该RIP消息的版本号。到目前为止只有1和2两个版本号。 地址类型标识字段: 虽然RFC1058所规范的RIP隐含使用IP,但该字段用作与之前的RIP兼容,可以用作传输多种协议的路由信息,所以必须有一种机制,即一个字段,来指示如何解释消息中所包含的地址类型。 路由标记字段: 用作区分内部路由和外部路由。内部路由表示该路由是从自治系统内部学到的路由,反之则为外部路由。 网络地址字段: 4字节的地址域存放IP地址。该地址可以是主机地址、网络地址。 子网掩码字段: 标识网络地址的子网掩码。如果没有子网掩码,该字段为全零。 下一跳路由器地址字段: 包含到达网络地址字段所包含目的地的下一跳IP地址。 距离字段: 路由记录的最后一个字段,存放路由的距离信息。通常路径中增加一个路由器则该值加1。字段有效值为1~15,值为16表示IP地址所代表的网络或主机不可达,路由无效。 一个RIP报文最多可包括25个路由,因而RIP报文的最大长度是4+20×25=504B。 1) RIP请求/响应 运行RIP的路由器定期将路由表发送给相邻路由器。最初路由表中只有直连路由以及静态路由,并且其直连网络的度量值(Metric)为1,然后它向周围的其他路由器发出完整路由表的RIP请求(该请求报文的“IP地址”字段为0.0.0.0)。路由器根据接收到的RIP应答来更新其路由表。具体方法是添加新的路由表项,并将其Metric值加1,如果接收到与已有表项的目的地址相同的路由信息,则以下面三种情况分别对待。 (1) 已有表项的来源端口与新表项的来源端口相同,那么无条件根据最新的路由信息更新其路由表。 (2) 已有表项与新表项来源于不同的端口,那么比较它们的Metric值,将Metric值较小的一个最为自己的路由表项。 (3) 新旧表项的Metric值相等,普遍的处理方法是保留旧的表项。如果一个RIP更新信息到达一个路由器,而这个RIP更新信息的Metric值大于15,RIP将不把那个网络信息写入路由表。这样就会使得这个网络成为不可到达的,并会阻止将初始跳步数为16或大于16的网络的信息写入路由表。 RIP的特点是网络中所有运行RIP的路由器不了解整个网络的拓扑结构,只是简单相信从某个相邻路由器经过某个特定距离可以到达目标网络。 假设存在网络连接如图526所示,A、B和C三个路由器从左向右依次相邻。 图526RIP工作过程 RIP中,度量值(Metric)使用的是跳步值。在T0时刻,路由器刚刚启动RIP,此时,每个路由器仅存在其直连网络的路由,没有下一跳路由器,在更新时刻前,都以广播方式(RIPv2为组播)向各自所在的网络发送这些路由信息。 T1时刻,每台设备都接收到了相邻设备的更新并进行了第一次的路由信息调整。对路由器A而言,接收到了来自B的更新报文,得到了到达10.1.2.0和10.1.3.0的网络路由,A认为B的更新报文中到达10.1.3.0网络的路由可以接受,因为A的路由表中设有此目的网络的路由信息,而对于到达10.1.2.0网络的路由A不会采纳,原因是该网络对于A而言是直连网络,所以A保留原路由。对于其他的路由器也将执行相似的过程,最终经过两个更新周期后,每台路由器都会形成到达整个网络的路由。 2) RIP定时器 RIP规定,路由器定期向邻居发送路由表,这种路由器以预定义的时间间隔向邻居发送完整路由表的动作被称为定期更新。RIP定义了更新定时器(Update Timer): 无论网络拓扑是否发生变化,路由表全部内容都将每隔30s(默认)以广播的形式(255.255.255.255)或者组播的形式(224.0.0.9)发送出去。在多路访问的网络中为了避免由于系统时延引起的更新同步,Cisco路由器的实际更新时间为25.5~30s,即30s减去一个在4.5s内的随机值。 RIPv2采用组播更新方式,这样占用网络带宽较少,而且对于未启用RIP的设备只需执行较少的处理工作,直接在数据链路层就将数据帧丢弃。对比RIPv1采用广播更新,那么网络中所有设备无论是否启用RIP都将接受广播帧并且逐层向上处理,直到传输层后设备才会发现数据包的目的进程不存在,导致RIPv1占用较多系统资源。 除了更新定时器外,RIP还定义了另外三种定时器。 (1) 无效定时器(Invalid Timer),设定180s(默认),路由器每收到一次路由条目更新就把无效定时器清0,也就是说路由条目每隔无效计时器规定的时间内必须收到路由条目更新报文。如果没有收到相关条目的更新报文那么无效计时器超时(从收到更新路由开始计时,默认情况下超过180s),则将该路由的Metric值设置为16,即不可到达。从而将其标记为无效路由,并且会将这条无效路径通告给该路由器的相邻节点。在刷新定时器时间超时之前,该路由仍将保留在路由表中。 (2) 刷新定时器(Flush Timer),设定为240s(默认),指路由条目的刷新时间。刷新存在以下两种含义。 (1) 如果在刷新时间内没有收到更新信息,那么该目的的路由条目将被直接删除。 (2) 如果在刷新时间内收到更新信息,那么该目的的路由条目的刷新计时器被刷新清0。 Cisco中刷新计时器的默认时间是240s,意味着在一个路由条目在180s内没有收到更新路由信息时,无效定时器超时。路由条目中该路由被标志为Possibly Down,直到刷新计时器也超时了该路由条目才被删除。在RIP中真正删除路由条目的是刷新计时器超时(无效计时过后60s)。 (3) 抑制定时器(Holddown Timer),设定为180s(默认)。该定时器用于在路由收敛的过程中防止路由环路。路由器如果在相同的接口上收到某个路由条目的Metric值比原先收到的Metric值大,那么将启动抑制计时器,在抑制计时器的时间内该目的不可到达。在抑制周期内,路由器不学习该条路由的信息,除非是一条更好的路由信息,如本来是三跳,在抑制周期内学到了一条二跳的路由信息,则接受新的路由信息。抑制周期过后,即使是差的路由信息也接受,也就是说一个目标网络的Metric值增加或变为不可达,则启动抑制计时器(180s)直到超时,路由器才能接收有关于这条路由的更新信息。该定时器的原理是引用一个怀疑量,不管是真的还是假的路由消息,路由器先认为是假消息来避免路由环路的发生。 5.6.5链路状态算法和OSPF协议 1. 链路状态算法 链路状态算法的主要步骤如下。 (1) 发现它的邻居节点,并知道其网络地址。 (2) 测量到各邻居节点的延迟或者开销。 (3) 构造一个分组,分组中包含所有它刚刚知道的信息。 (4) 将这个分组发送给所有其他的路由器。 (5) 计算出到每一个路由器的最短路径。可以在路由器本地运行Dijkstra算法,以便构造出所有可能目标的最短路径。路由器可以将该算法的结果安装在路由表中,然后恢复正常的操作。 一旦一个路由器已经获得了全部的链路状态分组之后,就可以构造出完整的子网图。 2. 开放最短路径优先 开放最短路径优先(OSPF)路由选择协议于20世纪80年代后期和20世纪90年代初由Internet组织开发出来,成为一个现代的与提供方无关的协议。当时RIP已成为最主要的内部网关协议,但随着网络规模的增长已逐渐暴露出一些问题。OSPF协议的开发人员借鉴了许多其他路由选择协议的思想,包括最初的ARPAnet链路状态协议和OSI协议。运行OSPF协议的大规模网络必须使用分层网络拓扑结构,这在设计上更容易一些,但当发生协议变动时,可能需要改变拓扑结构。OSPF协议的特性包括: VLSM(可变长子网掩码)、快速收敛、提高网络利用率、支持相等代价的并行路径、使用组播报文和提供方无关性等。 该协议一直处于不断的发展变化中,以适应现代网络技术的变化。现在它还支持非广播多访问(NBMA)网络,并且可以将非桩区域(NotSoStubbyArea,NSSA)集成到网络中。 OSPF协议是一个被设计为适于在一个自治系统内操作的链接状态协议,通过在OSPF域内的每个路由器中维持一个一致的拓扑数据库来运作。该数据库中存放着各路由器上每条网络链路的状态(即各接口的状态),路由器以此来决定去往自治系统内各网络的最短路径。路由器将每条网络链路的信息送给它的所有相邻路由器,从而更新它们的拓扑数据库,并传播这些信息到其他路由器。OSPF协议路由选择信息的交换以IP报文的形式送出,使用的协议号是89。 OSPF协议使用Dijkstra算法计算拓扑数据库中的信息来生成从执行计算的路由器到各目的网络的最短路径,得到的最短路径将标明到各目的地的最佳下一跳路由器。用于到达最佳下一跳路由器的IP地址和接口将被填入IP路由选择表中。因为所有路由器拥有相同的拓扑数据库,所以尽管每个路由器从它自己的角度寻找到达各目的地的最短路径,但最短路径都是一致的。 在小型网络上,基本的OSPF协议配置与RIP配置差别不大。但当把OSPF协议应用于规模较大的网络时,它就会变得很复杂,需要考虑区域设计、冗余、即时链路以及验证等多种因素。 目前最主要的内部网关协议,是对链路状态路由协议的一种实现。OSPF分为OSPFv2和OSPFv3两个版本,其中,OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。其特点如下。 (1) 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。 (2) 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(Metric)。 (3) 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。 (4) OSPF不用 UDP 而是直接用 IP 数据报传送。OSPF 构成的数据报很短,这样做可减少路由信息的通信量。 (5) OSPF协议中如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡。 (6) OSPF还规定每隔一段时间,如 30min,要刷新一次数据库中的链路状态。当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF有5种分组类型: 问候(Hello)分组,数据库描述分组,链路状态请求分组,链路状态更新分组和链路状态确认分组。 OSPF的区域(Area): 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。 (1) 每一个区域的路由器数量不超过200个,分成两种区域,即主干区域和其他区域。 (2) 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。 (3) 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。 (4) OSPF使用层次结构的区域划分。在上层的区域叫做主干区域(Backbone Area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。 习题 一、 术语解释 1. 路径选择2. 虚电路与数据报3. 路由与交换4. 广播与组播 5. 网络号、子网号与主机标识6. ICMP报文7. 静态路由与动态路由 8. 默认网关与默认路由9. 有类别地址与无类别地址10. VLSM与CIDR 二、 单项选择题 1. 若两台主机在同一子网中,则两台主机的IP地址分别与它们的子网掩码相“与”的结果一定()。 A. 为全0B. 为全1C. 相同D. 不同 2. 给定一个物理地址,()协议能够动态映射出该地址的逻辑地址。 A. ARPB. RARPC. ICMPD. 以上都不是 3. 在下面的IP地址中属于C类地址的是()。 A. 141.0.0.0B. 3.3.3.3 C. 197.234.111.123D. 23.34.45.56 4. 如果数据包是给本网广播的,那么该数据包的目的IP地址应该是()。 A. 255.255.255.255B. 0.0.0.0 C. 子网最高地址D. 子网最低地址 5. IP协议中,如果首部不含选项字段,则首部长度字段的值应为()。 A. 0B. 5C. 10D. 20 6. 下面的()是广播地址。 A. 1.1.1.1B. 255.255.255.255 C. 1.0.1.0D. 127.0.0.1 7. 网络层中实现IP分组转发的设备是()。 A. 中继器B. 网桥C. 路由器D. 网关 8. B类地址的默认子网掩码为()。 A. 255.0.0.0 B. 255.255.0.0 C. 255.255.255.0D. 255.255.255.255 9. RARP的主要功能是()。 A. 将IP地址解析为物理地址B. 将物理地址解析为IP地址 C. 将主机域名解析为IP地址D. 将IP地址解析为主机域名 10. ICMP是被()协议封装的。 A. UDPB. TCPC. IPD. PPP 11. ping指令实现的是()协议。 A. ARPB. IGMPC. ICMPD. IP 12. 下面IP地址中,能够用来向本机发送数据的是()。 A. 255.255.255.255B. 127.0.0.1 C. 0.0.0.0D. 255.255.0.0 13. RIP(路由信息协议)采用了()作为路由协议。 A. 距离向量B. 链路状态C. 分散通信量D. 固定查表 14. 若一个IP分组中的源IP地址为193.1.2.3,目标地址为0.0.0.9,则该目标地址表示()。 A. 本网中的一个主机B. 直接广播地址 C. 组播地址 D. 本网中的广播 15. IP地址202.168.1.35/27表示该主机所在网络的网络号为()。 A. 202.168B. 202.168.1 C. 202.168.1.32 D. 202.168.1.16 16. ICMP测试的目的是()。 A. 测定信息是否到达其目的地,若未到达,则确定为何原因 B. 保证网络中的所有活动都是受监视的 C. 测定网络是否根据模型建立 D. 测定网络是处于控制模型还是用户模型 17. 以下源和目标主机的不同IP地址组合中,只有()组合可以不经过路由直接寻找。 A. 125.2.5.3/24和136.2.2.3/24 B. 125.2.5.3/16和125.2.2.3/16 C. 125.2.5.3/16和136.2.2.3/21 D. 125.2.5.3/24和136.2.2.3/24 三、 简答题 1. 试简单说明IP,ARP和ICMP的作用。 2. 分类IPv4地址分为哪几类?各类如何表示? 3. 试简述RIP和OSPF路由选择协议的主要特点。 4. 网络层向上提供的服务有哪两种?试比较其优缺点。 5. 比较交换机和路由器各自的特点和优缺点。 6. 简述路由器转发IP数据报的基本过程。 7. 什么是最大传送单元MTU?它和IP数据报首部中的哪个字段有关系? 8. 某单位的一台主机的IP地址为218.23.49.55,其子网掩码为255.255.255.224,请写出该IP地址所在的网络ID,该子网内可分配的IP地址范围。 9. 写出如下地址172.16.10.49/255.255.255.224所在的网络ID,该子网内的广播地址以及该子网内可分配的IP地址范围。 10. 一个数据报长度为4000B(包含固定首部长度)。现在经过一个网络传送,但此网络能够传送的最大数据长度为1500B。试问应当划分为几个数据片?各数据片的数据字段长度、片偏移字段和MF标志应为何数值? 11. 某C类网络号为198.168.3.0,若需要将该网络划分成6个子网,请给出划分方案。 (1) 给出选用的子网掩码; (2) 给出各子网的网络号; (3) 给出各子网内的广播地址; (4) 给出各子网内可分配的IP地址范围。 12. 设某路由器R建立了路由表如表55所示,此路由器可以直接从接口0和接口1转发分组,也可以通过相邻的路由器R2,R3和R4进行转发。 表55路由器R的路由表 目 的 网 络子 网 掩 码下一站 202.118.0.0255.255.255.224接口0 202.118.10.0255.255.255.0接口1 202.118.0.244255.255.255.240R2 190.168.19.0255.255.255.192R3 *(默认)0.0.0.0R4 现共收到4个分组,其目的站的IP地址分别为: (1) 202.118.0.19 (2) 190.168.19.202 (3) 202.118.10.244 (4) 202.118.0.250 请分别计算其下一站。写出简单运算过程。 13. 试根据本章关于ARP工作原理的叙述,包括本地ARP和代理ARP工作过程,来画出关于ARP工作原理的流程图。 14. IPv6的主要特点是什么?引发IPv6产生的主要背景有哪些? 15. 说明子网掩码的作用,并判断主机172.24.100.45/16和主机172.24.101.46/16是否位于同一网络中,主机172.24.100.45/24和主机172.24.101.46/24的情况是否相同? 16. 网络层的功能是否存在什么不足之处?在网络层之上是否还需要其他涉及通信的层存在?