第5章网络层 互联网络是指将分布在不同地理位置的网络和设备连接起来,以构成更大规模的网 络,最大限度地实现网络资源的共享。网络互联能够提高资源的利用率,改善系统性能, 提高系统的可靠性和安全性,组网建网和网络管理更方便。 网络互联的类型主要如下。 (1)LAN-LAN 互联:属于较近距离的LAN 互联,如校园网(各建筑物间)、各楼层 间LAN 的互联。 (2)同构网的互联:指相同协议的局域网的互联。常用的设备有中继器、集线器、交 换机、网桥等。 (3)异构网的互联:指两种不同协议的局域网的互联。常用的设备有网桥、路由 器等。 (4)LAN-WAN 互联:属于小区域范围内LAN 与WAN 互联,主要解决一个小区域 范围内相邻的几个楼层或楼群之间以及在一个组织机构内部的网络互联,扩大了数据通 信的连通范围,可使不同单位或机构的LAN 连入范围更大的网络体系中。最常用的互 联设备有网关和路由器。 (5)WAN-WAN 互联:属于不同地区网络的互联,主要使用路由器实现。 5.网络层概述 1 作为OSI 模型的第3层,网络层是处理端到端数据传输的最低层,体现了网络应用 环境中资源子网访问通信子网的方式。 网络层建立网络连接并为上层提供服务,具体地说,网络层具有以下主要功能: (1)为传输层提供服务。网络层提供的服务有两类,面向连接的虚电路服务和无连 接的数据报服务。虚电路服务是网络层向传输层提供的一种使所有数据包按顺序到达目 的节点的可靠的数据传送方式,进行数据交换的两个节点之间存在着一条为它们服务的 虚电路;而数据报服务是不可靠的数据传送方式,源节点发送的每个数据包都要附加地 址、序号等信息,目的节点收到的数据包不一定按序到达,还可能出现数据包的丢失现象。 (2)组包和拆包。在网络层,数据传输的基本单位是数据包(也称为分组)。在发送 方,传输层的报文到达网络层时被分为多个数据块,在这些数据块的头部和尾部加上一些 106 相关控制信息后,即组成了数据包(组包)。数据包的头部包含源节点和目标节点的网络 地址(逻辑地址)。在接收方,数据从低层到达网络层时,要将各数据包原来加上的包头信 息去掉(拆包), 然后组合成报文,送给传输层。 (3)路由选择。路由选择也称为路径选择,是根据一定的原则和路由选择算法在多 节点的通信子网中选择一条最佳路径。确定路由选择的策略称为路由算法。在数据报方 式中,网络节点要为每个数据包做出路由选择;而在虚电路方式中,只需在建立连接时确 定路由。 (4)流量控制。流量控制的作用是控制拥塞,避免死锁。网络的吞吐量(数据包数 量/秒)与通信子网负荷(即通信子网中正在传输的数据包数量)有着密切的关系。为防止 出现拥塞和死锁,需进行流量控制,通常可采用滑动窗口、预约缓冲区、许可证和分组丢弃 四种方法。 5.1 数据报网络服务 1. 在数据报方式中,每个分组是一个独立的传输单位,携带有完整的目的地址信息,在 每台路由器上被独立转发。分组在传输前不需要预先确定一条从源节点到目的节点的路 径,所以这种转发方式称为无连接方式。 图5-1是数据报子网内的路由示意图。假设主机H1 向主机H2 发送消息,消息的长 度是最大分组长度的5倍,则网络层必须将消息分割成5个分组,再将这些分组依次发送 给路由器A。 图5-1 数据报网络的路由 每台路由器都有一个转发表,指明了目的地址及其输出节点,如图5-1(b)给出了节 点A、C、E的转发表的信息。 当分组1、2、3和4到达A时,先被暂存以便计算校验和。接着,根据A的路由表,每 一个分组被转发给C。然后,分组1被先后转发给E和F,之后传输给了主机H2 。同样, 分组2、3和4也要经过ACEF 这条路径。 然而,分组5与此不同,当它达到A之后,可能由于ACEF 路径上发生了拥塞现象, A决定采用另外的路径发送分组,于是更新了路由表,如图5-1(b)中的A的新表。结果, 分组5被发送给了路由器B。 在数据报方式下,主机在发送一个分组前无法知道网络是否能传送该分组,也无法知 道目的主机是否可以接收该分组。其次,由于每个分组被独立转发,数据报网络也无法保 证分组传输的顺序。此外,如果有分组在中途丢失,网络层也很难检测。 5.2 虚电路网络服务 1. 在虚电路方式中,在相互通信的两台主机之间必须先建立一条网络连接,从源节点到 目的节点形成一条逻辑通路,称为虚电路。对于所有在该连接上通过的流量,都使用这条 路径。当连接释放后,虚电路也随之终止。 图5-2给出了虚电路服务的示例,主机H1 已经建立了与主机H2 的连接1,从主机 H1 发出的5个分组都将按序沿着这条连接发往主机H2,如图5-2(a)所示。 图5-2 虚电路网络的路由 在面向连接的服务中,每个分组都包含一个标识符,指明其所属虚电路,称为电路号。 在每个路由表中,该连接都被记录在第1个表项中,且具有输入输出关系。如图5-2(b) 所示,A的路由表中第1行表明:一个分组包含了电路号1,输入是H1,输出是路由器C, 且具有电路号1。之后,如果主机H3 也希望H2 建立连接,由于是首次连接,则H3 选择 108 自己的电路号1。显然,A节点具有了2个相同的电路号。为了便于区分,A给第2个连 接的输出流量分配出另一个电路号2,这样就避免了冲突。 5.3 数据报网络和虚电路网络的比较 1. 数据报网络和虚电路网络的主要差异如表5-1所示。下面从几方面进行分析。 表5- 1 数据报网络和虚电路网络的比较 比较项目数据报网络虚电路网络 电路建立不需要需要 延时分组传输延时电路建立,分组传输延时 地址 每个分组携带完整的源地址和目 的地址 每个分组携带一个很短的虚电路号 状态信息路由器不保留状态信息每台路由器需要保存一张虚电路表 路由选择每个分组单独选择路由 在建立虚电路时选择路由,此后所有分组使 用该路由 路由器失效的影响 除了在路由器崩溃时正在传输的 分组丢失之外,无其他影响 经过失效路由器的所有虚电路都将中断 服务质量很难实现 如果能提前为每条虚电路分配足够的资源, 则容易实现 拥塞控制很难实现 如果能提前为每条虚电路分配足够的资源, 则容易实现 1. 路由器内存空间和带宽之间的平衡 虚电路机制使分组不需要包含完整的目的地址,而只要包含电路号即可,但它需要建 立路由器内部的表空间。 数据报需要目的地址,如果分组都很短,则其完整的目的地址可能需要消耗相当多的 开销,从而会浪费带宽。 2. 建立虚电路所需时间和地址解析的时间的平衡 虚电路的连接建立阶段需要时间和资源,但数据分组传输时非常简单,路由器只要使 用电路号作为索引,在内部表中找到该分组的目标去向即可。 在一个数据报子网中,路由器需要执行一个相对复杂的查找过程,以便定位到该目标 的表项。 3. 路由器内存中所需表空间的数量 在数据报子网中,每一个可能的目的地址都要求有一个表项。 在虚电路子网中,只要为每一个虚电路提供一个表项。然而,建立连接的分组也需要 被路由,也使用目的地址。 4. 服务质量 在服务质量保证方面,虚电路具有优势。当建立连接时,虚电路子网可以提前分配资 源(如缓冲区空间、带宽和CPU 周期)。当分组开始陆续到来后,所需的资源都已经准备 好了。而对于数据报子网,则很难避免拥塞现象。 5. 路由器失效的影响 如果发生了路由器崩溃或其内存数据丢失现象,则所有经过该路由器的虚电路都将 被中断。但对于数据报来说,只有还留在路由器队列中的分组会丢失,对整体使用效果影 响不大。因此,一条通信线路的失效对使用该线路的虚电路来说是致命的,而如果使用数 据报,路由器可以在中途改变传输路径,因而这种失效很容易得到解决。 5.标准分类的IP地址 2 在互联网络中,需要为每台主机和路由器等设备分配一个在全世界范围内唯一的标 识符,即IP 地址。IP 地址的编址方法共经过了以下五个阶段(如图5-3所示)。 图5-3IP 地址处理方法的演变过程 (1)分类的IP 地址。这是最基本的编址方法,于1981 年按照IPv4协议将IP 地址分 为三类:标准IP 地址、特殊IP 地址和预留的专用地址,每一个地址都采用网络号-主机号 的结构。 (2)划分子网。1991 年改进了标准IP 地址,增加了子网号,使IP 地址具有网络号 子网号-主机号三级结构。 (3)构成超网。1993 年提出了无类域间路由CIDR 技术,目的是将现有的IP 地址合 并为较大的、具有更多主机地址的路由域。 (4)网络地址转换。1996 年提出,主要应用于内部网络和虚拟专用网络以及ISP 为 拨号用户访问Internet提供的服务上。 (6。1999 年正式分配地址,6协议成为标准草案。 5)IPvIPv 将IP 地址划分为A、B、C、D和E共5类,每类都是由网络号和主机号两部分构成, 如图5-4所示。 其中,A、B、C三类IP 地址都是单播地址,是最常用的。D类地址用于组播,而E类 地址保留未用。 IP 地址的长度是32 位,为了便于阅读和记忆,一般采用点分十进制格式,将32 位的 二进制代码按每8位分隔,且分别转换为4个十进制数,再由点组合成一个字符串。 110 图5-4 标准分类的IP 地址 比如: A类第1个IP 地址:00000001000000000000000000000000,表示为1.0; 0. 0. C类第1个IP 地址:11000000000000000000000000000000,表示为192.0. 0.0; C类最后的IP 地址:11011111111111111111111111111111,表示为223.255 。 255. 255. 5.1 特殊IP 地址 2. 在网络号和主机号的二进制数分别取为全0、全1时的地址作为特殊IP 地址,只在 特定的场合下使用,如表5-2所示。 表5- 2 特殊IP 地址 网络号主机号源地址目的地址含义 0 0 可用不可用即0.0.0.0,指在本网络上的本主机 0 host-id 可用不可用 在本网络上的某台主机host-id,如A类地址0.2.3.4、 B类地址0.0.16.84 、C类地址0.0.0.21 全1 全1 不可用可用 即255.255.255.255,受限广播。只在本网络上进行广 播,各路由器都不转发 net-id 全1 不可用可用 直接广播:对网络号net-id上的所有主机进行广播,如 A类地址110.255.255.255 、B类地址180.31.255.255 、 C类地址210.31.32.255 127 任意数可用可用 回送测试:用于网络软件测试和本地进程间通信,如 127.0.0.1 5.2 专用地址 2. 专用地址也称为预留地址,用于专用的内部网络,或者希望采用网络地址转换技术、 由ISP 为拨号用户连接到因特网所用,而不能用于因特网。当一个分组使用专用IP 地址 时,该网络如果有路由器连接到因特网,则路由器不会将该分组转发到因特网上。详细内 容及其应用将在第5. 8节介绍。 5.3 标准分类IP地址 2. 除了以上两种地址外,其他地址都可以使用,如表5-3所示。 表5- 3 IP地址的使用范围 网络类别 第一个可用 的网络号 最后一个可用 的网络号 最大可用网络数 每个网络中的 最大主机数 A 1 126 126(272) 16777214 B 128.1 191.255 16383(2141) 65534 C 192.0.1 223.255.255 2097151(2211) 254 【例5-1】判断以下IP地址的写法是否正确,将有错误的改正过来,然后指出哪些可 以作为主机地址。 (1)111.045. 56.78 (2)221.7.20 34.8. (3)75.301. 45.14 (4)11100010.14. 23.67 (5)221.71. 45.255 (6)141.0. 14.0 (7)0.0. 0.64 (8)210.32. 31.0 (9)110.0. 0.0 (10)234.3. 2.4 解析: (1)错误, 56.78 。可以作为主机地址。 (2)错误, 应为111.45. 如221.7. 超过了4字节。任意取4字节组合, 34.8。可以作为主机地址。 (3)错误,~的任意数, ... 301超过了最大数25 。可以修改为025 如754512614 。可以作 为主机地址。 (4)错误,将比特序列与点分表示混合在一起了,应该将11100010改为十进制数,即 226 。该地址属于D类地址,不可以作为主机地址。 (5)没有错误。这是一个广播地址,由路由器发出,不能作为主机地址。 (6)没有错误。这是一个B类的网络地址,不能作为主机地址。 (7)没有错误。这是指本地主机号为64的主机,由路由器或主机发出,但不能作为 主机地址。 (8)没有错误。这是一个C类的网络地址,不能作为主机地址。 (9)没有错误。这是一个A类的网络地址,不能作为主机地址。 (10)没有错误。这是一个D类地址,不能作为主机地址。 112 下面给出一个互联网中分类IP 地址的典型示例,如图5-5所示,包含了6个网络。 (1)具有C类网络地址220.0的令牌环LAN 。 3. (2)具有B类网络地址132.6.0的以太网LAN 。 18. 0. (3)具有A类网络地址119.0的以太网LAN 。 0. 0. (4)点对点的WAN,该网络只包含了2台路由器,没有主机,可以不分配网络地址。 (5)具有C类网络地址210.6.0的以太网LAN,通过网桥将2个网段互连。 31. 32. (6)具有C类网络地址200.0的交换WAN,连接了4台路由器,其中R1 连接 到令牌环网络220.R2 连接到了其他网络,R3 连接到了以太网210.R4 连 78. 3.6.0,32. 接到了以太网132.0。 31.0, 18. 0. 图5-5中的小圆点表示需要有一个IP 地址,对应了所有的主机和路由器。由于网桥 工作于数据链路层,用网桥互连的网段仍然是一个局域网,只能有一个网络号,如 31.0。而路由器工作于网络层,它的每一个接口都有一个不同网络号的IP 地址。 所以,路由器总是具有2个或2个以上的IP 地址。在同一个局域网上的节点(主机或路 由器), 其IP 地址中的网络号必须是一样的。 210.32. 图5-5 互联网中分类IP 地址的典型示例 5.子网与超网编址方法 3 分类IP 编址方法存在着以下三个明显的问题。 (1)IP 地址的有效利用率问题:如A类地址的主机号长度为24 位,即使对于超级机 构,一个网络中也不可能有1600 万个节点。而C类地址的主机号长度仅有8位,每个网 络可用的主机数最多是254 。一旦超过,就需要申请一个B类IP 地址。 (2)路由器的工作效率问题:分配的IP 地址越多,则路由表越大,路由器的查询速度 越慢。 (3)两级IP 地址不够灵活:新增网络时,无法直接利用原有网络中多余的地址空间。 为了解决这个问题,可以采用子网和超网编址方法。子网划分的思想已经融入当前 的无分类编址方案中。 5.1 IP 子网划分 3. 从1985 年起,在IP 地址中增加了一个“子网号字段”,使两级IP 地址变成了三级IP 地址。子网划分方法是从网络的主机号中借用若干位作为子网号,则主机号的长度就减 少了。因此,两级IP 地址在本单位内部就变成三级IP 地址,即网络号—子网号—主 机号。 1. 子网划分思路 下面给出一个示例说明子网划分的概念,如图5-6所示,为某单位拥有一个B类地址 141.0.23.x的数据报都被送到该网络上的路由器R。 23.0。凡是目的地址为141.x. 图5-6 划分子网的网络示例 图56中划分了3个子网,它们的网络地址分别是:141.0、0、 -23.141.4. 2.23. 0。网络141.0上的路由器R收到数据报后,再根据数据报的目的地址将 其转发到相应的子网。 未划分子网时,路由表中普通路由的表项为 (目的网络地址,下一跳地址) 而在划分子网的情况下,转发算法和路由表的信息都发生了变化,路由表中增加了子 网掩码项,因此路由表包含了3项内容: 141.21.0. 23.23. 114 (目的网络地址、子网掩码和下一跳地址) 在选择路由时,使用表项中的子网掩码和目的IP 地址进行与操作,其结果与表项中 的目的网络地址相比较。若相等,表明匹配,则把数据报转发到该表项的下一跳地址;否 则,执行默认路由等操作。 子网掩码是一个网络或一个子网的重要属性,其功能在于:只要将子网掩码和IP 地 址进行逐位与运算,就能立即得出网络地址。这有助于路由器的路由,方便查找路由表。 现在因特网的标准规定:所有的网络都必须有一个子网掩码,同时在路由器的路由表中 也必须有子网掩码项。如果一个网络不划分子网,则该网络的子网掩码使用默认子网掩 码。A、B、C类的默认子网掩码如下。 A类地址的默认子网掩码:255.0. 0.0 。 B类地址的默认子网掩码:255.0 。 255. 0. C类地址的默认子网掩码:255.0 。 255. 255. 下面给出了子网掩码的示例,如图5-7所示,其中,子网号占用了原有主机号的8位。 子网掩码对应于三级IP 地址中的网络号和子网号部分全部是比特1,其余为0。将IP 地 址和子网掩码进行与运算,得到图5-7(d)的子网地址。 图5-7 子网掩码和子网的网络地址示例 2. 子网规划设计 根据已成为因特网标准协议的RFC950 文档(1985 年), 子网号不能为全1或全0。 不过,随着无分类域间路由选择CIDR 的广泛使用,现在全1和全0的子网号也可以使用 了。在1995 年提出的RFC1978 标准也这样要求。但是,早期的路由器并不支持这两种 子网号,所以一定要谨慎使用,要分析路由器所用的路由选择软件功能,看其是否支持全 0或全1的子网号。 【例5-2】一家小公司内部有3个部门A、B、C,其中A部门有10 台主机,B部门有 25 台主机,C部门有29 台主机,该公司被分配的主机IP 地址为192.2.公司决定在 内部划分子网,为给每个部门划分单独的网段。要求: 168.0,