《第12讲网络层3》由会员分享,可在线阅读,更多相关《第12讲网络层3(51页珍藏版)》请在金锄头文库上搜索。
1、第12讲网络层(3)知识回顾lARP协议lIP数据报格式本讲教学内容和教学目标l理解IP转发分组的流程l理解划分子网的必要性l掌握划分子网的方法l掌握默认子网掩码l理解使用子网进行分组转发l掌握CIDR的网络前缀l理解路由聚合的概念和应用IP 层转发分组的流程 l有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。l可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。l但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。 网 110.0.0.0 网 440.0.0.0 网 330.0.0.0
2、 网 220.0.0.010.0.0.440.0.0.430.0.0.220.0.0.920.0.0.7目的主机所在的网络下一跳地址20.0.0.030.0.0.010.0.0.040.0.0.020.0.0.730.0.0.1直接交付,接口 1直接交付,接口 0路由器 R2 的路由表30.0.0.110.0.0.440.0.0.430.0.0.220.0.0.920.0.0.730.0.0.1链路 4链路 3链路 2链路 1R2R3R101R2R3R1在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址) 查找路由表根据目的网络地址就能确定下一跳路由器,这样做的结果是:l IP 数
3、据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。l 只有到达最后一个路由器时,才试图向目的主机进行直接交付。 特定主机路由 l这种路由是为特定的目的主机指明一个路由。l采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。 默认路由(default route)l路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。l这种转发方式在一个网络只有很少的对外连接时是很有用的。l默认路由在主机发送 IP 数据报时往往更能显示出它的好处。l如果一个主机连接在一个小网络上,而这个网络只用一个路由
4、器和因特网连接,那么在这种情况下使用默认路由是非常合适的。 N1R1因特网目的网络 下一跳 N1 直接 N2 R2 默认 R1路由表N2R2只要目的网络不是 N1 和 N2,就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。 必须强调指出 lIP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。l当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。l网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址
5、找到下一跳路由器。 分组转发算法 (1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。(6) 报告转发分组出错。 划分子网从两级 IP 地址到三级 IP 地址
6、 l在 ARPANET 的早期,IP 地址的设计确实不够合理。nIP 地址空间的利用率有时很低。 n给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 n两级的 IP 地址不够灵活。 l从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。l这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议l划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。l从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。IP地址 := , , (4
7、-2) 划分子网的基本思路 l凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。l然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。l最后就将 IP 数据报直接交付目的主机。 划分子网的基本思路(续) 145.13.3.10145.13.3.11145.13.3.101145.13.7.34145.13.7.35145.13.7.56145.13.21.23145.13.21.9145.13.21.8所有到网络 145.13.0.0的分组均到达此路
8、由器我的网络地址是 145.13.0.0R1R3R2网络145.13.0.0一个未划分子网的 B 类网络145.13.0.0划分为三个子网后对外仍是一个网络 145.13.3.10145.13.3.11145.13.3.101145.13.7.34145.13.7.35145.13.7.56145.13.21.23145.13.21.9145.13.21.8子网 145.13.21.0子网 145.13.3.0 子网 145.13.7.0所有到达网络 145.13.0.0的分组均到达此路由器网络145.13.0.0R1R3R2l当没有划分子网时,IP 地址是两级结构。l划分子网后 IP 地址就
9、变成了三级结构。l划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。l从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。l使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。 子网掩码IP 地址的各字段和子网掩码 145 . 13 .3 . 10两级 IP 地址子网号为 3 的网络的网络号三级 IP 地址主机号子网掩码net-idhost-id子网的网络地址1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0
10、0 00net-idsubnet-idhost-id145 . 13 .145 . 13 . 33 . 10(IP 地址) AND (子网掩码) =网络地址网络号 net-id主机号 host-id两级 IP 地址网络号三级 IP 地址主机号net-idhost-idsubnet-id子网号子网掩码子网的网络地址1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0net-idsubnet-id0逐位进行 AND 运算1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
11、0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0net-idnet-idhost-id 为全 0net-id网络地址A类地址默认子网掩码255.0.0.0网络地址B类地址默认子网掩码255.255.0.0网络地址C类地址默认子网掩码255.255.255.0host-id 为全 0host-id 为全 0默认子网掩码 子网掩码是一个重要属性l子网掩码是一个网络或一个子网的重要属
12、性。l路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。l路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。l若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。141 . 14 . 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0【例4-2】已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。 (a) 点分十进制表示的 IP 地址(c) 子网掩码是 255.255.192.00 0
13、 0 0 0 0 0 0141 . 14 . 72 . 24141 . 14 .64 . 0. 00 1 0 0 1 0 0 0141 . 14 . 24(b) IP 地址的第 3 字节是二进制(d) IP 地址与子网掩码逐位相与(e) 网络地址(点分十进制表示)计算子网号例题141 . 14 . 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0【例4-3】在上例中,若子网掩码改为255.255.224.0。试求网络地址,讨论所得结果。 (a) 点分十进制表示的 IP 地址(c) 子网掩码是 255.255.224.
14、00 0 0 0 0 0 0 0141 . 14 . 72 . 24141 . 14 .64 . 0. 00 1 0 0 1 0 0 0141 . 14 . 24(b) IP 地址的第 3 字节是二进制(d) IP 地址与子网掩码逐位相与(e) 网络地址(点分十进制表示)不同的子网掩码得出相同的网络地址。但不同的掩码的效果是不同的。 l在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。l但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。l因此分组转发的算法也必须做相应
15、的改动。 使用子网掩码的分组转发过程在划分子网的情况下路由器转发分组的算法 (1) 从收到的分组的首部提取目的 IP 地址 D。(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和 相应的网络地址匹配。若匹配,则将分组直接交付。 否则就是间接交付,执行(3)。(3) 若路由表中有目的地址为 D 的特定主机路由,则将 分组传送给指明的下一跳路由器;否则,执行(4)。(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”, 若其结果与该行的目的网络地址匹配,则将分组传送 给该行指明的下一跳路由器;否则,执行(5)。(5) 若路由表中有一个默认路由,则将分组传送给路由表 中所指明的默认路由器
16、;否则,执行(6)。(6) 报告转发分组出错。128.30.33.10目的网络地址子网掩码下一跳128.30.33.0128.30.33.128128.30.36.0255.255.255.128255.255.255.128255.255.255.0接口 0接口 1R2128.30.33.13H1子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128128.30.33.130R1 的路由表(未给出默认路由器)R11R2子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128H2128.30.33.13801128.30.33.129
17、H3128.30.36.2子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0128.30.36.12【例4-4】已知互联网和路由器 R1 中的路由表。主机 H1 向 H2 发送分组。试讨论 R1 收到 H1 向 H2 发送的分组后查找路由表的过程。 主机 H1 要发送分组给 H2 128.30.33.10目的网络地址子网掩码下一跳128.30.33.0128.30.33.128128.30.36.0255.255.255.128255.255.255.128255.255.255.0接口 0接口 1R2R1 的路由表(未给出默认路由器)128.30.33.13H1子
18、网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128128.30.33.130R11R2子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128H2128.30.33.13801128.30.33.129H3128.30.36.2子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0128.30.36.12要发送的分组的目的 IP 地址:128.30.33.138请注意:H1 并不知道 H2 连接在哪一个网络上。H1 仅仅知道 H2 的 IP 地址是128.30.33.138因此 H1 首先检查主机 128.3
19、0.33.138 是否连接在本网络上如果是,则直接交付;否则,就送交路由器 R1,并逐项查找路由表。128.30.33.10目的网络地址子网掩码下一跳128.30.33.0128.30.33.128128.30.36.0255.255.255.128255.255.255.128255.255.255.0接口 0接口 1R2H1子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128128.30.33.130R11R2子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128H2128.30.33.13128.30.33.13801128
20、.30.33.129H3128.30.36.2子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0128.30.36.12主机 H1 首先将本子网的子网掩码 255.255.255.128与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作) 255.255.255.128 AND 128.30.33.138 的计算255 就是二进制的全 1,因此 255 AND xyz = xyz,这里只需计算最后的 128 AND 138 即可。128 10000000138 10001010逐比特 AND 操作后:10000000 128255.255
21、.255.128128. 30. 33.138128. 30. 33.128逐比特 AND 操作 H1 的网络地址因此 H1 必须把分组传送到路由器 R1然后逐项查找路由表128.30.33.10目的网络地址子网掩码下一跳128.30.33.0128.30.33.128128.30.36.0255.255.255.128255.255.255.128255.255.255.0接口 0接口 1R2R1 的路由表(未给出默认路由器)128.30.33.13H1子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128128.30.33.130R11R2子网2:网络地址 1
22、28.30.33.128 子网掩码 255.255.255.128H2128.30.33.13801128.30.33.129H3128.30.36.2子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0128.30.36.12路由器 R1 收到分组后就用路由表中第 1 个项目的子网掩码和 128.30.33.138 逐比特 AND 操作 128.30.33.10目的网络地址子网掩码下一跳128.30.33.0128.30.33.128128.30.36.0255.255.255.128255.255.255.128255.255.255.0接口 0接口 1R2R1
23、的路由表(未给出默认路由器)128.30.33.13H1子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128128.30.33.130R11R2子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128H2128.30.33.13801128.30.33.129H3128.30.36.2子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0128.30.36.12255.255.255.128 AND 128.30.33.138 = 128.30.33.128不匹配!(因为128.30.33.128 与路由表中
24、的 128.30.33.0 不一致)R1 收到的分组的目的 IP 地址:128.30.33.138不一致路由器 R1 再用路由表中第 2 个项目的子网掩码和 128.30.33.138 逐比特 AND 操作 128.30.33.10目的网络地址子网掩码下一跳128.30.33.0128.30.33.128128.30.36.0255.255.255.128255.255.255.128255.255.255.0接口 0接口 1R2R1 的路由表(未给出默认路由器)128.30.33.13H1子网1: 网络地址 128.30.33.0 子网掩码 255.255.255.128128.30.33.
25、130R11R2子网2:网络地址 128.30.33.128 子网掩码 255.255.255.128H2128.30.33.13801128.30.33.129H3128.30.36.2子网3:网络地址 128.30.36.0 子网掩码 255.255.255.0128.30.36.12255.255.255.128 AND 128.30.33.138 = 128.30.33.128匹配!这表明子网 2 就是收到的分组所要寻找的目的网络R1 收到的分组的目的 IP 地址:128.30.33.138一致!划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而在 1992 年因特网仍然面临三个
26、必须尽早解决的问题,这就是:lB 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!l因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。l整个 IPv4 的地址空间最终将全部耗尽。无分类编址 CIDR网络前缀 l1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩 码 。 使 用 变 长 子 网 掩 码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。l在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (C
27、lassless Inter-Domain Routing)。 IP 编址问题的演进 lCIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。lCIDR使 用 各 种 长 度 的 “网 络 前 缀”(network-prefix)来代替分类地址中的网络号和子网号。lIP 地址从三级编址(使用子网掩码)又回到了两级编址。 CIDR 最主要的特点 l无分类的两级编址的记法是: IP地址 := , (4-3) lCIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址面加上一个斜线“/”,然后
28、写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。lCIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。 无分类的两级编址 CIDR 地址块 l128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。l这个地址块的起始地址是 128.14.32.0。l在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。l128.14.32.0/20 地址块的最小地址:128.14.32.0l128.14.32.0/20 地址块的最大地址:128.14.47.2
29、55l全 0 和全 1 的主机号地址一般不使用。128.14.32.0/20 表示的地址(212 个地址)10000000 00001110 00100000 0000000010000000 00001110 00100000 0000000110000000 00001110 00100000 0000001010000000 00001110 00100000 0000001110000000 00001110 00100000 0000010010000000 00001110 00100000 0000010110000000 00001110 00101111 1111101110
30、000000 00001110 00101111 1111110010000000 00001110 00101111 1111110110000000 00001110 00101111 1111111010000000 00001110 00101111 11111111所有地址的 20 位前缀都是一样的最小地址最大地址l一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。l路由聚合也称为构成超网(supernetting)。lCIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码
31、)。l对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。 路由聚合(route aggregation) CIDR 记法的其他形式 l10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略。l10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为 11111111 11000000 00000000 0000000025519200掩码中有 10 个连续的 1CIDR 记法的其他形式 l10.0.0.0/10 可简写为 10/10,也就是将点分十进制中低位连续的
32、 0 省略。l10.0.0.0/10 相当于指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0,即 11111111 11000000 00000000 00000000l网络前缀的后面加一个星号 * 的表示方法 如 00001010 00*,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。构成超网 l前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。l这些 C 类地址合起来就构成了超网。lCIDR 地址块中的地址数一定是 2 的整数次幂。l网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使
33、网络前缀变长。 CIDR 地址块划分举例 因特网206.0.68.0/22206.0.64.0/18ISP大学 X一系二系三系四系206.0.71.128/26206.0.71.192/26206.0.68.0/25206.0.68.128/25206.0.69.0/25206.0.69.128/25206.0.70.0/26206.0.70.64/26206.0.70.128/26206.0.70.192/26206.0.70.0/24206.0.71.0/25206.0.71.0/26206.0.71.64/26206.0.71.128/25206.0.68.0/23 单位 地址块 二进制
34、表示 地址数 ISP 206.0.64.0/18 11001110.00000000.01* 16384 大学 206.0.68.0/22 11001110.00000000.010001* 1024 一系 206.0.68.0/23 11001110.00000000.0100010* 512 二系 206.0.70.0/24 11001110.00000000.01000110.* 256 三系 206.0.71.0/25 11001110.00000000.01000111.0* 128 四系 206.0.71.128/25 11001110.00000000.01000111.1* 1
35、28CIDR 地址块划分举例 因特网206.0.68.0/22206.0.64.0/18ISP大学 X一系二系三系四系206.0.71.128/26206.0.71.192/26206.0.68.0/25206.0.68.128/25206.0.69.0/25206.0.69.128/25206.0.70.0/26206.0.70.64/26206.0.70.128/26206.0.70.192/26206.0.70.0/24206.0.71.0/25206.0.71.0/26206.0.71.64/26206.0.71.128/25206.0.68.0/23这个 ISP 共有 64 个 C
36、类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 206.0.64.0/18 就能找到该 ISP。 最长前缀匹配l使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。 l应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。l网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。l最长前缀匹配又称为最长匹配或最佳匹配。 最长前缀匹
37、配举例收到的分组的目的地址 D = 206.0.71.128路由表中的项目:206.0.68.0/22 (ISP) 206.0.71.128/25 (四系)查找路由表中的第 1 个项目AND D = 206. 0. 01000100. 0第 1 个项目 206.0.68.0/22 的掩码 M 有 22 个连续的 1。M = 11111111 11111111 11111100 00000000因此只需把 D 的第 3 个字节转换成二进制。M = 11111111 11111111 11111100 00000000206. 0. 01000100. 0与 206.0.68.0/22 匹配最长前
38、缀匹配举例收到的分组的目的地址 D = 206.0.71.128路由表中的项目:206.0.68.0/22 (ISP) 206.0.71.128/25 (四系)再查找路由表中的第 2 个项目AND D = 206. 0. 71. 10000000第 2 个项目 206.0.71.128/25 的掩码 M 有 25 个连续的 1。M = 11111111 11111111 11111111 10000000因此只需把 D 的第 4 个字节转换成二进制。M = 11111111 11111111 11111111 10000000206. 0. 71. 10000000与 206.0.71.128
39、/25 匹配最长前缀匹配D AND (11111111 11111111 11111100 00000000) = 206.0.68.0/22 匹配D AND (11111111 11111111 11111111 10000000) = 206.0.71.128/25 匹配l选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。 使用二叉线索查找路由表l当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。 l为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)
40、。lIP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。l为了提高二叉线索的查找速度,广泛使用了各种压缩技术。 用 5 个前缀构成的二叉线索 32 位的 IP 地址 唯一前缀01000110 00000000 00000000 00000000 010001010110 00000000 00000000 00000000 010101100001 00000000 00000000 00000000 01110110000 00000010 00000000 00000000 1011010111011 00001010 00000000 00000000 10111000011111110小结l转发分组算法l划分子网l子网掩码lCIDR作业l上交作业nP1759,20,21,23,27l课后作业nP176,28-37