目录

4.1  网络层提供的两种服务

4.2  网际协议 IP

4.2.1  虚拟互连网络

1. 实现异构网络的互连互通方法 - 使用中间设备进行互连

2. 互连网络与虚拟互连网络

3. 虚拟互连网络的意义

4.2.2  分类的 IP 地址

1. IP 地址及其表示方法

2. 常用的三种类别的 IP 地址

3. 划分子网

​编辑

​编辑

4. 无分类编址 CIDR

5. IP 地址的特点

4.2.3 IP 地址与硬件地址

4.2.4  地址解析协议 ARP

1. 地址解析协议 ARP 要点

2. ARP 高速缓存的作用

3. 使用 ARP 的四种典型情况

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

5. ARP病毒工作原理

6. ARP欺骗攻击——仿冒网关

7. ARP欺骗攻击——欺骗网关

8. ARP欺骗攻击——欺骗终端用户

9. ARP泛洪攻击

10. ARP攻击防御的三个控制点

4.2.5  IP 数据报的格式

【例4-1】 IP 数据报分片

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

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

4.3 IP 层转发分组的流程

1. 查找路由表

2. 特定主机路由

3. 默认路由 (default route)

4. 必须强调指出

5. 路由器分组转发算法

6. 关于路由表

7. 使用子网时分组的转发

8. 例题

9. 在划分子网情况下路由器转发分组的算法

4.3.2 最长前缀匹配

1. 使用二叉线索查找路由表

2. 在二叉线索中查找 IP 地址

4.4  网际控制报文协议 ICMP

4.4.1  ICMP 报文的种类

1. ICMP 差错报告报文

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

3. ICMP 询问报文

4.4.2  ICMP 的应用举例

4.5  IPv6

4.5.1  IPv6 的基本首部

1. IPv6 数据报两大组成部分

2. IPv6 数据报的基本首部

3. IPv6 的扩展首部

5. IPv6 的基本首部

4.5.2  IPv6 的地址

1. IPv6 地址的三种基本类型地址

2. 结点与接口

3. 冒号十六进制记法

4. 零压缩

5. 点分十进制记法的后缀

6. IPv6 地址分类

4.5.3  从 IPv4 向 IPv6 过渡

1. 双协议栈

2. 隧道技术

4.5.4  ICMPv6

ICMPv6 报文的分类

4.6  互联网的路由选择协议

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

1. 理想的路由算法

2. 关于最佳路由

3. 从路由算法的自适应性考虑

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

5. 自治系统 AS (Autonomous System)

6. 互联网的两大类路由选择协议

4.6.2  内部网关协议 RIP

1. 工作原理

2. RIP 协议的三个特点

3. 路由表的建立

4. 距离向量算法

5. RIP2 协议的报文格式

4.6.3  内部网关协议 OSPF

1. 三个要点

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

3. Dijkstra算法

4. OSPF 的区域 (area)

5. OSPF 的五种分组类型

6. OSPF 的基本操作

7. OSPF与RIP协议的对比

8. 指定的路由器

4.6.4  外部网关协议 BGP

1. BGP 发言者 (BGP speaker)

2. eBGP 连接和 iBGP 连接

3. IGP、iBGP 和 eBGP 的关系

4.  eBGP 和 iBGP

5. BGP 路由信息

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

4.6.5  路由器的构成

4.7  IP 多播

4.7.1  IP 多播的基本概念

4.7.2  在局域网上进行硬件多播

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

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

4.8.1  虚拟专用网 VPN

4.8.2  网络地址转换 NAT

练习题


4.1  网络层提供的两种服务

面向连接:让网络负责可靠交付,通信之前先建立虚电路

无连接:网络提供数据报服务,网络层提供简单灵活的、无连接的、尽最大努力交付的数据报服务

4.2  网际协议 IP

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。

与 IP 协议配套使用的还有三个协议:

     地址解析协议 ARP (Address Resolution Protocol)

     网际控制报文协议 ICMP (Internet Control Message Protocol)

     网际组管理协议 IGMP (Internet Group Management Protocol)

4.2.1  虚拟互连网络

1. 实现异构网络的互连互通方法 - 使用中间设备进行互连

注意:转发器、网桥或交换机仅把一个网络扩大了,仍然是一个网络 ,网络互连使用路由器

2. 互连网络与虚拟互连网络

3. 虚拟互连网络的意义

所谓虚拟互连网络也就是逻辑互连网络,就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。

使用 IP 协议的虚拟互连网络可简称为 IP 网。

使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。

4.2.2  分类的 IP 地址

1. IP 地址及其表示方法

IP 地址就是给每个连接在互联网上的主机(或路由器)分配在全世界范围是唯一的 32 位的标识符

2. 常用的三种类别的 IP 地址

在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。

路由器总是具有两个或两个以上的 IP 地址,路由器的每一个接口都有不同网络号的 IP 地址。

两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。

3. 划分子网

(1) 从两级 IP 地址到三级 IP 地址

划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。

从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。

凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。 最后就将 IP 数据报直接交付目的主机。

划分为三个子网后对外仍是一个网络,划分子网后变成了三级结构:

当没有划分子网时,IP 地址是两级结构。 划分子网后 IP 地址就变成了三级结构。 划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。

优点:减少了 IP 地址的浪费、使网络的组织更加灵活、更便于维护和管理

划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络

(2)子网掩码

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。 使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。

规则: 子网掩码长度 = 32 位

某位 = 1:IP地址中的对应位为网络号和子网号

某位 = 0:IP地址中的对应位为主机号

子网掩码是一个网络或一个子网的重要属性。 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。

路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。

4. 无分类编址 CIDR

(1)网络前缀

2 级结构 2 个字段:网络前缀和主机号

CIDR 记法:斜线记法 (slash notation) a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。

例如:128.14.35.7/20:前 20 位是网络前缀。

(2)路由聚合

一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。

路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。

路由聚合也称为构成超网 (supernetting)。

(3)构成超网

前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C  类地址。

这些 C 类地址合起来就构成了超网。

CIDR 地址块中的地址数一定是 2 的整数次幂。

网络前缀越短,其地址块所包含的地址数就越多

CIDR 的好处:可以有效分配 IPv4 的地址空间,根据客户的需要分配适当大小的 CIDR 地址块。

5. IP 地址的特点

(1) 每个 IP 地址都由网络前缀和主机号两部分组成。

IP 地址是一种分等级的地址结构。 方便了 IP 地址的分配和管理。 实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。

(2) IP 地址是标志一台主机(或路由器)和一条链路的接口。

当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为多归属主机 ,一个路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的 IP 地址。

(3) 转发器或交换机连接起来的若干个局域网仍为一个网络

按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。 具有不同网络号的局域网必须使用路由器进行互连。

(4) 在 IP 地址中,所有分配到网络前缀的网络都是平等的。

互联网同等对待每一个 IP 地址,不管是范围很小的局域网,还是覆盖很大地理范围的广域网。

注意:同一个局域网上的 主机或路由器的 IP 地址中的网络号 必须一样。

路由器的每一个接口都有一个不同网络号的 IP 地址。

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

4.2.3 IP 地址与硬件地址

在主机H1和主机H2的通信过程中,经过了多个路由器,在这个数据传送过程中,IP数据报的源地址和目的地址是否发生了变化,MAC帧的源地址和目的地址是否发生了变化?

答: IP数据报不变,MAC帧改变

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

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

4.2.4  地址解析协议 ARP

已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址? 地址解析协议 ARP 就是用来解决这样的问题的。

1. 地址解析协议 ARP 要点

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

ARP请求分组:发送方硬件地址 ;发送方 IP 地址 ;目标方硬件地址(未知时填 0) ;目标方 IP 地址

本地广播 ARP 请求(路由器不转发ARP请求)。

ARP 响应分组:发送方硬件地址;发送方 IP地址;目标方硬件地址 / 目标方 IP 地址。

ARP 分组封装在物理网络的中传输。

2. ARP 高速缓存的作用

存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。

为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

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

3. 使用 ARP 的四种典型情况

发送方是主机,要把IP数据报发送到本网络上的另一个主机,用 ARP 找到目的主机的硬件地址。

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

发送方是路由器,要把 IP 数据报转发到本网络上的一个主机,用 ARP 找到目的主机的硬件地址。

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

从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

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

不同使用不同的 MAC 地址。MAC 地址之间的转换非常复杂。

对以太网 MAC 地址进行寻址也是极其困难的。

IP 编址把这个复杂问题解决了。

连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用 ARP 来找到 MAC 地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。

因此,在虚拟的 IP 网络上用 IP 地址进行通信非常方便。

5. ARP病毒工作原理

6. ARP欺骗攻击——仿冒网关

攻击者发送伪造的网关ARP报文,欺骗同网段内的其它主机

主机访问网关的流量,被重定向到一个错误的MAC地址,导致该用户无法正常访问外网。

7. ARP欺骗攻击——欺骗网关

攻击者伪造虚假的ARP报文,欺骗网关

网关发给该用户的所有数据全部重定向到一个错误的MAC地址,导致该用户无法正常访问外网

8. ARP欺骗攻击——欺骗终端用户

攻击者伪造虚假的ARP报文,欺骗相同网段内的其他主机

网段内的其他主机发给该用户的所有数据都被重定向到错误的MAC地址,导致同网段内的相关用户无法正常互访。

9. ARP泛洪攻击

攻击者伪造大量不同ARP报文在同网段内进行广播,导致网关ARP表项被占满,合法用户的ARP表项无法正常学习,导致合法用户无法正常访问外网

10. ARP攻击防御的三个控制点

4.2.5  IP 数据报的格式

一个 IP 数据报由首部和数据两部分组成。

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

在首部的固定部分的后面是一些可选字段,其长度是可变的。

(1)版本——占 4 位,指 IP 协议的版本。 目前的 IP 协议版本号为 4 (即 IPv4)。

(2)首部长度——占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节), 因此 IP 的首部长度的最大值是 60 字节。

(3)区分服务——占 8 位,用来获得更好的服务。 在旧标准中叫做服务类型,但实际上一直未被使用过。 1998 年这个字段改名为区分服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段

(4)总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。 总长度必须不超过最大传送单元 MTU。

(5)标识(identification) ——占 16 位, 它是一个计数器,用来产生 IP 数据报的标识。

(6)标志(flag) ——占 3 位,目前只有前两位有意义。

标志字段的最低位是 MF, MF = 1 表示后面“还有分片”。MF = 0 表示最后一个分片。

标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF = 0 时才允许分片。

(7)片偏移——占13 位,指出:较长的分组在分片后 某片在原分组中的相对位置。

片偏移以 8 个字节为偏移单位。

【例4-1】 IP 数据报分片

一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。 因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。 于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。 原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。

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

(1)生存时间——占8 位,记为 TTL , 指示数据报在网络中可通过路由器数的最大值。

(2)协议——占8 位,指出此数据报携带的数据使用何种协议, 以便目的主机的 IP 层将数据部分 上交给那个处理过程

IP 协议支持多种协议, IP 数据报可以封装多种协议 PDU。

(3)首部检验和——占16 位,只检验数据报的首部, 不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。

IP 数据报首部检验和的计算采用 16 位二进制反码求和算法

(1)将校验和字段置为0;

(2)对首部中(一般为20B)每个16位字进行二进制反码求和;

(3)将(2)中得到的和再取反码,即得首部检验和,写入校验和字段中。

(4)源地址和目的地址都各占 4 字节

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

IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。

选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。

增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。

实际上这些选项很少被使用。

4.3 IP 层转发分组的流程

假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。

可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。

若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。

1. 查找路由表

根据目的网络地址就能确定下一跳路由器,这样做的结果是:

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

2. 特定主机路由

虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。

采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

3. 默认路由 (default route)

路由器还可采用默认路由减少路由表所占用的空间和搜索路由表所用的时间。 这种转发方式在一个网络只有很少的对外连接时是很有用的。 默认路由在主机发送 IP 数据报时往往更能显示出它的好处。 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。

4. 必须强调指出

IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。

当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。

网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

5. 路由器分组转发算法

(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。

(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付执行 (3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。

(4) 若路由表中有到达网络 N 的路由,把数据报传送给路由表指明下一跳路由器;否则执行 (5)。

(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行 (6)。

(6)  报告转发分组出错

6. 关于路由表

路由表没有给分组指明到某个网络的完整路径。

路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。

在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。

这样一步一步地查找下去,直到最后到达目的网络。

7. 使用子网时分组的转发

在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。

但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息

因此分组转发的算法也必须做相应的改动。

8. 例题

要发送的分组的目的 IP 地址:128.30.33.138

因此 H1 首先检查主机 128.30.33.138 是否连接在本网络上 如果是,则直接交付; 否则,就送交路由器 R1,并逐项查找路由表。

主机 H1 首先将 本子网的子网掩码 255.255.255.128 与分组的 IP 地址 128.30.33.138 逐比特相“与”(AND 操作)

路由器 R1 收到分组后就用路由表中第 1 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作

255.255.255.128 AND 128.30.33.138 = 128.30.33.128 不匹配!

(因为128.30.33.128 与路由表中的 128.30.33.0 不一致)

255.255.255.128 AND 128.30.33.138 = 128.30.33.128 匹配!

这表明子网 2 就是收到的分组所要寻找的目的网络。

9. 在划分子网情况下路由器转发分组的算法

(1) 从收到的分组的首部提取目的 IP 地址 D

(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,      执行 (3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。

(4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。

(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。

(6) 报告转发分组出错。

4.3.2 最长前缀匹配

使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。

应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)。 网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。

最长前缀匹配又称为最长匹配或最佳匹配。

选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。

1. 使用二叉线索查找路由表

当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。

为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索 (binary trie)。

从二叉线索的根节点自顶向下的深度最多有 32 层,每一层对应于IP地址中的一位。一个IP地址存入二叉线索的规则很简单。先检查IP地址左边的第一位,如为 0,则第一层的节点就在根节点的左下方;如为 1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。

2. 在二叉线索中查找 IP 地址

既然可靠传输有上层运输层进行保证,那么是否在网络层就不需要进行任何的差错报告了?

4.4  网际控制报文协议 ICMP

4.4.1  ICMP 报文的种类

ICMP 报文的种类有两种,即 ICMP 差错报告报文ICMP 询问报文

ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型代码检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

1. ICMP 差错报告报文

共有 4 种: 终点不可达、时间超过、参数问题、改变路由(重定向)

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

ICMP 差错报告报文不再发送 ICMP 差错报告报文。

第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。

具有多播地址的数据报都不发送 ICMP 差错报告报文。

具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

3. ICMP 询问报文

(1)回送请求和回答报文

ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。

(2)时间戳请求和回答报文

ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间,用于时钟同步和时间测量。

4.4.2  ICMP 的应用举例

(1)PING (Packet InterNet Groper)

PING 用来测试两个主机之间的连通性。

PING 使用了 ICMP 回送请求与回送回答报文。

PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

(2)Traceroute 的应用举例

在 Windows 操作系统中这个命令是 tracert。

用来跟踪一个分组从源点到终点的路径。

利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪。

4.5  IPv6

IP 是互联网的核心协议。 互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 的 32 位地址已经耗尽。 ISP 已经不能再申请到新的 IP 地址块了。 我国在 2014 – 2015 年也逐步停止了向新用户和应用分配 IPv4 地址。

解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。

4.5.1  IPv6 的基本首部

1. IPv6 数据报两大组成部分

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

IPv6 将首部长度变为固定的 40 字节,称为基本首部。

把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 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 地址。

2. IPv6 数据报的基本首部

IPv6 将首部长度变为固定的 40 字节,称为基本首部。 把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。 IPv6 对首部中的某些字段进行了如下的更改:

3. IPv6 的扩展首部

每一个扩展首部都由若干个字段组成,它们的长度也各不相同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。

IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。 这样做的好处是什么? 数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。 这样就大大提高了路由器的处理效率

4. 六种扩展首部

5. IPv6 的基本首部

IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组

主要变化如下:

□ 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。

□ 扩展的地址层次结构。

□ 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。

□ 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。

□ 允许协议继续扩充。

□ 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。

□ 支持资源的预分配。  IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。

□ IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐

既然IPV6有这么多优点,为什么现在还在使用IPV4?

4.5.2  IPv6 的地址

1. IPv6 地址的三种基本类型地址

(1) 单播 (unicast):传统的点对点通信。

(2) 多播 (multicast):一点对多点的通信。

(3) 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。

2. 结点与接口

IPv6 将实现 IPv6 的主机和路由器均称为结点

一个结点就可能有多个与链路相连的接口

IPv6 地址是分配给结点上面的接口的。 一个结点可以有多个单播地址。 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。

3. 冒号十六进制记法

在 IPv6 中,每个地址占 128 位,地址空间大于 3.4 x 1038 。

为了使地址再稍简洁些,IPv6 使用冒号十六进制记法, 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:    68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0。

4. 零压缩

冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。     FF05:0:0:0:0:0:0:B3    可压缩为:       FF05::B3

注意:在任一地址中只能使用一次零压缩。

5. 点分十进制记法的后缀

冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。 例如:0:0:0:0:0:0:128.10.2.1     再使用零压缩即可得出:  ::128.10.2.1

CIDR 的斜线表示法仍然可用。 例如:60 位的前缀 12AB00000000CD3 可记为:     12AB:0000:0000:CD30:0000:0000:0000:0000/60 或 12AB::CD30:0:0:0:0/60 (零压缩) 或 12AB:0:0:CD30::/60 (零压缩)

6. IPv6 地址分类

未指明地址 :这是 16 字节的全 0 地址,可缩写为两个冒号“::”。 这个地址只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用。 这类地址仅此一个。

环回地址 即 0:0:0:0:0:0:0:1(记为 ::1)。 作用和 IPv4 的环回地址一样。 这类地址仅此一个。

多播地址 功能和 IPv4 的一样。 这类地址占 IPv6 地址总数的 1/256。

本地站点单播地址 (Link-Local Unicast Address)  有些单位的网络使用 TCP/IP 协议,但并没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。 这类地址占 IPv6 地址总数的 1/1024。

全球单播地址 IPv6 的这一类单播地址是使用得最多的一类。 曾提出过多种方案来进一步划分这 128 位的单播地址。 根据 2006 年发布的草案标准 RFC 4291 的建议,  IPv6 单播地址的划分方法非常灵活。

4.5.3  从 IPv4 向 IPv6 过渡

向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。

两种向 IPv6 过渡的策略: 使用双协议栈 使用隧道技术

1. 双协议栈

双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。

2. 隧道技术

在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。

4.5.4  ICMPv6

IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报。

因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6

地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被合并到 ICMPv6 中。

ICMPv6 报文的分类

ICMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。 ICMPv6 还增加了几个定义报文的功能及含义的其他协议。

4.6  互联网的路由选择协议

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

1. 理想的路由算法

正确的和完整的、计算上应简单、应能适应通信量和网络拓扑的变化、稳定性、公平的、最佳的

2. 关于最佳路由

不存在一种绝对的最佳路由算法

所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

实际的路由选择算法,应尽可能接近于理想的算法。

3. 从路由算法的自适应性考虑

 (1)静态路由选择策略:即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。

(2)动态路由选择策略:即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

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

互联网采用分层次的路由选择协议。这是因为:(1)互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。

(2)许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。

5. 自治系统 AS (Autonomous System)

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

6. 互联网的两大类路由选择协议

(1)内部网关协议 IGP (Interior Gateway Protocol)  

在一个自治系统内部使用的路由选择协议。

目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。

(2)外部网关协议 EGP (External Gateway Protocol)

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。

在外部网关协议中目前使用最多的是 BGP-4。

4.6.2  内部网关协议 RIP

1. 工作原理

路由信息协议 RIP内部网关协议 IGP 中最先得到广泛使用的协议。

RIP 是一种分布式的、基于距离向量的路由选择协议。 从一个路由器到直接连接的网络的距离定义为 1。从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。 RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。

RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器。 “距离”的最大值为 16 时即相当于不可达。 RIP 不能在两个网络之间同时使用多条路由。

2. RIP 协议的三个特点

(1)和谁交换信息:仅和相邻路由器交换信息。

(2)交换什么信息:交换的信息是当前本路由器所知道的全部信息,即自己的路由表。

(3)什么时间交换信息:按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

3. 路由表的建立

路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1),路由表是空的。

以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。

RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。

​​​​​​​

4. 距离向量算法

收到相邻路由器(其地址为 X)的一个 RIP 报文:

(1) 修改 RIP 报文中所有项目:把“下一跳”字段中的地址都改为 X,并把所有“距离”字段的值加 1。

(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤: 若项目中的目的网络不在路由表中,则把该项目加到路由表中。

否则:若下一跳字段给出的路由器地址是X,则把收到的项目替换原路由表中的项目。

否则:若收到项目中的距离小于路由表中的距离,则进行更新。

否则,什么也不做。

(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。

(4) 返回。

5. RIP2 协议的报文格式

​​​​​​​

(1)RIP 协议特点:好消息传播得快,坏消息传播得慢。

(2)RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。

(3)RIP 协议的优缺点

优点: 实现简单,开销较小。

缺点: “坏消息传播得慢”,使更新过程的收敛时间过长。

RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。

路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

4.6.3  内部网关协议 OSPF

开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的。

“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。

“最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法 SPF

1. 三个要点

(1)和谁交换信息

向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法

(2)交换什么信息

发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。

(3)什么时间交换信息

只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

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

由于各路由器之间频繁地交换链路状态信息,所有的路由器最终都能建立一个链路状态数据库。

这个数据库实际上是全网的拓扑结构图在全网范围内一致(称为链路状态数据库的同步)。

OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。

OSPF 的更新过程收敛得快是其重要优点。

3. Dijkstra算法​​​​​​​

即寻找从源结点到网络中其他各结点的最短路径。为方便起见,设源结点为结点1。然后一步一步地寻找,每次找一个结点到源结点的最短路径,直到把所有的点都找到为止。

4. OSPF 的区域 (area)

为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。 区域也不能太大,在一个区域内的路由器最好不超过 200 个。

(1)OSPF 划分区域

划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。 在一个区域内部的路由器是否知道其他区域的网络拓扑的情况? 只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

(2)主干路由器

(3)OSPF直接用 IP数据报传送

OSPF 不用 UDP 而是直接用 IP 数据报传送。 OSPF 构成的数据报很短。这样做可减少路由信息的通信量。数据报很短的另一好处是可以不必将长的数据报分片传送。

5. OSPF 的五种分组类型

类型1,问候 (Hello) 分组。

类型2,数据库描述 (Database Description) 分组。

类型3,链路状态请求 (Link State Request) 分组。

类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态。

类型5,链路状态确认 (Link State Acknowledgment) 分组。

6. OSPF 的基本操作

两个相邻路由器每隔10秒钟要交换一次Hello报文 若有40秒钟没有收到某个相邻路由器发来的Hello报文,则可认为该相邻路由器是不可达的,应立即修改链路状态数据库,并重新计算路由表

7. OSPF与RIP协议的对比

(1)由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF  协议要比距离向量协议 RIP 好得多。

(2)OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

8. 指定的路由器

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

为什么要对路由选择协议进行分级?

互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。 当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。 比较合理的做法是在 AS 之间交换“可达性”信息。

自治系统之间的路由选择必须考虑有关策略。

BGP 是不同自治系统的路由器之间交换路由信息的协议。可以将 BGP-4 简写为 BGP。

边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。  互联网的规模太大,使得自治系统AS之间路由选择非常困难。 自治系统AS之间的路由选择必须考虑有关策略。

4.6.4  外部网关协议 BGP

1. BGP 发言者 (BGP speaker)

2. eBGP 连接和 iBGP 连接

3. IGP、iBGP 和 eBGP 的关系

4.  eBGP 和 iBGP

同一个协议 BGP(使用的报文类型、使用的属性、使用的状态机等都完全一样)。

但它们在通报前缀时采用的规则不同

在 eBGP 连接的对等端得知前缀信息,可以通报给一个 iBGP 连接的对等端。反过来也是可以的。

但从 iBGP 连接的对等端得知的前缀信息,则不能够通报给另一个 iBGP 连接的对等端。

5. BGP 路由信息

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

前缀:指明到哪一个子网(用 CIDR 记法表示)。

BGP 属性:① 自治系统路径 AS-PATH   ② 下一跳 NEXT-HOP。

​​​​​​​​​​​​​​​​​​​​​

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

末梢 AS:不会把来自其他 AS 的分组再转发到另一个 AS。必须向所连接的 AS 付费。

多归属 AS (multihomed AS):同时连接到两个或两个以上的 AS。增加连接的可靠性。

穿越 AS:为其他 AS 有偿转发分组。

对等 AS:经过事先协商的两个 AS,彼此之间的发送或接收分组都不收费。

7. BGP 的路由选择

(1)本地偏好 (local preference) 值最高的路由 (默认值=100)

(2)AS 跳数最小的路由

AS1 选择通过路由器 R1c 到达 X 的 BGP 路由。 但事实上,分组在 AS4 中反而要经过更多次数的转发。 说明协议 BGP 不存在真正的最佳路由选择。

(3)使用热土豆路由选择算法(分组在 AS 内的转发次数最少) 没看懂

(4)路由器 BGP ID 数值最小的路由。具有多个接口的路由器有多个 IP 地址,BGP ID 就使用该路由器的 IP 地址中数值最大的一个。

8.  BGP-4 的四种报文

BGP报文具有通用首部

4.6.5  路由器的构成

路由器是一种典型的网络层设备,是互联网中的关键设备。

路由器的主要作用是:

① 连通不同的网络。

② 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。

1. 路由器的结构

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。 路由器的转发分组正是网络层的主要工作。

(1) 路由选择部分 :也叫做控制部分,其核心构件是路由选择处理机。

路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

(2)分组转发部分:由三部分组成

① 交换结构 (switching fabric):又称为交换组织,其作用是根据转发表 对分组进行处理。

② 一组输入端口

③ 一组输出端口(请注意:这里的端口就是硬件接口)

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

“转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。

“路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。

路由表是根据路由选择算法得出的。而转发表是从路由表得出的。

在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。

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

路由器的输入端口里面装有物理层、数据链路层和网络层的处理模块。

数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理,会产生一定的时延。

输入端口中的查找和转发功能在路由器的交换功能中是最重要的。

 

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

输出端口里面装有物理层、数据链路层和网络层的处理模块。

输出端口从交换结构接收分组,然后把它们发送到路由器外面的线路上。

在网络层的处理模块中设有一个缓冲区(队列)。当交换结构传送过来的分组的速率超过输出链路的发送速率时,来不及发送的分组就必须暂时存放在这个队列中。

数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。

 (6)分组丢弃

若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。

路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。

2. 交换结构

交换结构是路由器的关键构件。 正是这个交换结构把分组从一个输入端口转移到某个合适的输出端口。 实现交换有多种方法。常用交换方法有三种: 通过存储器、通过总线、通过纵横交换结构

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

(b)当数据报从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。 因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。 现代的技术已经可以将总线的带宽提高到每秒吉比特的速率,因此许多的路由器产品都采用这种通过总线的交换方式。

(c)这种交换结构常称为互连网络 (interconnection network)。 它有 2N 条总线,可以使 N 个输入端口和 N 个输出端口相连接。 当输入端口收到一个分组时,就将它发送到与该输入端口相连的水平总线上。 若通向所要转发的输出端口的垂直总线是空闲的,则在这个结点将垂直总线与水平总线接通,然后将该分组转发到这个输出端口。 但若该垂直总线已被占用(有另一个分组正在转发到同一个输出端口),则后到达的分组就被阻塞,必须在输入端口排队。

4.7  IP 多播

4.7.1  IP 多播的基本概念

IP 多播 (multicast,以前曾译为组播) 已成为互联网的一个热门课题。

目的:更好地支持一对多通信。

一对多通信:一个源点发送到许多个终点。

例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。

1. 多播可大大节约网络资源

2. 多播 IP 地址

IP 多播所传送的分组需要使用多播 IP 地址。

在多播数据报的目的地址写入的是多播组的标识符。

多播组的标识符就是 IP 地址中的 D 类地址(多播地址)。

每一个 D 类地址标志一个多播组。

多播地址只能用于目的地址,不能用于源地址。

3. 多播数据报

多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP。

多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。

对多播数据报不产生 ICMP 差错报文,若在 PING 命令后面键入多播地址,将永远不会收到响应。

4.7.2  在局域网上进行硬件多播

互联网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。

分配给以太网多播地址块的范围是

从   01-00-5E-00-00-00     到   01-00-5E-7F-FF-FF

不难看出,在每一个地址中,只有23位可用作多播。

D类IP地址可供分配的有多少位?

D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。

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

1.  IP 多播需要两种协议

(1)给谁发:为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP 。

(2)怎么发:连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。

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

3. IGMP 的使用范围

4. IGMP 工作可分为两个阶段

5. IGMP 采用的一些具体措施

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

7. 多播路由选择

多播路由选择协议在转发多播数据报时三种方法: 洪泛与剪除、隧道技术、基于核心的发现技术

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

 RPB 的要点

 (2) 隧道技术 (tunneling)

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

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

4.8.1  虚拟专用网 VPN

由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。

考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。

假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址

1. 本地地址与全球地址

2. 专用 IP 地址

3. 专用网

采用这样的专用 IP 地址的互连网络称为专用互联网本地互联网,或更简单些,就叫做专用网。 因为这些专用地址仅在本机构内部使用。专用IP地址也叫做可重用地址 (reusable address)。

4. 虚拟专用网 VPN

利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN

“专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。

“虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样。

5. 虚拟专用网 VPN 构建

如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密

一个机构要构建自己的 VPN 就必须为它的每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。

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

7. 远程接入 VPN

远程接入 VPN (remote access VPN)可以满足外部流动员工访问公司网络的需求。

在外地工作的员工拨号接入互联网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。

4.8.2  网络地址转换 NAT

1. 网络地址转换的过程

2. 网络地址转换 NAT

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

通过 NAT 路由器的通信必须由专用网内的主机发起。专用网内部的主机不能充当服务器用,因为互联网上的客户无法请求专用网内的服务器提供服务。

3. 网络地址与端口号转换 NAPT

为了更加有效地利用 NAT 路由器上的全球IP地址,现在常用的 NAT 转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个 NAT 路由器上的全球 IP 地址,因而可以同时和互联网上的不同主机进行通信。

使用端口号的 NAT 叫做网络地址与端口号转换NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。

4. NAPT 地址转换表

练习题

1.  在TCP/IP体系结构中,直接为ICMP提供服务协议的是( )

A.PPP        B.IP        C.UDP        D.TCP

答案:B

解析:考察ICMP协议的特点,ICMP是网络层协议,作为数据字段封装在IP分组中

2.  某主机的IP地址是180.80.77.55,子网掩码是255.255.252.0。若该主机向其所在子网发送广播分组,其目的地址可以是()

A.180.80.76.0        B.180.80.76.255        C.180.80.77.255        D.180.80.79.255

第三字节为:01001101   则广播地址为 01001111  答案:D

3.  172.16.10.20/21 请问这个地址的广播地址是多少

172.16.00001010

172.16.10.20/21的地址范围是 172.16.8.0---172.16.15.255

广播地址为 172.16.15.255

计算机网络原理第4章 网络层相关推荐

  1. 计算机网络自考第一章知识点,完整版18版自考04741计算机网络原理知识点第一章...

    <完整版18版自考04741计算机网络原理知识点第一章>由会员分享,可在线阅读,更多相关<完整版18版自考04741计算机网络原理知识点第一章(5页珍藏版)>请在人人文库网上搜 ...

  2. 客户服务器模型请求响应,计算机网络原理-第8章.ppt

    文档介绍: 计算机网络原理working第8章应用层辜落僻画崇喜菲斋膛盼殊阿广越宵渝霸愚郡响棵侣库吊器斋凛挥凰抿二浆计算机网络原理-第8章计算机网络原理-第8章2001-03-25客户/服务器模型(1 ...

  3. 计算机网络原理第七章,北大计算机网络原理第七章.pdf

    北大计算机网络原理第七章 计算机网络计算机网络 北京大学计算中北京大学计算中心 王竹威王竹威 zhuweiw@zhuweiw@ 第七章应用层 应用层要做什么? 应用层要做什么? 180 zhuweiw ...

  4. 计算机网络之第4章 网络层

    计算机网络 第4章.网络层 网络层概述 以下属于网络层范畴的是 IP地址 在因特网使用的TCP/IP协议栈中,核心协议是 IP 网络层提供的两种服务 TCP/IP参考模型的网络层提供的是 无连接不可靠 ...

  5. 计算机网络原理——前三章个人总结

    计算机网络原理 文章目录 计算机网络原理 第一章--概述 1.1三大网络 1.2互联网与物联网的区别 1.3计算机网络与互联网 1.4互联网发展三阶段 1.5互联网标准化工作 1.6互联网组成 1.7 ...

  6. 计算机网络(第四章网络层)

    第四章网络层 4.1_网络层提供的两种服务 (1)虚电路服务 (2)数据报服务 4.2_网络协议 4.2.1_虚拟互连网络 4.2.2_分类的IP地址 (1)分类IP地址 三种分类方法 IP 地址的一 ...

  7. 计算机网络原理第3章 数据链路层 (超全知识点+例题)

    目录 3.1  使用点对点信道的数据链路层 3.1.1  数据链路和帧 3.1.2  三个基本问题 1.  封装成帧 2.  透明传输 3.差错控制 3.2  点对点协议 PPP 3.2.1  PPP ...

  8. 计算机网络复习——第四章网络层

    9月开始学习的一个月,I hope everthing be fine. 相关知识见,感觉比较容易入手 <计算机网络>(谢希仁)内容总结 | JavaGuide 重点知识: TCP/IP ...

  9. 【计算机网络原理·实验·第九章】搭建内网域名解析服务器

    理论部分:[计算机网络]第九章:应用层 企业内部可以不搭建域名解析服务器,直接通过互联网中的域名解析服务器来实现网络交互也可以.但是如果没有内部的域名解析服务器,则相当于内网内每一台设备,如果要在短时 ...

最新文章

  1. 提高面试代码质量的三要素
  2. Json.net/Newtonsoft 3.0 新特性JObject/Linq to Json
  3. leetcode19. 删除链表的倒数第N个节点
  4. 【网络基础】路由表,分组转发算法
  5. 蓝字冲销是什么意思_会计做帐中用红字和蓝字代表的意思是什么
  6. 万稞pw80线切割编程软件_SODICK 沙迪克慢走丝线切割 T 代码在程序NC 中的小应用...
  7. 海康SDK语音转发实现(ubuntu)
  8. 互联网医院软件|互联网医院系统开发|在线问诊提高医疗效率
  9. 服务器无限刷石机推荐,【红石技巧】-世界上最快的刷石机
  10. ubuntu和windows双系统默认启动顺序
  11. Opencv实现去除背景留下前景
  12. 虚拟机WindowServer2003共享文件夹
  13. 常见手机的useragent
  14. python学习 复制图片并重命名
  15. 关闭word/ppt后自动创建并打开新的文档
  16. Karamata 不等式
  17. 怎么用c语言算二进制位数,C语言位段的应用:统计二进制的位数
  18. 漫画 | 我是一条健忘的内存
  19. “FCK编辑器”解析漏洞突破检测上传后门漏洞
  20. android开发,魅蓝note2无法连接到os x 的解决办法

热门文章

  1. Revit二开 批量链接模型
  2. python安装目录怎么更改_pip install 默认安装路径修改
  3. macOS BigSur Parallel Desktop 16 Win10 虚拟机无法连接网络
  4. adam算法效果差原因_深度学习优化器-Adam两宗罪
  5. 法兰(工具零件)与法兰圈_百度百科
  6. C语言教务系统开题报告,C语言教学系统开题报告
  7. vs code上配置tcl/tk语言开发环境
  8. 13. 杳立: 忽悠VC的10大招术
  9. 基于阿里云容器镜像服务加速K8S镜像下载
  10. java class获取type_父类通过泛型获得子类Class类型 以及Type体系