【谢希尔 计算机网络】第4章 网络层

目录

网络层

网络层的几个重要概念

网络层提供的两种服务

网络层的两个层面

网际协议 IP

虚拟互连网络

IP 地址

IP 地址与 MAC 地址

地址解析协议 ARP

IP 数据报的格式

IP 层转发分组的过程

基于终点的转发

最长前缀匹配

使用二叉线索查找转发

网际控制报文协议 ICMP

ICMP 报文的种类

ICMP 的应用举例

IPv6

从 IPv4 向 IPv6 过渡

ICMPv6

互联网的路由选择协议

有关路由选择协议的几个基本概念

内部网关协议 RIP

内部网关协议 OSPF

外部网关协议 BGP

路由器的构成

IP 多播

IP 多播的基本概念

在局域网上进行硬件多播

网际组管理协议 IGMP 和多播路由选择协议

虚拟专用网 VPN 和网络地址转换 NAT

虚拟专用网 VPN

网络地址转换 NAT


网络层

网络层的几个重要概念

网络层提供的两种服务

网络层提供的两种服务

争论:

  • 网络层应该向运输层提供怎样的服务?面向连接还是无连接?
  • 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?

2 种观点:

  • 面向连接的可靠交付。
  • 无连接的、尽最大努力交付的数据报服务,不提供服务质量的承诺。

一种观点:让网络负责可靠交付

计算机网络模仿电信网络,使用面向连接的通信方式。

通信之前先建立虚电路 VC (Virtual Circuit) (即连接),以保证双方通信所需的一切网络资源。

如果再使用可靠传输的网络协议,可使所发送的分组无差错按序到达终点,不丢失、不重复。

虚电路服务

虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接

另一种观点:网络提供数据报服务

互联网采用的设计思路:

  • 网络层要设计得尽量简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
    • 网络在发送分组时不需要先建立连接。
    • 每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
    • 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),也不保证分组传送的时限。
  • 由主机中的运输层负责可靠的通信。

数据报服务

虚电路服务与数据报服务的对比

对比的方面虚电路服务数据报服务
思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证
连接的建立必须有不需要
终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址
分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发
当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序
端到端的差错处理和流量控制可以由网络负责,也可以由用户主机负责由用户主机负责

网络层的两个层面

网络层的两个层面

  • 不同网络中的两个主机之间的通信,要经过若干个路由器转发分组来完成。
  • 在路由器之间传送的信息有以下 2 大类:
    • 1. 数据。
    • 2. 路由信息(为数据传送服务)。

数据层面和控制层面

  • 数据层面
    • 路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去。
    • 独立工作。
    • 采用硬件进行转发,快。
  • 控制层面
    • 根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表
    • 许多路由器协同动作。
    • 采用软件计算,慢。

软件定义网络 SDN (Software Defined Network)

网际协议 IP

网际协议 IP

与网际协议 IPv4 配套的 3 个协议:

  • 1. 地址解析协议 ARP (Address Resolution Protocol)
  • 2. 网际控制报文协议 ICMP (Internet Control Message Protocol)
  • 3. 网际组管理协议 IGMP (Internet Group Management Protocol)

虚拟互连网络

虚拟互连网络

实现网络互连、互通时需要解决许多问题,如以下“不同”:

实现异构网络的互连互通方法,哪种好?

使用中间设备进行互连

使用转发器或网桥不称为网络互连

网络互连使用路由器

互连网络与虚拟互连网络

IP 网的意义

  • 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节;
  • 如果这种覆盖全球的IP网的上层使用TCP协议,那么就是现在的互联网。

分组传输路径

IP 地址

  • 在 TCP/IP 体系中,IP 地址是一个最基本的概念。
  • 没有IP地址,就无法和网上的其他设备进行通信。
  • 本部分重点:
    • 1. IP 地址及其表示方法
    • 2. 分类的 IP 地址
    • 3. 无分类编址 CIDR
    • 4. IP 地址的特点

1. IP 地址及其表示方法

互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的 IP 地址。 由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers) 进行分配。 

IP 地址采用 2 级结构

2. 分类的 IP 地址

各类 IP 地址的网络号字段和主机号字段

  • A 类地址的网络号字段 net-id 为 1 字节
  • B 类地址的网络号字段 net-id 为 2 字节
  • C 类地址的网络号字段 net-id 为 3 字节

  • A 类地址的主机号字段 host-id 为 3 字节
  • B 类地址的主机号字段 host-id 为 2 字节
  • C 类地址的主机号字段 host-id 为 1 字节

  • D 类地址是多播地址
  • E 类地址保留为今后使用

各类 IP 地址的指派范围

注意:

  • A 类网络地址中, 网络号 0 和 127 是保留地址,不指派。0 表示“本网络”,127 保留作为本地环回测试地址。
  • B 类网络地址中,网络号 128.0  是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
  • C 类网络地址中,网络号 192.0.0 是被 IANA 保留的,不指派。采用无分类编址(CIDR)时可以指派。
  • 指派主机号时,要扣除全 0 和全 1 。全 0 和全 1 有特殊含义和用途。

一般不使用的特殊的 IP 地址

网络号主机号源地址使用目的地址使用代表的意思
00可以不可在本网络上的本主机(见 6.6 节 DHCP 协议)
0X可以不可        在本网络上主机号为 X 的主机
全 1全 1不可可以只在本网络上进行广播(各路由器均不转发)
Y全 1不可可以对网络号为 Y 的网络上的所有主机进行广播
127非全 0 或全 1 的任何数可以可以用于本地软件环回测试

分类的 IP 地址的优点和缺点

优点:

  • 管理简单;
  • 使用方便;
  • 转发分组迅速;
  • 划分子网,灵活地使用。

缺点:

  • 设计上不合理:
  • 大地址块,浪费地址资源;
  • 即使采用划分子网的方法,也无法解决 IP 地址枯竭的问题。

3. 无分类编址 CIDR

  • CIDR (Classless Inter-Domain Routing) :无分类域间路由选择。
  • 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决 IP 地址枯竭的问题。
  • 要点:
    • (1) 网络前缀
    • (2) 地址块
    • (3) 地址掩码

(1) 网络前缀

(2) 地址块

  • CIDR 把网络前缀都相同的所有连续的 IP 地址组成一个 CIDR 地址块。
  • 一个 CIDR 地址块包含的 IP 地址数目,取决于网络前缀的位数。

注意:

(3) 地址掩码 (address mask)

  • 又称为子网掩码 (subnet mask)。
  • 位数:32 位。
  • 目的:让机器从 IP 地址迅速算出网络地址。
  • 由一连串 1 和接着的一连串 0 组成,而 1 的个数就是网络前缀的长度。

默认地址掩码

网络地址 = (二进制的 IP 地址) AND (地址掩码)

常用的 CIDR 地址块

构造超网

  • 每一个 CIDR 地址块中的地址数一定是 2 的整数次幂。
  • 除最后几行外,CIDR 地址块都包含了多个 C 类地址(是一个 C 类地址的 2n 倍,n 是整数)。
  • 因此在文献中有时称 CIDR 编址为“构造超网”。

三个特殊的 CIDR 地址块

网络前缀长度点分十进制说明
/32255.255.255.255就是一个 IP 地址。这个特殊地址用于主机路由
/31255.255.255.254只有两个 IP 地址,其主机号分别为 0 和 1。 这个地址块用于点对点链路
/00.0.0.0同时 IP 地址也是全 0,即 0.0.0.0/0。用于默认路由。

路由聚合 (route aggregation)

CIDR 地址块划分举例

可见:网络前缀越短,地址块所包含的地址数越多。

 这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的转发表中,需要有 64 行。采用地址聚合后,转发表中只需要用 1 行来指出到 206.0.64.0/18 地址块的下一跳。 在 ISP 内的路由器的转发表中,也仅需用 206.0.68.0/22 这 1 个项目,就能把外部发送到这个大学各系的所有分组,都转发到大学的路由器。

4. IP 地址的特点

  • (1) 每个 IP 地址都由网络前缀和主机号两部分组成。
    • IP 地址是一种分等级的地址结构。
      • 方便了 IP 地址的分配和管理。
      • 实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。
  • (2) IP 地址是标志一台主机(或路由器)和一条链路的接口。
    • 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为多归属主机 (multihomed host)。
    • 一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的 IP 地址。
  • (3) 转发器或交换机连接起来的若干个局域网仍为一个网络
    • 按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。
    • 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。
    • 具有不同网络号的局域网必须使用路由器进行互连。
  • (4) 在 IP 地址中,所有分配到网络前缀的网络都是平等的。
    • 互联网同等对待每一个 IP 地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网

注意:

  • 同一个局域网上的 主机或路由器的 IP 地址中的网络号 必须一样。
  • 路由器的每一个接口都有一个不同网络号的 IP 地址。
  • 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。 如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。这种网络仅需两个 IP 地址,可以使用 /31 地址块。主机号可以是 0 或 1。

IP 地址与 MAC 地址

IP 地址与 MAC 地址 概念

  • IP 地址
    • 虚拟地址、软件地址、逻辑地址。
    • 网络层和以上各层使用。
    • 放在 IP 数据报的首部。
  • MAC 地址
    • 固化在网卡上的 ROM 中。
    • 硬件地址、物理地址。
    • 数据链路层使用。
    • 放在 MAC 帧的首部。

IP 地址与 MAC 地址的区别

不同层次、不同区间使用的源地址和目的地址

  • 尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。
  • 只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信。

地址解析协议 ARP

  • 实现 IP 通信时使用了两个地址:
    • 1. IP 地址(网络层地址)
    • 2. MAC 地址(数据链路层地址)

地址解析协议 ARP 的作用

  • 问题:已经知道了一个机器(主机或路由器)的 IP 地址,如何找出其相应的 MAC 地址?

要点 1:ARP 高速缓存 (ARP cache)

  • ARP 高速缓存 (ARP cache):
    • 存放 IP 地址到 MAC 地址的映射表。
    • 映射表动态更新(新增或超时删除)。

超过生存时间的项目都从高速缓存中删除,以适应网络适配器变化。

要点 2:ARP 工作

  • 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时:

要点 3:ARP 查找 IP 地址对应的 MAC地址

  • 本局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)。
  • ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
  • 单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
  • ARP 分组封装在以太网帧中传输。

ARP 高速缓存的作用

  • 存放最近获得的 IP 地址到 MAC 地址的绑定。
  • 减少 ARP 广播的通信量。
  • 为进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组。
  • 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的 IP 地址及其对应的 MAC 地址映射写入主机 B 自己的 ARP 高速缓存中。不必在发送 ARP 请求。

2 台主机不在同一个局域网上怎么办?

  • ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和 MAC 地址的映射问题。

使用 ARP 的四种典型情况

  1. 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。 
  2. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  3. 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  4. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。 

为什么要使用两种地址:IP 地址和 MAC 地址?

  • 不同网络使用不同的 MAC 地址。MAC 地址之间的转换非常复杂。
  • 对以太网 MAC 地址进行寻址也是极其困难的。
  • IP 编址把这个复杂问题解决了。
    • 连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。
  • 因此,在虚拟的 IP 网络上用 IP 地址进行通信非常方便。

IP 数据报的格式

  • IP 数据报由首部和数据两部分组成
  • 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
  • 可选字段,其长度是可变的
  • 版本——占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。
  • 首部长度——占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。
  • 区分服务——占 8 位,用来获得更好的服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段
  • 总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。
  • 标识 (identification) ——占 16 位, 它是一个计数器,用来产生 IP 数据报的标识。
  • 标志(flag) ——占 3 位,目前只有前两位有意义。
    • 标志字段的最低位是 MF (More Fragment)。 MF=1 表示后面还有分片,MF=0 表示最后一个分片。
    • 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF=0 时才允许分片。
  • 片偏移——占 13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。


1.  IP 数据报首部的固定部分中的各字段

  • 生存时间——占 8 位,记为 TTL (Time To Live), 指示数据报在网络中可通过的路由器数的最大值。
  • 协议——占 8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分上交给那个处理过程
  • 首部检验和——占 16 位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。 
  • 源地址和目的地址都各占 32 位。

2.  IP 数据报首部的可变部分

  • IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
  • 长度可变:从 1 个字节到 40 个字节不等,取决于所选择的项目。
  • 增加了 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。
  • 实际上这些选项很少被使用.

IP 层转发分组的过程

基于终点的转发

  • 分组在互联网中是逐跳转发的。
  • 基于终点的转发:基于分组首部中的目的地址传送和转发。

为了压缩转发表的大小, 转发表中最主要的路由是(目的网络地址,下一跳地址) , 而不是(目的地址,下一跳地址)。 查找转发表的过程就是逐行寻找前缀匹配。

如下图:主机 H1 发送出的、目的地址是 128.1.2.132 的分组是如何转发的?

  • H1 首先检查 128.1.2.132 是否连接在本网络上。 如果是,则直接交付;否则,就送交路由器 R1。

  • 路由器 R1 收到分组后查找转发表。先检查第 1 行。 

  • 路由器 R1 收到分组后查找转发表。接着检查第 2 行。

最长前缀匹配

  • 使用 CIDR 时,在查找转发表时可能会得到不止一个匹配结果。 
  • 最长前缀匹配 (longest-prefix matching) 原则:选择前缀最长的一个作为匹配的前缀。
  • 网络前缀越长,其地址块就越小,因而路由就越具体。
  • 把前缀最长的排在转发表的第 1 行。

转发表中的 2 种特殊的路由

  • 主机路由 (host route)
    • 又叫做特定主机路由。
    • 是对特定目的主机的 IP 地址专门指明的一个路由。
    • 网络前缀就是 a.b.c.d/32
    • 放在转发表的最前面。
  • 默认路由 (default route)
    • 不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理
    • 用特殊前缀 0.0.0.0/0 表示。

默认路由举例

路由器分组转发算法

使用二叉线索查找转发

使用二叉线索查找转发表

  • 二叉线索 (binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶节点。
  • 从二叉线索的根节点自顶向下的深度最多有 32 层,每一层对应于 IP 地址中的一位。
  • 为简化二叉线索的结构,可以用唯一前缀 (unique prefix) 来构造二叉线索。
  • 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

用 5 个唯一前缀构成的二叉线索

  • 规则:先检查 IP 地址左边的第一位,如为 0,则第一层的节点就在根节点的左下方;如为 1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。
  • 为检查网络前缀是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。

在二叉线索中查找 IP 地址

网际控制报文协议 ICMP

ICMP 报文的种类

网际控制报文协议 ICMP

  • ICMP (Internet Control Message Protocol) 允许主机或路由器报告差错情况和提供有关异常情况的报告。
  • ICMP 是互联网的标准协议。
  • 但 ICMP 不是高层协议,而是 IP 层的协议。

ICMP 报文的格式

 ICMP 报文的种类

  • 2 种:差错报告报文,询问报文。

ICMP 差错报告报文的数据字段的内容

不应发送 ICMP 差错报告报文的几种情况

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
  • 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

ICMP 询问报文

  • (1) 回送请求和回答
    • 由主机或路由器向一个特定的目的主机发出的询问。
    • 收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。
    • 这种询问报文用来测试目的站是否可达,以及了解其有关状态。
  • (2) 时间戳请求和回答:
    • 请某台主机或路由器回答当前的日期和时间。
    • 时间戳回答报文中有一个 32 位的字段,其中写入的整数代表从1900 年 1 月 1 日起到当前时刻一共有多少秒。
    • 时间戳请求与回答可用于时钟同步和时间测量。

ICMP 的应用举例

 ICMP 的应用举例

PING (Packet InterNet Groper)

  • 用来测试两个主机之间的连通性。
  • 使用了 ICMP 回送请求与回送回答报文。
  • 是应用层直接使用网络层 ICMP 的例子,没有通过运输层的 TCP 或 UDP。

Traceroute

  • 这是UNIX操作系统中名字。在 Windows 操作系统中这个命令是 tracert。
  • 用来跟踪一个分组从源点到终点的路径。
  • 它利用 IP 数据报中的 TTL 字段、ICMP 时间超过差错报告报文和ICMP 终点不可达差错报告报文实现对从源点到终点的路径的跟踪。

IPv6

 IPv6

  • IP 是互联网的核心协议。
  • IPv4 地址耗尽问题:
    • 到 2011 年 2 月,IANA IPv4 的 32 位地址已经耗尽。
    • 各地区互联网地址分配机构也相继宣布地址耗尽。
    • 我国在 2014 – 2015 年也逐步停止了向新用户和应用分配 IPv4 地址。
  • 根本解决措施:采用具有更大地址空间的新版本的 IP,即 IPv6。

IPv6 的基本首部

  • IPv6 仍支持无连接的传送。
  • 将协议数据单元 PDU 称为分组 (packet) 。
  • 主要变化(1/2):
    • 1. 更大的地址空间。 将地址从 IPv4 的 32 位 增大到了 128 位。
    • 2. 扩展的地址层次结构。可以划分为更多的层次。
    • 3. 灵活的首部格式。定义了许多可选的扩展首部。
    • 4. 改进的选项。允许数据报包含有选项的控制信息,其选项放在有效载荷中。
    • 5. 允许协议继续扩充。更好地适应新的应用。
    • 6. 支持即插即用(即自动配置)。不需要使用 DHCP。
    • 7. 支持资源的预分配。支持实时视像等要求保证一定的带宽和时延的应用。
    • 8. IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。

IPv6 数据报的一般形式

  • 由两大部分组成:
    • 基本首部 (base header)
    • 有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。

IPv6 数据报的基本首部

  • 首部长度:固定的 40 字节,称为基本首部。
  • 首部字段数:只有 8 个。

  • 版本(version)—— 4 位。它指明了协议的版本,对 IPv6 该字段总是 6。
  • 通信量类(traffic class)—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。
  • 流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
  • 有效载荷长度(payload length)—— 16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。
  • 下一个首部(next header)—— 8 位。相当于 IPv4 的协议字段或可选字段。
  • 跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此数据报丢弃。
  • 源地址—— 128 位。是数据报的发送站的 IP 地址。
  • 目的地址—— 128 位。是数据报的接收站的 IP 地址。

IPv6 的六种扩展首部

  • 逐跳选项
  • 路由选择
  • 分片
  • 鉴别
  • 封装安全有效载荷
  • 目的站选项

IPv6 的地址

  • 三种基本类型:
    • 1. 单播 (unicast):传统的点对点通信。
    • 2. 多播 (multicast):一点对多点的通信。
    • 3. 任播 (anycast):IPv6 增加的一种类型。任播的终点是一组计算机,但数据报在交付时只交付其中的一个。通常是按照路由算法得出的距离最近的一个。

节点与接口

  • IPv6 将实现 IPv6 的主机和路由器均称为节点。
  • 一个节点可能有多个与链路相连的接口。
  • IPv6 地址是分配给节点上接口的。
    • 1. 一个具有多个接口的节点可以有多个单播地址。
    • 2. 其中的任何一个地址都可以当作到达该节点的目的地址。

冒号十六进制记法

  • 在 IPv6 中,每个地址占 128 位,地址空间大于 3.4 × 1038 。
  • 使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex):16 位的值用十六进制值表示,各值之间用冒号分隔。

零压缩

  • 零压缩 (zero compression):一串连续的零可以用一对冒号取代。

IPv6 地址分类

地址类型二进制前缀IPv6记法
未指明地址00…0(128位),仅此一个::/128
环回地址00…1(128位),仅此一个::1/128
多播地址11111111(8位),功能和 IPv4 的一样FF00::/8
本地链路单播地址1111111010(10位), 未连接到互联网,不能和互联网上的其他主机通信FE80::/10
全球单播地址除上述四种外,所有其他的二进制前缀

IPv6 单播地址的划分方法

从 IPv4 向 IPv6 过渡

  • 方法:逐步演进,向后兼容。
  • 向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
  • 两种过渡策略:
    • 使用双协议栈
    • 使用隧道技术

双协议栈

隧道技术

ICMPv6

ICMPv6 报文的分类

互联网的路由选择协议

有关路由选择协议的几个基本概念

1. 理想的路由算法

  • 关于“最佳路由”
    • 不存在一种绝对的最佳路由算法。
    • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
  • 路由选择非常复杂
    • 需要所有节点共同协调工作的。
    • 环境不断变化,而这种变化有时无法事先知道。
    • 当网络发生拥塞时,很难获得所需的路由选择信息。

路由算法分类(自适应)

  • 静态路由选择策略
    • 非自适应路由选择;
    • 不能及时适应网络状态的变化;
    • 简单,开销较小。
  • 动态路由选择策略
    • 自适应路由选择;
    • 能较好地适应网络状态的变化;
    • 实现较为复杂,开销较大。 

2. 分层次的路由选择协议

  • 互联网:
    • 采用自适应的(即动态的)、分布式路由选择协议。
    • 把整个互联网划分为许多较小的自治系统 AS,采用分层次的路由选择协议。
  • 分为 2 个层次:
    • 自治系统之间的路由选择 或 域间路由选择 (interdomain routing);
    • 自治系统内部的路由选择 或 域内路由选择 (intradomain routing);

自治系统 AS (Autonomous System)

  • 自治系统 AS : 是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

2 大类路由选择协议

  • 内部网关协议 IGP 
    • 在一个自治系统内部使用的路由选择协议
    • 常用:RIP,OSPF
  • 外部网关协议 EGP
    • 在不同自治系统之间进行路由选择时使用的协议
    • 使用最多:BGP-4

自治系统和内部网关协议、外部网关协议

内部网关协议 RIP

内部网关协议 RIP

1. 协议 RIP 的工作原理

  • 路由信息协议 RIP (Routing Information Protocol) 是一种分布式的、基于距离向量的路由选择协议。
  • 互联网的标准协议。
  • 最大优点:简单。
  • 要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录。

RIP“距离”的定义

  • 路由器到直接连接的网络的距离 = 1。
  • 路由器到非直接连接的网络的距离 = 所经过的路由器数 + 1。
  • RIP 协议中的“距离”也称为“跳数”(hop count),每经过一个路由器,跳数就加 1。

  • 好路由 = “距离短”的路由。最佳路由 = “距离最短”的路由。
  • 一条路径最多只能包含 15 个路由器。
  • “距离”的最大值为 16 时即相当于不可达。
  • RIP 不能在两个网络之间同时使用多条路由,只选择距离最短”的路由。

RIP 协议的三个特点

  • 1. 仅和相邻路由器交换信息。
  • 2. 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • 3. 按固定时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

路由表的建立

  • 路由器在刚刚开始工作时,路由表是空的。
  • 然后,得到直接连接的网络的距离(此距离定义为 1)。
  • 之后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
  • 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
  • RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。

路由表主要信息和更新规则

  • 路由表主要信息:
  • 路由表更新规则:
    • 使用距离向量算法找出到达每个目的网络的最短距离。

2. 距离向量算法

对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:

  • (1) 修改 RIP 报文中的所有项目(即路由):把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
  • (2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
  • (3) 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
  • (4) 返回。
  • 算法基础:Bellman-Ford 算法(或 Ford-Fulkerson 算法)。
  • 算法要点:
    • 设 X 是结点 A 到 B 的最短路径上的一个结点。
    • 若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。

RIP2 报文

  • 组成:首部和路由 2 个部分。
  • 路由部分:由若干个路由信息组成。每个路由信息共 20 个字节。
    • 地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。
    • 路由标记填入自治系统的号码。
    • 后面为具体路由,指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
  • 一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4+20 x25=504 字节。如超过,必须再用一个 RIP 报文来传送。
  • RIP2 具有简单的鉴别功能。

3. 坏消息传播得慢

  • RIP 协议特点:好消息传播得快,坏消息传播得慢。
  • 问题:坏消息传播得慢(慢收敛)。
    • 当网络出现故障时,要经过比较长的时间才能将此信息(坏消息)传送到所有的路由器。

  • 这就是好消息传播得快,而坏消息传播得慢。这是 RIP 的一个主要缺点

RIP 协议的优缺点

  • 优点:
    • 实现简单,开销较小。
  • 缺点:
    • 网络规模有限。最大距离为 15(16 表示不可达)。
    • 交换的路由信息为完整路由表,开销较大。
    • 坏消息传播得慢,收敛时间过长。

内部网关协议 OSPF

内部网关协议 OSPF

  • 开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的。
  • 原理很简单,但实现很复杂。
  • 使用了 Dijkstra 提出的最短路径算法 SPF。
  • 采用分布式的链路状态协议 (link state protocol)。
  • 现在使用 OSPFv2。

三个主要特点

  • 采用洪泛法 (flooding),向本自治系统中所有路由器发送信息。
  • 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
    • 链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric)。 
  • 当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息。

链路状态数据库 (link-state database) 

  • 每个路由器最终都能建立。
  • 全网的拓扑结构图。
  • 在全网范围内是一致的(这称为链路状态数据库的同步)。
  • 每个路由器使用链路状态数据库中的数据构造自己的路由表(例如,使用Dijkstra的最短路径路由算法)。

链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。 重要优点:OSPF 更新过程收敛速度快。

OSPF 将自治系统划分为两种不同的区域 (area)

OSPF 中的路由器:区域边界路由器 ABR (area border router)

OSPF 中的路由器:主干路由器 BR (backbone router)

OSPF 中的路由器:自治系统边界路由器 ASBR (AS border router)

划分区域优点和缺点

  • 优点:
    • 减少了整个网络上的通信量。
    • 减少了需要维护的状态数量。
  • 缺点:
    • 交换信息的种类增多了。
    • 使 OSPF 协议更加复杂了。

分层次划分区域的好处: 使每一个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于规模很大的自治系统中。

其他特点 

  • 对于不同类型的业务可计算出不同的路由。
  • 可实现多路径间的负载均衡(load balancing)。
  • 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。
  • 支持可变长度的子网划分和无分类编址 CIDR。
  • 32 位的序号,序号越大状态就越新。全部序号空间在 600 年内不会产生重复号。 

2. OSPF 的五种分组类型

  1. 问候 (Hello) 分组。
  2. 数据库描述 (Database Description) 分组。
  3. 链路状态请求 (Link State Request) 分组。
  4. 链路状态更新 (Link State Update) 分组。
  5. 链路状态确认 (Link State Acknowledgment)分组。

OSPF 分组用 IP 数据报传送

OSPF 工作过程

  • 1,确定邻站可达。
    • 相邻路由器每隔 10 秒钟要交换一次问候分组。
    • 若有 40 秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的。
  • 2,同步链路状态数据库。
    • 同步:指不同路由器的链路状态数据库的内容是一样的。
    • 两个同步的路由器叫做完全邻接的 (fully adjacent) 路由器。
    • 不是完全邻接的路由器:它们虽然在物理上是相邻的,但其链路状态数据库并没有达到一致。
  • 3,更新链路状态。
    • 只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态。
    • 为确保链路状态数据库与全网的状态保持一致,OSPF 还规定:每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
  • OSPF 链路状态只涉及相邻路由器,与整个互联网的规模并无直接关系,因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF 没有“坏消息传播得慢”的问题,收敛数度快

指定的路由器 DR

  • 多点接入的局域网采用了指定的路由器 DR (designated router) 的方法,使广播的信息量大大减少。
  • 指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。 

外部网关协议 BGP

  • BGP 是不同自治系统的路由器之间交换路由信息的协议。
  • BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。
  • 可以将 BGP-4 简写为 BGP。

1. 协议 BGP 的主要特点

  • 用于自治系统 AS 之间的路由选择。
  • 只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由。
    • 互联网的规模太大,使得自治系统AS之间路由选择非常困难。
    • 自治系统AS之间的路由选择必须考虑有关策略。
  • 采用了路径向量 (path vector) 路由选择协议。

BGP 发言者 (BGP speaker)

eBGP 连接和 iBGP 连接

  • 在 AS 之间, BGP 发言者在半永久性 TCP 连接(端口号为179)上建立 BGP 会话(session)。这种连接又称为 eBGP 连接。
  • 在 AS 内部,任何相互通信的两个路由器之间必须有一个逻辑连接(也使用 TCP 连接)。AS 内部所有的路由器之间的通信是全连通的。这种连接常称为 iBGP 连接。
  • eBGP (external BGP) 连接:运行 eBGP 协议,在不同 AS 之间交换路由信息。
  • iBGP (internal BGP) 连接:运行 iBGP 协议, 在 AS 内部的路由器之间交换 BGP 路由信息。

IGP、iBGP 和 eBGP 的关系

  • 在 AS 内部运行:
    • 内部网关协议 IGP(可以是协议 OSPF 或 RIP)。
    • 协议 iBGP。
  • 在 AS 之间运行:
    • 协议 eBGP。

eBGP 和 iBGP

  • 同一个协议 BGP(使用的报文类型、使用的属性、使用的状态机等都完全一样)。
  • 但它们在通报前缀时采用的规则不同:
    • 在 eBGP 连接的对等端得知的前缀信息,可以通报给一个 iBGP 连接的对等端。反过来也是可以的。
    • 但从 iBGP 连接的 则不能够通报给另一个 iBGP 连接的对等端。

  • R3 从 eBGP 连接的对等端 R4 得到的前缀信息可以通报给 iBGP 连接的对等端 R1 或 R2。
  • R3 从 iBGP 连接的对等端 R1 和 R2 得到的前缀信息可以通报给 eBGP 连接的对等端 R4。
  • 但 R3 从 iBGP 连接的对等端 R1 得到的前缀信息不允许再通报给另一个 iBGP 连接的对等端 R2。

BGP 路由信息

BGP 路由 = [ 前缀, BGP属性 ] = [ 前缀, AS-PATH, NEXT-HOP ]

  • 前缀:指明到哪一个子网(用 CIDR 记法表示)。
  • BGP 属性:最重要的两个属性是
    • 自治系统路径 AS-PATH
    • 下一跳 NEXT-HOP。

3. 三种不同的自治系统 AS

  • 末梢 AS:不会把来自其他 AS 的分组再转发到另一个 AS。必须向所连接的 AS 付费。
  • 多归属 AS (multihomed AS):同时连接到两个或两个以上的 AS。增加连接的可靠性。
  • 穿越 AS:为其他 AS 有偿转发分组。
  • 对等 AS:经过事先协商的两个 AS,彼此之间的发送或接收分组都不收费。

BGP 路由如何避免兜圈子?

4. BGP 的路由选择

  • 本地偏好 (local preference) 值最高的路由 (默认值=100
  • AS 跳数最小的路由
  • 使用热土豆路由选择算法(分组在 AS 内的转发次数最少)
  • 路由器 BGP ID 数值最小的路由。具有多个接口的路由器有多个 IP 地址,BGP ID 就使用该路由器的 IP 地址中数值最大的一个。

本地偏好 (local preference) 值最高

AS 跳数最小

热土豆路由选择算法

  • R1a 选择 R1c 作为离开 AS1 的最佳选择,其 BGP 转发表中对应的项目应当是:(匹配前缀 X,下一跳路由器 R1c)。
  • R1b 选择 R1d 作为离开 AS1 的最佳选择,其 BGP 转发表中对应的项目应当是:(匹配前缀 X,下一跳路由器 R1d)。

5.  BGP-4 的四种报文

路由器的构成

  • 路由器工作在网络层,用于互连网络。
  • 是互联网中的关键设备。
  • 路由器的主要工作:转发分组。
    • 把从某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。

1. 路由器的结构

“转发”和“路由选择”的区别

  • 转发
    • 根据转发表将用户的 IP 数据报从合适的端口转发出去。
    • 仅涉及到一个路由器。
    • 转发表是从路由表得出的。
    • 转发表必须包含完成转发功能所必需的信息,每一行必须包含从要到达的目的网络到输出端口和某些 MAC 地址信息(如下一跳的以太网地址)的映射。
  • 路由选择
    • 按照路由选择算法,根据网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个的路由表。
    • 涉及到很多路由器。
    • 路由表一般仅包含从目的网络到下一跳(用 IP 地址表示)的映射

输入端口对线路上收到的分组的处理

输出端口将交换结构传送来的分组发送到线路

2. 交换结构

  • 常用交换方法有三种:通过存储器、通过总线、通过纵横交换结构。

通过存储器

  • (1) 当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机。然后分组就从输入端口复制到存储器中。
  • (2) 路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。
  • (3) 若存储器的带宽(读或写)为每秒 M 个分组,那么路由器的交换速率(即分组从输入端口传送到输出端口的速率)一定小于 M/2。

通过总线

  • (1) 数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。
  • (2) 当分组到达输入端口时若发现总线忙,则被阻塞而不能通过交换结构,并在输入端口排队等待。
  • (3)因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。

通过纵横交换结构 (crossbar switch fabric)

  • 常被称为互连网络 (interconnection network)。
  • (1) 它有 2N 条总线,控制交叉节点可以使 N 个输入端口和 N 个输出端口相连接。
  • (2) 当输入端口收到一个分组时,就将它发送到水平总线上。
  • (3) 若通向输出端口的垂直总线空闲,则将垂直总线与水平总线接通,把该分组转发到这个输出端口。若输出端口已被占用,分组在输入端口排队等待。
  • 特点:是一种无阻塞的交换结构,分组可以转发到任何一个输出端口,只要这个输出端口没有被别的分组占用。

IP 多播

IP 多播的基本概念
  • 1988 年,Steve Deering 首次提出 IP 多播的概念。
  • 多播 (multicast):以前曾译为组播。
  • 目的:更好地支持一对多通信。
  • 一对多通信:一个源点发送到许多个终点。

多播可大大节约网络资源

IP 多播

  • 在互联网上进行多播就叫做 IP 多播。
  • 互联网范围的多播要靠路由器来实现。
  • 能够运行多播协议的路由器称为多播路由器 (multicast router)。
  • 多播路由器也可以转发普通的单播 IP 数据报。
  • 从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。

多播 IP 地址

  • 在 IP 多播数据报的目的地址需要写入多播组的标识符。
  • 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。
    • 地址范围:224.0.0.0 ~ 239.255.255.255
  • 每一个 D 类地址标志一个多播组。
  • 多播地址只能用于目的地址,不能用于源地址。

多播数据报

  • 多播数据报和一般的 IP 数据报的区别:
    • 目的地址:使用 D 类 IP 地址。
    • 协议字段 = 2,表明使用网际组管理协议 IGMP。
  • 尽最大努力交付,不保证一定能够交付多播组内的所有成员。
  • 对多播数据报不产生 ICMP 差错报文。在 PING 命令后面键入多播地址,将永远不会收到响应。
在局域网上进行硬件多播
  • IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
  • TCP/IP 协议使用的以太网地址块的范围是
    • 从   00-00-5E-00-00-00     到   00-00-5E-FF-FF-FF
  • IANA 只拿出 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF (2^23 个地址)作为以太网多播地址。或者说,在 48 位的多播地址中,前 25 位都固定不变,只有后 23 位可用作多播。

D 类 IP 地址与以太网多播地址的映射关系

  • 收到多播数据报的主机,还要在 IP 层对 IP 地址进行过滤,把不是本主机要接收的数据报丢弃。
网际组管理协议 IGMP 和多播路由选择协议

1.  IP 多播需要两种协议

  • 网际组管理协议 IGMP (Internet Group Management Protocol)
    • 使多播路由器知道多播组成员信息(有无成员)。
  • 多播路由选择协议
    • 使多播路由器协同工作,把多播数据报用最小代价传送给多播组的所有成员。

IGMP 使多播路由器知道多播组成员信息

IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机参加或退出了某个多播组。IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。

多播路由选择协议更为复杂

路由器 R 不应当向网络 N3 转发多播组 M1 的分组,因为网络 N3 上没有多播组 M1 的成员。

  • 多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化),因为每一台主机可以随时加入或离开一个多播组。
  • 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个多播数据报从什么地方来和要到什么地方去。
  • 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员的接入网络。

2.  网际组管理协议 IGMP

IGMP 使用 IP 数据报传递其报文

  • 在 IGMP 报文加上 IP 首部构成 IP 数据报。
  • 但 IGMP 也向 IP 提供服务。
  • 因此,不把 IGMP 看成是一个单独的协议,而是整个网际协议 IP 的一个组成部分。

IGMP 工作可分为两个阶段

  • 第一阶段:加入多播组。
  • 第二阶段:探询组成员变化情况。

第一阶段:加入多播组

  • 当某个主机加入多播组时,该主机向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。
  • 本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器。

第二阶段:探询组成员变化情况

  • 本地多播路由器周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
  • 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。
  • 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。

IGMP 采用的一些具体措施,以避免增加大量开销

  • 所有通信都使用 IP 多播。只要有可能,都用硬件多播来传送。
  • 对所有的组只发送一个请求信息的询问报文。默认询问速率是每 125 秒发送一次。
  • 当同一个网络上连接有多个多播路由器时,能迅速和有效地选择其中的一个来探询主机的成员关系。
  • 分散响应。在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10 秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
  • 采用抑制机制。同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就不再发送响应了。

3.  多播路由选择

  • 实际上就是要找出以源主机为根节点的多播转发树
  • 不同的多播组对应于不同的多播转发树。
  • 同一个多播组,对不同的源点也会有不同的多播转发树。

  • M 个源,N 个多播组,需要 MⅹN 棵以源为根的多播转发树。
  • 转发多播数据报时使用三种方法:
    • (1) 洪泛与剪除
    • (2) 隧道技术 (tunneling)
    • (3) 基于核心的发现技术

(1) 洪泛与剪除

  • 适合于较小的多播组,所有组成员接入的局域网也是相邻接的。
  • 开始时,路由器转发多播数据报使用洪泛的方法(这就是广播)。
  • 为避免兜圈子,采用反向路径广播 RPB (Reverse Path Broadcasting) 的策略。

RPB 的要点:检查,转发 

RPB 的要点:形成以源为根节点的多播转发树 

RPB 的要点:剪枝与嫁接 

  • 剪枝:如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)已没有该多播组的成员,就把它和下游的树枝一起剪除。
  • 嫁接:当某个树枝有新增加的组成员时,可以再接入到多播转发树上。 

 

(2) 隧道技术 (tunneling) 

 

(3) 基于核心的发现技术 

  • 对于多播组的大小在较大范围内变化时都适合。
  • 对每一个多播组 G 指定一个核心 (core) 路由器,并给出它的 IP 单播地址。
  • 核心路由器按照前面讲过的 2 种方法创建出对应于多播组 G 的转发树(核心路由器为根节点)。
  • 为一个多播组构建一棵转发树,而不是为每个(源,组)组合构建一棵转发树。
  • 构建转发树开销较小,扩展性较好。
  • 如果有一个路由器 R1 向核心路由器发送数据报,那么它在途中经过的每一个路由器都要检查其内容。
  • 当数据报到达参加了多播组 G 的路由器 R2 时,R2 就处理这个数据报。
    • 如果 R1 发出的是一个多播数据报,其目的地址是 G 的组地址,R2 就向 G 的成员转发这个多播数据报。
    • 如果 R1 发出的数据报是一个请求加入多播组 G 的数据报,R2 就把这个信息加到它的路由中,并用隧道技术向 R1 转发每一个多播数据报的副本。 

几种多播路由选择协议

  • 距离向量多播路由选择协议 DVMRP (Distance Vector Multicast Routing Protocol)。互联网上使用的第一个多播路由选择协议。
  • 基于核心的转发树 CBT (Core Based Tree)
  • 开放最短通路优先的多播扩展 MOSPF (Multicast Extensions to OSPF)
  • 协议无关多播-稀疏方式 PIM-SM (Protocol Independent Multicast-Sparse Mode) 。唯一成为互联网标准的一个协议。
  • 协议无关多播-密集方式 PIM-DM (Protocol Independent Multicast-Dense Mode)

虚拟专用网 VPN 和网络地址转换 NAT

虚拟专用网 VPN

  • 由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。
  • 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。
  • 如果一个机构内部的计算机通信也是采用 TCP/IP 协议,那么这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。

本地地址与全球地址

  • 本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
  • 全球地址:全球唯一的 IP 地址,必须向互联网的管理机构申请。
  • 问题:如何区分本地地址和全球地址?
  • 解决:RFC 1918 指明了一些专用地址 (private address)
    • 专用地址只能用作本地地址,而不能用作全球地址。
    • 互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。

RFC 1918 指明的专用 IP 地址

专用网

  • 采用专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
  • 专用 IP 地址也叫做可重用地址 (reusable address)。

虚拟专用网 VPN

  • 利用公用互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN (Virtual Private Network)。
  • 专用网:指这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。
  • 虚拟:表示实际上没有使用通信专线,只是在效果上和真正的专用网一样。

虚拟专用网 VPN 的构建

  • 如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
  • 必须为每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。

用隧道技术实现虚拟专用网

VPN 类型

  • 内联网 (intranet):同一个机构的内部网络所构成的 VPN。
  • 外联网 (extranet):一个机构和某些外部机构共同建立的 。
  • 远程接入 VPN (remote access VPN):允许外部流动员工通过接入 VPN 建立 VPN 隧道访问公司内部网络,好像就是使用公司内部的本地网络访问一样。

网络地址转换 NAT

  • 问题:在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?
  • 解决:
    • 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。
    • 采用网络地址转换 NAT。这是目前使用得最多的方法。

网络地址转换 NAT (Network Address Translation)

  • 需要在专用网连接到互联网的路由器上安装 NAT 软件。
  • 装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球 IP 地址。
  • 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。 

网络地址转换的过程

  • 在内部主机与外部主机通信时,在 NAT 路由器上发生了两次地址转换:
    • 离开专用网时:替换源地址,将内部地址替换为全球地址。
    • 进入专用网时:替换目的地址,将全球地址替换为内部地址。

网络地址转换 NAT 

  • 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网。
  • 可以使专用网内较多数量的主机轮流使用 NAT 路由器有限数量的全球 IP 地址。

通过 NAT 路由器的通信必须由专用网内的主机发起,因此,专用网内部的主机不能充当服务器用。

网络地址与端口号转换 NAPT 

  • NAT 并不能节省 IP 地址。
  • NAPT 可以使多台拥有本地地址的主机,共用一个 全球 IP 地址,同时和互联网上的不同主机进行通信。
  •  使用运输层端口号的 NAT 叫做网络地址与端口号转换 NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。

NAPT 地址转换表 

  • NAPT 把专用网内不同的源 IP 地址都转换为相同的全球 IP 地址,将 TCP 源端口号转换为新的 TCP 端口号(互不相同)。
  • 收到从互联网发来的应答时,从 IP 数据报的数据部分找出运输层端口号,从 NAPT 转换表中找到正确的目的主机。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/104509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一个JNI的Demo,linux上下载就可以用

最近用到了Java,需要用Java调用c做的.so,搜了一下,有一个demo,但是这个demo有严重的问题。 加载.so的时候不好好地用 System.loadLibrary("hello"); 他用System.load("hello");这个函数需要使用全路径。总是…

红路灯识别

1.截图图像中的目标对象 1.1 查找边界矩形 1.1.1直边界矩形 一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。所以边界矩形的面积不是最小的。 cv2.boundingRect(array) 输入:点集 输出:(x,y…

怎么防止文件夹被删除、复制?

当文件夹中存放重要数据时,我们需要严格保护文件夹的安全,避免文件夹被复制、删除。那么,该怎么防止文件夹被删除、复制呢?下面我们就一起来了解一下。 ​文件夹隐藏 当文件夹被隐藏时,其他人无法发现文件夹&#xff…

Java 中是如何获取 IP 属地的

随着互联网的普及,人们在使用计算机或移动设备上网时,都会被分配一个IP地址,以便进行网络通信。而当我们访问某个网站或使用某些网络服务时,我们通常会发现不同地区的用户会显示不同的IP属地。那么,在Java中是如何获取…

Lua-http库写一个爬虫程序怎么样 ?

目录 一、了解Lua-http库 二、爬虫程序的需求分析 三、爬虫程序的实现步骤 四、代码示例 总结 随着互联网的快速发展,网络爬虫已经成为了获取信息的重要手段之一。Lua-http库作为一个强大的HTTP库,可以轻松地帮助我们实现爬虫程序。本文将介绍如何使…

vector详解

迭代器 vector维护的是一个连续线性空间。普通指针可以满足条件作为vector的迭代器。 template <typename T, typename Allocalloc> class vector { public: using value_type T; using iterator value_type*; }; vector::iterator //int* vector::iterator //char* …

利用Linux socat快速搭建TCP服务器

某些场合&#xff0c;需要在Linux上快速搭建一个TCP的服务器&#xff0c;接收客户端的连接&#xff0c;返回一些数据。 一般用于测试或者负载不大&#xff0c;安全性要求不高的场合&#xff0c;达到快速搭建的目的。 本文以客户端通过服务器的3334端口&#xff0c;获取服务器…

使用 Rust 和 cURL 库下载程序

以下是一个使用 Rust 和 cURL 库的下载器程序&#xff0c;用于下载 图像。此程序使用了 https://www.duoip.cn/get_proxy 的代码。 extern crate curl; ​ use std::io::{self, Read}; use std::error::Error; ​ fn main() {let url "https://www.baidu.com";let …

TCP / UDP 概念 + 实验(计网自顶向下)

Github源码 moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES: 《计算机网络&#xff0d;自顶向下方法(原书第6版)》编程作业&#xff0c;Wireshark实验文档的翻译和解答。 (github.com) 暂定打算分2步走&#xff0c;前置是中科大对应计网黑书的视频 第1步完成14个Wire…

思维导图软件 ConceptDraw MINDMAP mac中文特色介绍

ConceptDraw MINDMAP mac是一款思维导图绘制软件&#xff0c;它可以帮助用户快速创建各种类型的思维导图&#xff0c;如组织结构图、流程图、概念图和UML图等。该软件具有直观的界面和简单易用的操作方式&#xff0c;使得用户能够轻松地创建复杂的思维导图。此外&#xff0c;它…

Qt跨平台(统信UOS)各种坑解决办法

记录Qt跨平台的坑&#xff0c;方便日后翻阅。 一、环境安装 本人用的是qt 5.14.2.直接在官网下载即可。地址&#xff1a;Index of /archive/qt/5.14/5.14.2 下载linux版本。 下载之后 添加可执行权限。 chmod 777 qt-opensource-linux-x64-5.14.2.run 然后执行。 出现坑1…

R语言生物群落(生态)数据统计分析与绘图

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自经典…

【C语言】指针那些事之数组传参和指针传参的区别

C语言系列 文章目录 目录 C语言系列 文章目录 前言 一&#xff0c;数组传参和指针传参 1.1一维数组传参 1.2二维数组传参 1.3一级指针传参 1.4当一个函数的参数部分为一级指针的时候&#xff0c;函数可以接收什么参数 1.5二级指针传参 1.6当函数的参数为二级指针的时…

xxl-job项目集成实战,全自动项目集成,可以直接使用到项目中

如果你看官方文档&#xff0c;在研究透&#xff0c;至少也得几天时间&#xff0c;如果你直接看我的文档&#xff0c;快速用到项目中&#xff0c;也就10分钟就搞好了。 xxl-job功能确实很强大&#xff0c;而且使用的人比较多&#xff0c;既然在使用xxl-job&#xff0c;那肯定是…

pytorch 入门 (四)案例二:人脸表情识别-VGG16实现

实战教案二&#xff1a;人脸表情识别-VGG16实现 本文为&#x1f517;小白入门Pytorch内部限免文章 参考本文所写记录性文章&#xff0c;请在文章开头注明以下内容&#xff0c;复制粘贴即可 &#x1f368; 本文为&#x1f517;小白入门Pytorch中的学习记录博客&#x1f366; 参…

ruoyi-nbcio版本从RuoYi-Flowable-Plus迁移过程记录

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 从KonBAI / RuoYi-Flowable-Plus 项目移植过来&#xff0c;开始用yarn install之后yarn run dev 还是有问…

腾讯云价格计算器有用过的吗?好用!

腾讯云服务器价格计算器可以一键计算出云服务器的精准报价&#xff0c;包括CVM实例规格价格、CPU内存费用、公网带宽收费、存储系统盘和数据盘详细费用&#xff0c;腾讯云百科txybk.com分享腾讯云价格计算器链接入口、使用方法说明&#xff1a; 腾讯云服务器价格计算器 打开腾…

Java八股文 ---Java并发篇

线程安全 线程安全就是多个线程去执行某类&#xff0c;这个类始终能表现出正确的行为&#xff0c;那么这个类就是线程安全的 我们判断是否要处理线程安全问题&#xff0c;就看有没有多个线程同时访问一个共享变量 能不能保证操作的原子性&#xff0c;考虑atomic包下的类够不够我…

Kubernetes技术与架构-网络 3

Kubernetes集群支持为Pod或者Service申请IPV4或者IPV6的地址空间。 kube-apiserver --service-cluster-ip-range<IPv4 CIDR>,<IPv6 CIDR> kube-controller-manager --cluster-cidr<IPv4 CIDR>,<IPv6 CIDR> --service-cluster-ip-range<IPv4 CI…

架构风格区别-架构案例(五十九)

管道-过滤器和仓库的区别&#xff1f; 独立的数据仓库&#xff0c;处理流独立&#xff0c;处理数据用连接仓库工具数据与处理在一起&#xff0c;改动的话需要重启系统需要仓库工具与仓库连接&#xff0c;数据与处理分离&#xff0c;性能差可以支持并发连接访问仓库&#xff0c…