Skip to content
Notes
GitHub

第 4 章 网络层

内容
  • 功能
    • 异构网络互联;路由与转发; SDN 基本概念;拥塞控制
  • 路由算法
    • 静态路由与动态路由;距离-向量路由算法;链路状态路由算法;层次路由
  • IPv4
    • IPv4 分组; IPv4 地址与 NAT ;子网划分与子网掩码 、 CIDR 、路由聚合、 ARP 、 DHCP 、 ICMP
  • IPv6
    • 主要特点、 IPv6 地址
  • 路由协议
    • 自治系统;域内路由与域间路由; RIP 路由协议; OSPF 路由协议; BGP 路由协议
  • IP 组播
    • 概念、组播地址
  • 移动 IP
    • 概念、通信过程
  • 网络层设备
    • 路由器的组成和功能;路由表与路由转发

4.1. 网络层的功能

设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。所传的分组可能出错、丢失、重复、失序、超时,这就使得网络中的路由比较简单,而且价格低廉。如果主机中的进程之间通信需要是可靠的,那么可以由更高层的传输层来负责。

采用这种设计思路的好处:网络造价降低,运行方式灵活,能够适应多种应用。

4.1.1. 异构网络互联

要在全球范围内把数以百万计的网络互联起来,并且能够相互通信,是非常复杂的任务,需要解决许多问题,比如不同的寻址方案、不同的网络接入机制、不同的差错处理方法、不同的路由选择机制等等。用户的需求是多样的,没有一种单一的网络能够适应所有用户的需求。

网络层要完成的任务之一就是使这些异构网络实现互联

网络互联是指将两个一张的计算机网络,通过一定的方法,用一些中间设备(又称中继系统)相互连接起来,以构成更大的网络系统。中继系统分为一下 4 个层次:

  1. 物理层:转发器、集线器
  2. 数据链路层:网桥、交换机
  3. 网络称:路由器
  4. 网络层以上:网关

使用物理层、数据链路层的中继系统,只是把一个网络扩大了,而从网络层角度看,它仍然是同一个网络,一般并不称为网络互联。网络互联通常指用路由器进行网络互联和路由选择。路由器是一台专用计算机,用于在互联网中进行路由选择。

TCP/IP 体系在网络互联上采用的做法是在网络层采用标准化协议,但相互连接的网络可以是异构的。

public/network/jw04rtghbsrt.png

许多计算机网络通过一些路由进行互联,由于参加互联网的计算机网络都使用相同的 IP 协议,因此可以把互联后的网络视为右边的一个虚拟 IP 网络。

虚拟互联网络也就是逻辑互联网络,其意思是互联起来的各种物理网络阅读异构性本来是客观存在的,但是用过 IP 协议就可以使这些性能各异的网络在网络层上看起来像是一个统一的网络。这种使用 IP 协议的虚拟互联网可简称为 IP 网络

4.1.2. 路由与转发

路由器主要完成两个功能
  • 路由选择(确定哪一条路径)按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态的改变所选择的路由。
  • 分组转发(当一个分组到达时所采取的动作)路由器根据转发表将用户的 IP 数据报从合适的端口转发出去
  • 前者根据特定的路有限责协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
  • 后者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度等。

4.1.3. SDN 的基本概念

将网络层抽象地划分为数据层面(转发层面)和控制层面,转发是数据层面实现的功能,而路由选择是控制层面实现的功能。

软件定义网络 SDN 是近年流行的一种创新网络架构,采用集中式的控制层面和分布式的数据层面,两个层面相互分离,控制层面利用控制-数据接口对数据层面上的路由器进行集中式控制,方便软件来控制网络。

这种新型的框架中,路由器都变得简单了,它的路由选择软件都不需要了,因此路由器之间不再交换路由信息。在网络的控制层面有个逻辑上的远程控制器,掌握各主机和整个网络的状态,为每个分组计算出最佳路由,通过 Openflow 协议将转发表下发给路由器。

public/network/jw04tyru65.png

4.1.4. 拥塞控制

在通信子网中,因出现过量的分组而引起网络性能下降的现象称为拥塞。路由器所在的链路带宽固定,大量分组同时到达路由器,大量分组被丢弃(路由器端口缓冲区有限),整个网络的吞吐量下降。

判断网络是否进入拥塞状态的方法:观察网路的吞吐量与网络负载的关系,如果随着网络负载量增加,吞吐量明显小于正常的吞吐量,那么网络可能进入“轻度拥塞”状态;……(不想写了)

为避免拥塞现象出现,要采用能防止拥塞的一系列方法对子网进行拥塞控制。主要解决的问题是如何获取网络中发生拥塞的信息,从而利用这些信息进行控制,以避免由于拥塞出现分组丢失,以及严重拥塞而产生网络死锁的现象。

拥塞控制的作用是确保子网能够承载所达到的流量,这是一个全局性的过程,涉及各方面的行为:主机、路由器、路由器内部的转发处理过程等。单一地增加资源并不能解决拥塞。

流量控制和拥塞控制的区别
  • 流量控制往往是指在发送端和接收端之间的点对点通信量的控制,所要做的是抑制发送端发送数据的速率,以便接收端来得及接收。
  • 拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器、导致网络传输能力下降的所有因素。

开环控制

在设计网路时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这时一种静态的预防方法。

开环控制手段包括确定何时可接收新流量、合适可丢弃分组、丢弃哪些分组,确定何种调度策略等。

共性是,在做决定时不考虑当前网络的状态。

闭环控制

实现不考虑有关发生拥塞的各种因素,采用检测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞信息传到合适的地方,一遍调整网络系统的运行,并解决出现的问题。

闭环控制是基于反馈环路的概念,是一种动态的方法。

4.2. 路由算法

4.2.1. 静态路由与动态路由

能否随网络的通信量或拓扑自适应地进行调整变化来划分,可分为两大类。

静态路由算法。由网络管理员手工配置的路由信息,当网络的拓扑结构或链路状态发生变化时,需要网管手工修改路由表中的相关形态路由信息。不能及时适应网络状态变化。

动态路由算法。路由器上的路由表项通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。

常用路由算法分为两类:距离-向量算法和链路状态算法

4.2.2. 距离-向量算法

所有节点都定期将它们的整个路由选择表传给所有与之直接相邻的节点。这种路由选择表包含:

  • 每条路径的目的地
  • 路径的代价

这种算法中,所有节点都必须参与距离向量交换,以保证路由的有效性和一致性。所有节点都监听从其他节点传来的路由选择更新信息,并在下列情况下更新它们的路由选择表:

  1. 被通告一条新的路由,该路由在本节点的路由表中不存在,此时本地系统加入这条新路由。
  2. 发来的路由信息中有一条到达某目的地的路由,该路由与当前使用的路由相比,有较短的距离(较小的代价)。这种情况下,就用经过发送路由信息的节点的新路由替换路由表中到达那个目的地的现有路由。

算法实质:迭代计算一条路由中的站段数或延迟时间,从而得到到达一个目标的最短通路。要求每个节点每次更新都将它的全部路由表发送给所有相邻节点。

更新报文的大小与通信子网的节点个数成正比,大的通信子网将导致很大的更新报文。由于更新报文发给直接相邻的节点,所以所有节点都参与路由选择信息交换。基于这些原因,在通信子网上传送的路由选择信息的数量很容易变得非常大。

常见的距离-向量路由算法是 RIP 算法,采用“跳数”作为距离的度量。

4.2.3. 链路状态路由算法

要求每个参与该算法的节点都具有完整的拓扑信息,它们执行下述两个任务:

  1. 主动测试所有邻接节点的状态。两个共享一条链接的节点是相邻节点,它们连接到同一条链路,或者连接到同一广播型物理网络。
  2. 定期地将链路状态传播给所有其他节点(或称路由节点)。

典型的链路状态算法是 OSPF 算法。

在一个链路状态路由选择中,一个节点检查所有直接链路的状态,并将所得的状态信息发送给网上的所有其他节点,而不仅送给直接相邻的节点。每个节点都用这种方式从网上所欲偶其他的节点接收包含直接链路状态的路由选择信息。

每当链路状态报文到达时,路由节点便使用这些状态信息去更新自己的网络拓扑和状态视野图,一旦链路状态发生变化,节点就对更新的网络图利用 Dijkstra 最短路径算法重新计算路由,从单一的源出发计算到达所有目标节点的最短路径。

三个主要特征
  1. 向本自治系统中所有路由器发送信息,这里使用洪泛法,即路由器通过所有端口向所有相邻路由器发送信息。每个相邻路由器又将此信息发往其所有相邻路由器(不发送给刚刚发给它的路由器)
  2. 发送的信息是与路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓“链路状态”,是指说明本路由器与哪些路由器相邻及该链路的“度量”。对于 OSPF 算法,链路状态的“度量”主要用来表示费用、距离、时延、带宽等。
  3. 只有当链路状态发生变化时,路由器才向所有路由器发送此信息。

由于一个路由器的链路状态只涉及相邻路由器的连通状态,而与整个互联网的规模并无直接关系,因此链路状态算法可以用于大型的或路由信息变化聚敛的互联网环境。

优点
  • 每个路由节点都使用同样的原始状态数据独立地计算路径,而不依赖中间节点的计算
  • 链路状态报文不改变地传播,因此开用该算法易于排查故障
  • 当最后一个节点从所有其他节点接收到报文时,可以在本地立即计算正确的道路,保证一步汇聚
  • 由于链路状态报文仅运载来自单个节点关于直接链路的信息,其大小与网络中的路由节点数目无关,因此链路状态算法比距离-向量算法有更好的规模可伸展性。
比较
  • DV 算法每个节点仅与它的直接邻居交谈,为它的邻居提供从自己到网络中所有其他节点的最低费用估计
  • LS 算法每个节点通过广播方式与所有其他节点交谈,但仅告诉它们与它直接相连的链路的费用

4.2.4. 层次路由

当网络规模扩大时,路由器的路由表成比例增大,这会消耗越来越多的路由器缓冲区空间,而且需要更多 CPU 时间来扫描路由表,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行。

因特网将整个互联网划分为许多较小的自治系统(一个自治系统中包含很多局域网),每个自治系统有权自主的决定本系统内应采用何种路由选择协议。如果两个自治系统需要通信,那么就需要一种在两个自治系统之间的协议来屏蔽这些差异。据此,因特网把路由选择协议划分为两大类。

  1. 一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称域内路由选择,具体的协议有 RIP 和 OSPF
  2. 自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称域间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优路径。具体的协议有 BGP

使用层次路由时, OSPF 将一个自治系统再划分为若干区域,每个路由器都知道在本区域内如何把分组路由到目的地的细节,但不用知道其他区域的内部结构。

4.3. IPv4

4.3.1. IPv4 分组

IPv4 即现在普遍使用的 IP 协议(版本 4 )。 IP 协议定义数据传送的基本单元—— IP 分组及其确切的数据格式。 IP 协议页包括一套规则,指明分组如何处理、错误怎样控制。 IP 协议还包含非可靠投递的思想,以及与此相关的分组路由选择思想。

1. IPv4 分组格式

由首部和数据部分组成。首部前一部分长度固定,共 20 B ,是所有 IP 分组必须有的。在首部固定部分后面是一些可选字段,长度可变,用来提供错误检测及安全等机制。

public/network/jw04ipv4.png

  • 版本: IP 协议的版本
  • 首部长度:占 4 位,可以表示的最大十进制数是 15 。以 32 为单位,最大值为 15 × 4 B = 60 B 。最常用的首部长度为 20 B 。
  • 总长度:占 16 位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 2{16}1=65535\displaystyle{ 2 ^{ \left\lbrace 16 \right\rbrace } - 1 = 65535 } B ,以太网帧的 MTU 为 1500 B ,因此当一个 IP 数据报封装成帧时,数据报的总长度(首部+数据)一定不能超过下面的数据链路层的 MTU 值。
  • 标识:占 16 位,是一个计数器,每产生一个数据报就加一,并赋值给标识字段。并不是“序号”,因为 IP 是无连接服务。当一个数据报的长度超过网络的 MTU 时,必须分片,此时每个数据报片都赋值一次标识号,以便能正确重装成原来的数据报。
  • 标志:占 3 位,最低位 MF , MF=1 表示后面还有分片, MF=0 表示最后一个分片。中间一位是 DF ,只有当 DF = 0 时才分片。
  • 片偏移:占 13 位,指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位,除最后一个分片外,每个分片的长度一定是 8 B 的整数倍。、
  • 生存时间 TTL :占 8 位,数据报在网络中可通过的路由器数的最大值,表示分组在网络中的寿命,以确保分组不会永远在网络中循环。在路由器转发分组前,先把 TTL 减一。若 TTL 被减为 0 ,则该分组必须丢弃。
  • 协议:占 8 位,指出此分组携带的数据使用何种协议,即分组的数据部分应上交给哪个协议进行处理,如 TCP 、 UDP 等。值为 6 表示 TCP ,值为 17 表示 UDP
  • 首部校验和:占 16 位,只校验分组的首部,不校验数据部分。
  • 源地址字段:占 4 B ,标识发送方的 IP 地址。
  • 目的地址字段:占 4 B ,标识接收方的 IP 地址。

2. IP 数据报分片

一个链路层数据报能承载的最大数据量称为最大传送单元 (MTU)。因为 IP 数据报被封装在链路层数据报中,因此链路层的 MTU 严格的限制 IP 数据报的长度,而且在 IP 数据报的源与目的地址路径上的各段链路可能使用不同的链路协议,有不同的 MTU 。

以太网的 MTU 为 1500 B ,而许多广域网的 MTU 不超过 576 B 。当 IP 数据报的总长度大于链路 MTU 时,就需要将 IP 数据报中的数据分装在多个较小的 IP 数据报中,这些较小的数据报称为

片在目的地址的网络层被重新组装,目的主机使用 IP 首部中的标识、标志和片偏移来完成对片的重组。创建一个 IP 数据报时,源主机为该数据报加上一个标识号,当一个路由器需要将一个数据报分片时,形成的每个数据报(片)都具有原始数据报的标识号。当目的主机收到来自同一发送主机的一批数据报时,它可以通过检查数据报的标识号来确定哪些数据报属于同一个原始数据报的片。

public/network/jw04ipslice.png

4.3.2. IPv4 地址与 NAT

1. IPv4 地址

连接到因特网上的每台主机(或路由器)都分配一个 32 比特的全球唯一标识符,即 IP 地址。 IP 地址由互联网名字和数字地址分配机构 ICANN 进行分配。

互联网早期采用的是分类 IP 地址

public/network/jw04ipaddr.png

无论哪类 IP 地址,都由网络号和主机号两部分组成,即 IP 地址 ::= {<网络号>, <主机号>}。

  • 网络号标志主机或路由器所连接到的网络。一个网络号在整个因特网内必须是唯一的。
  • 主机号标识该主机或路由器。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。

一个 IP 地址在整个因特网范围内是唯一的。

一些 IP 地址具有特殊用途,不用做主机 IP

  • 主机号全零,表示网络本身
  • 主机号全一,表示该网路的广播地址(直接广播地址)
  • 127.x.x.x 保留为回环自检地址
  • 32 位全零, 0.0.0.0 表示网络上的本主机
  • 32 为全一, 255.255.255.255 表示整个 TCP/IP 网络的广播地址(受限广播地址)

由于路由器对广播域的隔离, 255.255.255.255 又等小为本网络的广播地址。

网络类别最大可用网络数第一个可用的网络号最后一个可用的网络号每个网络最大主机数
A2{7}1\displaystyle{ 2 ^{ \left\lbrace 7 \right\rbrace } - 1 }11262{24}2\displaystyle{ 2 ^{ \left\lbrace 24 \right\rbrace } - 2 }
B2{14}\displaystyle{ 2 ^{ \left\lbrace 14 \right\rbrace } }128.0191.2552{16}2\displaystyle{ 2 ^{ \left\lbrace 16 \right\rbrace } - 2 }
C2{21}\displaystyle{ 2 ^{ \left\lbrace 21 \right\rbrace } }192.0.0223.255.2552{8}2\displaystyle{ 2 ^{ \left\lbrace 8 \right\rbrace } - 2 }
IP 地址特点
  1. 每个 IP 地址都由网络号和主机号两部分组成,因此 IP 地址是一种分等级的地址结构。分级的好处
  2. IP 地址管理机构在分配 IP 地址时只分配网络号,而主机号则由得到该网络的单位自行分配,方便 IP 地址的管理
  3. 路由器仅根据目的主机所链接的网络号来转发分组(而不考虑主机号),减小了路由表所占的存储空间
  4. IP 地址是标志一台主机或路由器和一条链路的接口。当一台主机同时链接到两个网络,必须同时具有两个 IP 地址,每个 IP 地址的网络号必须与所在网络的网络号一致,且这两个网络号不同。因此 IP 网络上的一个路由器必然至少应具有两个 IP 地址(路由器每个端口必须至少分配一个 IP 地址。
  5. 用转发器或桥接器(网桥等)链接的若干 LAN 仍然是同一个网络(同一个广播域),因此该 LAN 中所有主机的 IP 地址的网络号必须相同,但主机号必须不同。
  6. 在 IP 地址中,所有分配到网络号的网络都是平等的
  7. 同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。路由器总是具有两个或以上的 IP 地址,路由器的每个端口都有一个不同网络号的 IP 地址。

2. 网络地址转换 NAT

指通过将专用网络地址转换为公用地址从而对外隐藏内部管理的 IP 地址。它使得整个专用网只需一个全球 IP 地址就可与因特网连通,由于专用网本地 IP 地址是可重用的,所以 NAT 大大节省了 IP 地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络收到攻击的风险。

为了网络安全,划出了部分 IP 地址为私有 IP 地址。私有 IP 地址只用于 LAN ,不用于 WAN 连接(因此私有 IP 地址不能直接用于 Internet ,必须通过网关利用 NAT 把私有 IP 地址转换为 Internet 中合法的全球 IP 地址后才能用于 Internet ),并且允许私有 IP 被 LAN 重复使用。这有效解决了 IP 地址不足的问题

类别网段数量具体
A110.0.0.0~10.255.255.255
B16172.16.0.0~172.31.255.255
C256192.168.0.0~192.168.255.255

因特网中所有路由器,对目的地址是私有地址的数据报一律不转发。这种采用私有 IP 地址的互联网络称为专用互联网本地互联网。私有 IP 地址可称可重用地址

NAT 路由器至少有一个有效的外部全球 IP 地址。使用本地地址的主机和外界通信时,NAT 路由器使用 NAT 转换表进行本地 IP 地址和全球 IP 地址的转换。NAT 转换表的映射方式可以让多个私有 IP 地址映射到一个全球 IP 地址

WAN 端LAN 端
138.76.29.7, 5001192.168.0.2, 2233
138.76.29.7, 5060192.168.0.3, 1234

NAT 路由器工作原理

public/network/jw04nat.png

  1. 用户主机 10.0.0.1:3345 向 Web 服务器 128.119.40.86:80 发送请求
  2. NAT 路由器收到 IP 分组后,为该 IP 分组生成一个新端口号 5001,将 IP 分组的源地址更改为 138.76.29.7(即 NAT 路由器的全球 IP 地址),将远端口号改为 5001。NAT 路由器在转换表中增加一项。
  3. Web 服务器并不知道刚刚抵达的 IP 分组已被 NAT 路由器进行了改装,更不知道用户的专用地址,它响应的 IP 分组的目的地址是 NAT 路由器的全球 IP 地址,目的端口号是 5001 。
  4. 响应分组到达 NAT 后,通过 NAT 转换表将 IP 分组的目的 IP 地址更改为 10.0.0.1,目的端口号改为 3345

4.3.3. 子网划分与子网掩码、CIDR

1. 子网划分

两级 IP 地址的缺点:IP 地址空间的利用率有时很低;给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏;两级 IP 地址不够灵活。

子网:两级 IP 地址变为三级 IP 地址

基本思路
  1. 子网划分纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络
  2. 从主机号借用若干比特作为子网号,主机号也相应减少了相同的比特。结构变为:{<网络号>, <子网号>, <主机号>}
  3. 凡是从其他网络发送给本单位某台主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号,先找到连接到本单位网络上的路由器,然后该路由器在收到 IP 数据报后,按目的的网络号和子网号找到目的子网,最后把 IP 数据报直接交付给目的主机。

2. 子网掩码

为了告诉主机或路由器对一个 A, B, C 类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的错位。

子网掩码是一个与 IP 地址相对应的、长度为 32 bit 的二进制比特串。1 对应于 IP 地址中的网络号及子网号,0 对应于主机号。只需使用逻辑与运算即可算出相应子网的网络地址。

现在因特网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么就采用默认子网掩码。A, B, C 类地址的默认子网掩码分别为 255.0.0.0, 255.255.0.0, 255.255.255.0。

由于子网掩码是一个网络或一个子网的重要属性,所以路由器在相互之间交换路由信息时,必须把自己所在的网络(或子网)的子网掩码告诉对方。路由表中的每一个条目,除要给出目的网络地址和下一跳地址外,还要给出该目的网络的子网掩码。

在使用子网掩码的情况下
  • 一台主机在设置 IP 地址信息的同时,必须设置子网掩码
  • 同属一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码
  • 路由器的路由表中,包含信息的主要内容有目的网络地址、子网掩码、下一跳地址

3. CIDR 无分类编址

无分类域间路由选择 CIDR 是在变长子网掩码的基础上提出的一种消除传统 A, B, C 类网络划分,并且可以在软件的支持下实现超网构造的一种 IP 地址的划分方法。

例如,如果一个单位需要 2000 个地址,就给它分配一个 2048 地址的快( 8个连续的 C 类网络),而不是一个完全的 B 类地址。这样大幅提高 IP 地址空间的利用率,减小路由表的大小,提高路由转发能力。

CIDR 消除了传统 ABC 类地址及划分子网的概念,因而可以更有效地分配 IPv4 的地址空间。CIDR 使用网络前缀的概念代替子网络的概念,与传统分类 IP 地址最大区别是:网络前缀的位数是不固定的,可以任意选取。IP ::= {<网络前缀>, <主机号>}

CIDR 还是用斜线记法,即 IP 地址/网络前缀所占比特数。网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续 1 的部分。

128.14.32.5/20

掩码为 20 个连续的 1 和后面 12 个 0 ,通过逐位与可以得到网络前缀 = 128.14.32.0

CIDR 不使用子网,但仍然使用“掩码”一词。不使用子网是指 CIDR 并没有在 32 位地址中明确指出若干位作为子网字段,但分配到一个 CIDR 地址块的组织,仍可以在本组织内根据需要划分出一些子网。

一个组织分配到的地址块/20

可以继续划分为 8 个子网,网络前缀变成 23 位。全 0 和全 1 的主机号地址一般不使用。

将网络前缀都相同的连续 IP 地址组成 CIDR 地址块。一个 CIDR 地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息交换,从而提高网络性能。

public/network/jwcidrjuhe.png

对于上图,如果不使用路由聚合,R1 的路由表中需要分别有到网络 1 和到网络 2 的路由表项。但是两个网络的网络前缀在二进制下,前 16 位都相同,第 17 位分别为 0 和 1 ,并且到两个网络的下一跳都是 R2 。若使用路由聚合,在 R1 来看,网络 1 和网络 2 可以构成一个更大的地址块 206.1.0.0/16 ,到网络 1 和网络 2 的两条路可以聚合成一条到 206.1.0.0/16 的路由。

CIDR 地址块中的地址数一定是 2 的整数次幂,实际可指派的地址数通常为 2{N}2\displaystyle{ 2 ^{ \left\lbrace N \right\rbrace } - 2 }N\displaystyle{ N } 表示主机号的位数,主机号全 0 代表网络号,全 1 表示广播地址。

优点

网络前缀长度灵活,由于上层网络的前缀长度较短,因此相应的路由表项目较少。而内部又可采用延长网络前缀来灵活地划分子网。

最长前缀匹配

使用CIDR 时,路由表中的每个项目由网络前缀下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配到的结果中选择具有最长网络前缀的路由,因为网络前缀越长,地址块越小,路由就越具体。

4. 网络层转发分组的过程

分组转发都是基于目的主机所在网络的,这时因为互联网上的网络数远小于主机数,可以极大地压缩转发表的大小。当分组到达路由器后,路由器根据目的 IP 地址的网络前缀来查找转发表,确定下一跳应当到哪个路由器。因此,转发表中,每条路由都必须有下面的两条信息。

目的地址,下一跳地址

这样,IP 数据报最终一定能找到目的主机所在目的网络上的路由器(可能要通过多次间接交付),到达最后一个路由器时,才试图向目的主机进行直接交付。

采用 CIDR 编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么应当选择前缀最长的一个作为匹配的前缀,称为最长前缀匹配。网络前缀越长,路由就越精准。

此外,转发表中还可以正佳两种特殊的路由

1. 主机路由

对特定的目的主机的 IP 地址专门指明一个路由,以方便网络管理员控制和测试网络。若特定主机的 IP 地址为 a.b.c.d ,则转发表中对应项的目的网络是 a.b.c.d/32 。32 表示的子网掩码没有意义,但这个特殊前置可以用在转发表中。

2. 默认路由

用特殊前缀 0.0.0.0/0 表示默认路由,全 0 掩码和任何目的网络按逻辑与运算都是 0,即必然和转发表中的 0.0.0.0/0 匹配。只要目的网络是其他网络(不在转发表中),就一律选择默认路由。

路由器执行的分组转发算法
  1. 收到的 IP 分组的首部提取出目的主机的 IP 地址 D\displaystyle{ D }
  2. 若查找到特定主机路由(目的地址为 D\displaystyle{ D }),就按照这条路由的下一跳转发分组;否则从转发表中的下一条(即按前缀长度顺序)开始检查
  3. 将这一行的子网掩码与目的地址 D\displaystyle{ D } 进行按位与运算。若运算结果与本行前缀匹配,则查找结束,按照“下一跳”指出的进行处理(或者直接交付本网络上的目的主机,或通过指定接口发送到下一跳路由器)。否则,若站发表还有下一行,则对下一行进行检查,重新执行 3。否则,执行 4.
  4. 若站发表中有一个默认路由,则把分组传送给默认路由;否则,报告转发分组出错。
Caution

转发表并未给分组指明到某个网络的完整路径,只是指出,到某个网络应当先到某个路由器,在到达下一跳路由器后,再继续查找其转发表,知道下一步应到哪个路由器。这样一步一步查找下去,直到最后到达目的网络。

4.3.4. ARP DHCP ICMP

1. IP 地址与硬件地址

IP 地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(MAC 地址),它是平面式的。在网络层及网络层之上使用 IP 地址,IP 地址放在 IP 数据报的首部,而 MAC 地址放在 MAC 帧的首部。通过数据封装,把 IP 数据报分组封装为 MAC 帧后,数据链路层看不见数据报分组中的 IP 地址。

由于路由器的隔离,IP 网络中无法通过广播 MAC 地址来王城跨网络的寻址,因此在网络层只使用 IP 地址来完成寻址。寻址时,每个路由器依据其路由表选择到目标网络(即主机号全 0 的网络地址)需要转发到的下一跳(路由器的物理端口号或下一跳网络地址),而 IP 分组通过多次路由转发到达目标网络后,改为在目标 LAN 中通过数据链路层的 MAC 地址以广播方式寻址。这样可以提高路由选择的效率。

  1. 在 IP 层抽象的互联网上只能看到 IP 数据报
  2. 虽然在 IP 数据报首部中有源 IP 地址,但路由器只根据目的 IP 地址进行转发。
  3. 在局域网的链路层,只能看见 MAC 帧。IP 数据报被封装在 MAC 帧中,通过路由器转发 IP 分组时,IP 分组在每个网络中都被路由器解封装和重新封装,其 MAC 帧首部中的源地址和目的地址会不断改变。这也决定了无法使用 MAC 地址跨网络通信。
  4. 尽管互联在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用同一的、抽象的 IP 地址研究主机与主机或路由器之间的通信。

路由器由于互联多个网络,因此它不仅有多个 IP 地址, 还有多个硬件地址

2. 地址解析协议 ARP

无论网络层用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方式来完成 IP 地址到 MAC 地址的映射,这就是 ARP。

每台主机都设有一个 ARP 高速缓存,用来存放本局域网上各主机和路由器的 IP 地址到 MAC 地址的映射表,称 ARP 表。使用 ARP 来动态维护该表。ARP 工作在网络层。

原理

主机 A 域向局域网上的某台主机 B 发送 IP 数据报时,先在其 ARP 高速缓存中查看有无 B 的 IP 地址。

  • 若有,就可以查处对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
  • 若没有,那么就通过使用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧来封装并广播 ARP 请求分组(广播发送),使同一个局域网里所有的主机都收到此 ARP 请求。主机 B 收到请求后,向主机 A 发出 ARP 响应分组(单播发送),分组中包含主机 B 的 IP 和 MAC 地址的映射关系。主机 A 收到响应分组后将此写入 cache,然后按查询到的硬件地址发送 MAC 帧。

ARP 由于看到了 IP 地址,所以工作在网络层;而 NAT 路由器看到了端口,所以它工作在传输层

public/network/jw04arp.png

  1. 发送方是主机 H1\displaystyle{ H _{ 1 } },要把 IP 数据报发送到本地网络上的另一台主机 H2\displaystyle{ H _{ 2 } },这时 H{1}\displaystyle{ H _{ \left\lbrace 1 \right\rbrace } } 在网 1 用 ARP 找到目的知己 H{2}\displaystyle{ H _{ \left\lbrace 2 \right\rbrace } } 的硬件地址
  2. 发送当是 H1\displaystyle{ H _{ 1 } },要把数据报发送到另一个网络上的一台主机 H3\displaystyle{ H _{ 3 } },这时 H1\displaystyle{ H _{ 1 } } 用 ARP 找到与网 1 链接的路由器 R1\displaystyle{ R _{ 1 } } 的硬件地址,剩下的工作由 R1\displaystyle{ R _{ 1 } } 来完成
  3. 发送方是路由器 R1\displaystyle{ R _{ 1 } },要把 IP 数据报转发到与 R1\displaystyle{ R _{ 1 } } 链接的网络 2 上的一台主机 H3\displaystyle{ H _{ 3 } } ,这时 R1\displaystyle{ R _{ 1 } } 在网 2 用 ARP 找到目的主机 H3\displaystyle{ H _{ 3 } } 的硬件地址
  4. 发送方是路由器 R1\displaystyle{ R _{ 1 } },要把 IP 数据报转发到网 3 的一台主机 H4\displaystyle{ H _{ 4 } },这时 R1\displaystyle{ R _{ 1 } } 在网 2 用 ARP 找到与网 2 连接的路由器 R2\displaystyle{ R _{ 2 } } 的硬件地址,剩下的工作由 R2\displaystyle{ R _{ 2 } } 完成

从 IP 地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。

ARP 协议是解决同一局域网上的主机或路由器的 IP 地址找到 MAC 地址的映射 问题

3. 动态主机配置协议 DHCP

常用语给主机动态地分配 IP 地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取 IP 地址而不用手工参与。DHCP 是应用层协议,是基于 UDP 的。

工作原理

使用客户/服务器模式。需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文,这时该主机就成为 DHCP 客户。本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才能回答此报文。DHCP 服务器先在其数据库中查找该计算机的配置信息:

  • 若找到,则返回找到的信息

  • 若找不到,则从服务器的 IP 地址池中取一个地址分配给该计算机。

    DHCP 服务器的回答报文称为提供报文

DHCP 服务器与 DHCP 客户端的交换过程:

  1. DHCP 客户机广播 “DHCP 发现” 消息,试图找到网络中的 DHCP 服务器,以便从 DHCP 服务器获得一个 IP 地址。源地址为 0.0.0.0,目的地址为 255.255.255.255
  2. DHCP 服务器收到 “DHCP 发现” 消息后,广播 “DHCP 提供” 消息,其中包括提供给 DHCP 客户机的 IP 地址。源地址为 DHCP 服务器地址,目的地址为 255.255.255.255
  3. DHCP 客户机收到 “DHCP 提供” 消息,如果接受该 IP 地址,那么就广播 “DHCP 请求” 消息向 DHCP 服务器请求提供 IP 地址。源地址为 0.0.0.0,目的地址为 255.255.255.255
  4. DHCP 服务器广播 “DHCP 确认” 消息,将 IP 地址分配给 DHCP 客户机。源地址为 DHCP 服务器,目的地址为 255.255.255.255

DHCP 允许网络上配置多台 DHCP 服务器,客户机发送请求时,可能收到多个应答,通常选取最先到达的。

DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。这段时间称为租用期,数值由 DHCP 服务器自己决定,客户也可在自己发送报文中提出对租用期的要求。

DHCP 客户端和服务器需要通过广播方式来进行交互,原因是在 DHCP 执行初期,客户端不知道服务器 IP 地址,而客户端自身也未被分配到 IP 地址,导致两者之间通信必须采用广播方式。

采用 UDP 无需建立连接,TCP 需要。对于这一情况,未知对方 IP 的情况下,必然不可能建立连接。

4. 网际控制报文协议 ICMP

为了提高 IP 数据报交付成功的机会,在网络层使用了 ICMP 来让主机或路由器报告差错和异常情况。ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 报文种类:ICMP 差错报文、ICMP 询问报文

ICMP 差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况,

ICMP 差错报告报文共有 5 种类型
  1. 终点不可达:当路由器或主机不能交付数据报时,向源点发送终点不可达报文
  2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就像源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
  3. 时间超过:当路由器收到 TTL 为 0 的数据报时,丢弃并向源点发送时间超过报文。当终点在与县规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的都丢弃,向源点发送时间超过报文
  4. 参数问题:当路由器或目的主机收到的数据报的首部中有的字段值不正确时,就丢弃并发送参数问题报文
  5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
不应发送 ICMP 差错报告报文的情况
  1. 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
  2. 对第一个分片的数据报片的所有后续数据报片都不发送
  3. 对居于偶组播地址的数据都不发送
  4. 对具有特殊地址(如 127.0.0.0 或 0.0.0.0 )的数据不发送

ICMP 询问报文共有 4 种类型:回送请求和回答报文、时间戳请求和回答报文、地址掩码请求和回答报文、路由器询问和通告报文

ICMP 的两个常见应用是分组网间探测 PING 和 Traceroute 。

4.4. IPv6

4.4.1. 主要特点

解决 IP 地址耗尽问题的措施有

  • 采用 CIDR,使 IP 地址的分配更加合理
  • 采用 NAT 方法节省全球 IP 地址
  • 采用具有更大地址空间的新版本 IPv6
特点
  1. 更大的地址空间,IPv6 地址为 128 位
  2. 扩展的地址层次结构
  3. 灵活的首部格式
  4. 改进的选项
  5. 允许协议继续扩充
  6. 支持即插即用(即自动配置)
  7. 支持资源的预分配
  8. IPv6 只有在包的源节点才能分片,是端到端的,传输路径中的路由器不能分片,所以一般意义上说,IPv6 是不允许类似 IPv4 的路由分片
  9. IPv6 首部的长度必须是 8 B 的整数倍,而 IPv4 的首部是 4 B 的整数倍
  10. 增大了安全性,身份验证和保密功能是 IPv6 的关键特征

虽然 IPv6 与 IPv4 不兼容,单总体而言它与所有其他的因特网协议兼容,包括 TCP、UDP、ICMP、IGMP、OSPF、BGP、DNS,只是在少数地方做了必要修改。

IPv6 相当好地满足了预定的目标
  1. IPv6 有比 IPv4 长的多的地址。IPv 的地址用 16 个字节表示,地址空间在长远看来绝对够用
  2. 简化了 IP 分组头,它包含 8 个域(IPv4 有 12 个域),这一改变使得路由器能够更快处理分组,从而改善吞吐率
  3. 更好的支持选项。这一改变对新的分组首部很重要,因为一些从前必要的段现在变成了可选段。此外,表示选项的方式的改变还能加快分组的处理速度

IPv6 地址每 16 位使用冒号分割,每 4 位用一个十六进制数表示。通常可以把 IPv6 地址缩写成更紧凑的形式,当 16 位域开头有一些 0 时,可以采用一种缩写表示法,但在域中必须至少有一个数字。例如 4BF5:0000:0000:0000:BA5F:039A:000A:2176 缩写为 4BF5:0:0:0:BA5F:39A:A:2176

当有相继的 0 值域时,还可以进一步缩写,这些域可以用双冒号缩写,但是一个地址只能出现一次。4BF5::BA5F:39A:A:2176

IPv6 扩展了 IPv4 地址的分级概念,使用以下 3 个等级:第一级指明全球都知道的公共拓扑;第二级指明单个场点;第三级指明单个网络接口。IPv6 地址采用多级体系是为了使路由器能够更快查找路由。

IPv4 向 IPv6 过渡可采用双协议栈和隧道技术两种策略

双协议栈是指在一台设备上同时装有 IPv4 和 IPv6 协议栈。如果是路由器,那么在路由器的不同接口上分别配置 IPv4 地址和 IPv6 地址,并可能分别链接 IPv4 网络和 IPv6 网络。如果是一台计算机,那么它将同时拥有两个地址,并具备同时处理这两个协议地址的功能。

隧道技术是指将整个 IPv6 数据报封装到 IPv4 数据报的数据部分,使得 IPv6 数据报可以在 IPv4 网络的隧道中传输。

4.5. 路由协议

4.5.1. 自治系统 AS

单一技术管理下的一组路由器,这些路由器使用一种 AS 内部的路由选择协议和共同的度量来确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议来确定分组在 AS 之间的路由。

一个自治系统内的所有网络都由一个行政单位管辖,一个自治系统的所有路由器在自治系统内部都必须是连通的。

4.5.2. 域内路由与域间路由

自治系统内部的路由选择称为域内路由选择。自治系统之间的路由选择称为域间路由选择。因特网有两大类路由选择协议。

1. 内部网关协议 IGP

在一个自治系统内部使用的路由选择协议,与互联网中其他自治系统选用什么协议无关。目前这类路由选择协议使用最多,如 RIP 和 OSPF 。

2. 外部网关协议 EGP

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系统可能使用不同的 IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是 EGP 。目前使用最多的是 BGP -4 。

每个自治系统至少有一个路由器需要运行内部路由选择协议和域间路由选择协议。

public/network/jwbgp.png

4.5.3. 路由选择协议 RIP

RIP 基于距离向量算法。

1. RIP 规定

  1. 网络中每个路由器都要维护从它自身到其他每个目的网络的距离记录(因此这时一组距离,称为距离向量)
  2. 距离也称跳数,规定从一个路由器到直接连接网络的距离为 1. 而每经过一个路由器,跳数加一。
  3. RIP 认为好的路由就是它通过的路由器的数目少,即优先选择跳数少的路径
  4. RIP 允许一条路径最多只能包含 15 个路由器(最多允许 15 跳)。距离等于 16 时,表示网络不可达。可见 RIP 只适用于小型互联网。距离向量路由可能会出现环路的情况,规定路径上的最高跳数的目的是为了往事数据报不断循环在环路上,减少网络拥塞的可能性。
  5. RIP 默认在任意两个使用 RIP 的路由器之间每 30 秒广播一次 RIP 路由更新信息,以便自动建立并维护路由表
  6. 在 RIP 中不支持子网掩码的 RIP 广播,所以 RIP 中每个网络的子网掩码必须相同。但在新的 RIP2 中,支持子网掩码和 CIDR

2. 特点

  1. 仅和相邻路由器交换信息
  2. 路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表
  3. 按固定的时间间隔交换路由信息,如每隔 30 秒

RIP 通过距离向量算法来完成路由表的更新。最初,每个路由器只知道与自己直接相连的网络。每 30 秒的 RIP 广播,相邻两个路由器相互交换路由表,于是第一次后,每个路由器就知道了与自己相邻的路由器的路由表。第二次后就知道了距离自己跳数为 2 的路由。

RIP 最终是收敛的。

3. 距离向量算法

每个路由表项目都有三个关键数据:<目的网络 N\displaystyle{ N }, 距离 d\displaystyle{ d }, 下一跳路由器地址 X\displaystyle{ X }>。对于每个相邻路由器发送过来的 RIP 报文,执行下面步骤:

  1. 对地址为 X\displaystyle{ X } 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目:把下一跳字段中的地址都改为 X\displaystyle{ X },并把所有的距离字段加一。
  2. 对修改后的 RIP 报文中的每个项目,执行下面的步骤
    1. 当原来的路由表中没有目的网络 N\displaystyle{ N } 时,把该项目添加到路由表中
    2. 当原来的路由表中有目的网络 N\displaystyle{ N },且下一跳路由器的地址是 X\displaystyle{ X } 时,用收到的项目替换原路由表中的项目
    3. 当原来的路由表中有目的网络 N\displaystyle{ N },且下一跳路由器的地址不是 X\displaystyle{ X } 时,如果收到的项目中的距离 d\displaystyle{ d } 小于路由表中的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做
  3. 如果 180 秒(RIP 默认超时时间为 180 秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由,即把距离设置为 16
  4. 返回
优点是简单、开销小、收敛过程快。缺点如下:
  1. RIP 限制了网络的规模,它能使用的最大距离为 15
  2. 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大
  3. 网络出现故障时,会出现慢收敛现象(需要较长时间才能将此信息传送到所有路由器),俗称“坏消息传的慢”,使更新过程的收敛时间长
RIP 是应用层协议,使用 UDP 传送数据(端口 520)

RIP 选择的路径不一定是时间最短的,但一定是具有最少路由器的路径,因为它是根据最少跳数进行路径选择。

4.5.4. 开放最短路径优先协议 OSPF

1. OSPF 协议的基本特点

OSPF 是使用分布式链路状态路由算法的典型代表,也是内部网关协议的一种。

OSPF 和 RIP 的区别
  1. OSPF 向本自治系统中的所有路由器发送信息,这里使用的是洪泛法。而 RIP 仅向自己相邻的几个路由器发送信息。
  2. 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”说明本路由器和哪些路由器相邻及该链路的 “度量”(或代价)。而在 RIP 中,发送的信息是本路由器所知道的全部信息,即整个路由表
  3. 只有当链路状态变化时,路由器在用洪泛法向所有路由器发送此消息,并且更新过程收敛得快,不会出现 RIP “坏消息传的慢” 的问题。而在 RIP 中,不管网络拓扑是否发生变化,路由器之间定期交换路由表信息。
  4. OSPF 是网络层协议,它不使用 UDP 或 TCP ,而直接用 IP 数据报传送(其 IP 数据报首部的协议字段为 89)。而 RIP 协议是应用层协议,在传输层使用 UDP 。
OSPF 特点
  1. OSPF 对不同的链路可根据 IP 分组的不同服务类型 (TOS) 而设置成不同的代价。因此 OSPF 对于不同类型的业务可计算出不同的路由,十分灵活。
  2. 如果到同一个目的网络有多条相同代价的路径,那么可能将通信量分配给这几条路径。这称为多路径间的负载平衡。
  3. 所有在 OSPF 路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息。
  4. 支持可变长度的子网划分和无分类编址 CIDR 。
  5. 每个链路状态都带上一个 32 位的序号,序号越大,状态就越新。

2. OSPF 的基本工作原理

由于各路由器之间频繁交换链路状态信息,因此所有路由器最终都能建立一个链路状态数据库。这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(称为链路状态数据库的同步)。然后,每个路由器根据这个全网拓扑结构图,使用 Dijkstra 最短路径算法计算从自己到各目的网络的最优路径,以此构造自己的路由表。此后,当链路状态变化时,每个路由器重新计算到各目的网络的最优路径,构成新的路由表。

路由表中不会存放完整路径,只存储下一跳

为使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况。这些区域也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还在连接其他自治域。

3. OSPF 的五种分组类型

五种分组类型

  1. 问候分组,用来发现和维持邻站的可达性
  2. 数据库描述分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  3. 链路状态请求分组,向对方请求发送某些链路状态项目的详细信息
  4. 链路状态更新分组,用洪泛法对全网更新链路状态
  5. 链路状态确认分组,对链路更新分组的确认

4.5.5. 边界网关协议 BGP

BGP 是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议常用语互联网的网关之间。

内部网关协议主要设法使数据报在一个 AS 中尽可能有效地从源站传送到目的站。在一个 AS 内部不需要考虑其他方面的策略。然而 BGP 使用的环境却不同,主要原因如下:

  1. 因特网的规模太大,使得自治系统之间路由选择非常困难
  2. 对于自治系统之间的路由选择,要寻找最佳路由是不现实的
  3. 自治系统之间的路由选择必须考虑有关策略

BGP 只能力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),并且并非寻找一条最佳路由。BGP 采用的是路径向量路由选择协议,它与距离向量协议和链路状态协议有很大区别。BGP 是应用层协议,它是基于 TCP 的

工作原理

每个自治系统的管理员要选择至少一个路由器作为该自治系统的 “BGP 发言人”。一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话,再利用 BGP 会话交换路由信息。当所有 BGP发言人都相互交换网络可达性的信息后,各 BGP 发言人就可以找出到达各个自治系统的较好路由。

每个 BGP 发言人除必须运行 BGP 外,还必须运行该 AS 所用的内部网关协议,如 OSPF 或 RIP。BGP 所交换的网络可达性信息就是要到达某个网络(用网络前缀表示)所要经过的一系列 AS。

BGP 的特点
  1. BGP 交换路由信息的结点数量级是自治系统的数量级,要比这些自治系统中的网络数少很多
  2. 每个自治系统的 BGP 发言人的数目是很多好的,这样使得自治系统之间的路由选择不会过分复杂
  3. BGP 支持 CIDR ,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到该目的网络所要经过的各个自治系统序列
  4. 在 BGP 刚运行时,BGP 的邻站交换整个 BGP 路由表,但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处

public/network/jwbgp342.png

BGP -4 共使用 4 种报文

  1. 打开报文(用来与相邻的另一个 BGP 发言人建立关系)
  2. 更新报文(用来发送某一路由器的信息,以及列出要撤销的多条路由)
  3. 保活报文(用来确认打开报文并周期性地证实邻站关系)
  4. 通知报文(用来发送检测到的差错)

三者比较

协议RIPOSPFBGP
类型内部内部外部
路由算法距离向量链路状态路径向量
传递协议UDPIPTCP
路径选择跳数最少代价最低较好,非最佳
交换节点和本节点相邻的路由器网络中所有路由器和本节点相邻的路由器
交换内容自己的路由表(即全部信息)与本路由器相邻的所有路由器的链路状态首次:整个路由表
其他:有变化的部分

4.6. IP 组播

4.6.1. 组播的概念

为了能够支持像视频点播和视频会议这样的多媒体应用,网络必须实施某种有效的组播机制。使用多个单播来传送是可能的,但是会引起主机上大量的处理开销和网络上太多的交通量。

组播机制是让源计算机一次发送的单个分组可以抵达用一个组地址表示的若干目标主机,并被它们正确接收。

组播一定仅应用于 UDP,它对报文同时送往多个接收者的应用来说非常重要。

因特网中的 IP 组播也使用组播组的概念,每个组都有一个特别分配的地址,要给该组发送的计算机将使用这个地址作为分组的目标地址。在 IPv4 中,这些地址在 D 类地址空间中分配,而 IPv6 也有一部分地址空间保留给组播组。

主机使用一个称为 IGMP 的协议加入组播组。它们使用该协议通知本地网络上的路由器关于要接收发送给某个组播组的分组的愿望。通过扩展路由器的路由选择和转发功能,可以在许多路由器互联的支持硬件组播的网络上面实现因特网组播。

主机组播时仅发送一份数据,只有数据在传送路径出现分岔时才将分组复制后继续转发。因此,对发送者而言,数据只需发送一次就可发送到所有接收者,大大减轻了网络的负载和发送者的负担。

组播需要路由器的支持才能实现,能够运行组播协议的路由器称为组播路由器

public/jz/jzigmp.png

4.6.2. IP 组播地址

使用 D 类地址格式,单位是 224.0.0.0~239.255.255.255. 每个 D 类 IP 地址标志一个组播地址。

组播数据报和一般的 IP 数据报的区别是,前者使用 D 类 IP 地址作为目的地址,并且首部中的协议字段是 2,表明使用 IGMP

Caution
  1. 组播数据报也是“尽最大努力交付”,不提供可靠交付
  2. 组播地址只能用于目的地址,不能用于源地址
  3. 对组播数据报不产生 ICMP 差错报文,因此若在 PING 命令后面键入组播地址,将永远不会收到响应
  4. 并非所有的 D 类地址都可作为组播地址

组播可以分为两种:只在本局域网上进行硬件组播;在因特网的范围内进行组播。在因特网上进行组播的最后阶段,还是要把组播数据报在局域网上用硬件组播交付给组播组的所有成员。

4.6.3. IGMP 与组播路由算法

要使路由器知道组播组的成员信息,需要利用因特网组管理协议 IGMP。连接到局域网上的组播路由器还必须和因特网上的其他组播路由器协同工作,以便把组播数据报用最小代价传送给所有组成员。

IGMP 并不是在因特网范围内对所有组播成员进行管理的协议,IGMP 不知道 IP 组播组包含的成员数,也不知道这些成员分布在哪些网络上。IGMP 让连接到本地局域网上的组播路由器知道本局域网上是否有主机参加或退出了某个组播组。

IGMP 应视为网际协议 IP 的一个组成部分,工作可分为两个阶段。
  1. 当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个 IGMP 报文,声明自己要成为该组的成员。本地的组播路由器收到 IGMP 报文后,将组成员关系转发给因特网上其他组播路由器。
  2. 因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的。若一个组在经过几次探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器。

组播路由选择实际上就是要找出以源主机为根节点的组播转发树,其中每个分组在没跳链路上只传送一次。不同的多组播对应于不同的多播转发树;同一个多播组,对不同的原点也会有不同的多播转发树。

4.7. 移动 IP

4.7.1. 概念

支持移动性的因特网体系结构与协议共称为移动 IP,它是为了满足移动节点(计算机、服务器、网段等)在移动中保持其连接性而设计的。移动 IP 技术是指移动节点以固定的网络 IP 地址实现跨越不同网段的漫游功能,并保证基于网络 IP 的网络权限在漫游过程中不发生任何改变。

目标是把分组自动的投递给移动节点。一个移动节点是把连接点从一个网络或子网改变到另一个网络或子网的主机。使用移动 IP,一个移动节点可以在不改变其 IP 地址的情况下改变其驻留位置。

基于 IPv4 的移动 IP 定义三种功能实体:移动节点、归属代理(本地代理)、外埠代理(外部代理)。归属代理和外埠代理又统称为移动代理。

Tip
  1. 移动节点:具有永久 IP 地址的移动节点
  2. 本地代理:再一个网络环境中,一个移动节点的永久“居所”被称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体称为归属代理,它根据移动用户的转角地址,采用隧道技术转角移动节点的数据包
  3. 外部代理:在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理

移动 IP 技术使漫游的主机可以用多种方式连接到因特网,移动 IP 的核心网络功能仍然是基于固定互联网中一直使用的各种路由协议,移动自组网是将移动性货站到无线领域中的自治系统,具有自己独特的路由协议,并且可以不和因特网相连。

4.7.2. 移动 IP 通信过程

在移动 IP 中,每个移动节点都有一个唯一的本地地址,当移动节点移动时,它的本地地址是不变的,在本地网络链路上每个移动节点还必须有一个本地代理来为它维护当前的位置信息,这就需要引入转交地址。

当移动节点连接到外地网络链路上时,转交地址就用来标识移动节点现在所处的位置,一遍进行路由选择。移动节点的本地地址与当前转交地址的联合称为移动绑定。当移动节点得到一个新的转角地址时,通过绑定向本地代理进行注册,以便让本地代理及时了解移动节点的当前位置。

基本通信流程
  1. 移动节点在本地网时,按传统的 TCP/IP 方式通信(本地网中有固有地址)
  2. 移动节点漫游到一个外地网络时,仍然使用固定的 IP 地址进行通信。为了能够收到通信对端发给它的 IP 分组,移动节点需要向本地代理注册当前的位置地址,这个位置地址就是转交地址。
  3. 本地代理接收到来自转交地址的注册后,会构建一条转交地址的隧道,将截获的发给移动节点的 IP 分组通过隧道送到转交地址处。
  4. 在转交地址处解除隧道封装,恢复原始的 IP 分组,最后送到移动节点,这样移动节点在外网就能够收到这些发送给它的 IP 分组
  5. 移动节点在外网通过外网的路由器或外部代理向通信对端发送 IP 数据包
  6. 移动节点来到另一个外网时,只需向本地代理更新注册的转交地址,就可继续通信。
  7. 移动节点回到本地网络时,移动节点向本地代理注销转交地址,这时移动节点又将使用传统的 TCP/IP 方式进行通信

移动 IP 为移动主机设置了两个 IP 地址,即主地址和辅地址(转交地址)。移动主机在本地网时,使用的是主地址。当移动到另一个网络时,需要获得一个临时的辅地址,但此时主地址仍然不变。从外网移回本地时,撤销辅地址,主地址保持不变。

4.8. 网络层设备

4.8.1. 冲突域和广播域

1. 冲突域

指连接到同一物理介质上的所有节点的集合,这些节点之间存在介质争用的现象。

集线器、中继器所链接的节点都属于一个冲突域,而第二层(网桥、交换机)、第三层(路由器)设备都可以划分冲突域。

2. 广播域

是指接收同样广播信息的节点集合。也就是说,在该集合中的任何一个节点发送一个广播帧,其他能收到这个帧的节点都被认为是该广播域的一部分。

广播域被视为第二层概念,第一层(集线器)第二层(交换机)设备所链接的节点都属于同一个广播域。而路由器作为第三层设备,可以划分广播域,即可以连接不同的广播域。

4.8.2. 路由器的组成和功能

路由器是一种具有多个输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发。在罗格逻辑网络(即多个广播域)互联时必须使用路由器。

当源主机向目的主机发送数据报,路由器先检查源主机与目标主机是否在同一网络

  • 是,直接交付,无需通过路由器
  • 否,路由器按照转发表指出的路由将数据报转发给下一跳路由器,即间接交付

路由器可以链接不同的 LAN,连接不同的 VLAN,链接不同的 WAN,或者把 LAN 和 WAN 互联起来。

从结构上看,路由器由路由选择和分组转发两部分构成。从模型角度来看,路由器是网络层设备,实现了网络模型的下三层,即物理层、数据链路层、网络层。

public/network/jwrouter.png

如果一个存储转发设备实现了某个层次的功能,那么它就可以互联两个在该层次上使用不同协议的网段(网络)

4.8.3. 路由表与路由转发

路由表是根据路由算法得出的,主要用途是路由选择。路由表有 4 个项目:目的网络地址、子网掩码、下一跳 IP 地址、接口。

public/network/jw_rfgerstopo.png

R1 的路由表

目的网络 IP子网掩码下一跳 IP接口
202.114.1.0255.255.255.0DirectE1
202.114.2.0255.255.255.0DirectL0
202.114.3.0255.255.255.0202.114.2.2L0
0.0.0.00.0.0.0202.114.2.2L0