Download presentation
Presentation is loading. Please wait.
1
网络互连问题,即多个网络通过路由器互连成一个互连网络的问题。
第 4 章 网络层 网络互连问题,即多个网络通过路由器互连成一个互连网络的问题。
2
主要内容 4.1 网络层提供的两种服务 4.2 网际协议 IP 4.2.1 虚拟互连网络 4.2.2 分类的 IP 地址
4.1 网络层提供的两种服务 4.2 网际协议 IP 虚拟互连网络 分类的 IP 地址 IP 地址与硬件地址 地址解析协议 ARP 与逆地址解析协议RARP IP 数据报的格式 IP 层转发分组的流程
3
主要内容 4.3 划分子网和构造超网 4.3.1 划分子网 4.3.2 使用子网时分组转发 4.3.3 无分类编址 CIDR(构造超网)
4.3 划分子网和构造超网 划分子网 使用子网时分组转发 无分类编址 CIDR(构造超网) 4.4 网际控制报文协议 ICMP ICMP 报文的种类 ICMP 的应用举例
4
主要内容 4.5 因特网的路由选择协议 4.5.1 有关路由选择协议的几个基本概念 4.5.2 内部网关协议 RIP
4.5 因特网的路由选择协议 有关路由选择协议的几个基本概念 内部网关协议 RIP 内部网关协议 OSPF 外部网关协议 BGP 路由器的构成
5
主要内容 4.6 IP 多播 4.6.1 IP 多播的基本概念 4.6.2 在局域网上进行硬件多播
在局域网上进行硬件多播 因特网组管理协议 IGMP 和多播 路由选择协议 4.7 虚拟专用网 VPN 和网络地址转换 NAT 虚拟专用网 VPN 网络地址转换 NAT
6
本章最重要的内容 (1) 虚拟互连网络的概念 (2) IP 地址与物理地址的关系
(1) 虚拟互连网络的概念 (2) IP 地址与物理地址的关系 (3) 传统的分类的 IP 地址(包括子网掩码)和无分类域间路由选择 CIDR (4) 路由选择协议的工作原理
7
4.1 网络层提供的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
4.1 网络层提供的两种服务 在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。 争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
8
电信网的成功经验 让网络负责可靠交付 面向连接的通信方式 建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源。
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点。
9
虚电路服务 H1 发送给 H2 的所有分组都沿着同一条虚电路传送 虚电路 应用层 应用层 运输层 H1 运输层 网络层 H2 网络层
数据链路层 物理层 应用层 运输层 网络层 数据链路层 物理层 H1 H2 虚电路 H1 发送给 H2 的所有分组都沿着同一条虚电路传送
10
虚电路是逻辑连接 虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
请注意,电路交换的电话通信是先建立了一条真正的连接。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
11
因特网采用的设计思路 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。 网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
12
尽最大努力交付的好处 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责(包括差错处理、流量控制等)。 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
13
数据报服务 H1 发送给 H2 的分组可能沿着不同路径传送 应用层 运输层 网络层 数据链路层 物理层 应用层 运输层 网络层 数据链路层
IP 数据报 H1 H2 丢失 H1 发送给 H2 的分组可能沿着不同路径传送
14
虚电路服务与数据报服务的对比 对比的方面 虚电路服务 数据报服务 思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证 连接的建立
必须有 不需要 终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址 分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发 当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化 分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序 端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
15
4.2 网际协议IP 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议:
地址解析协议 ARP (Address Resolution Protocol) 逆地址解析协议 RARP (Reverse Address Resolution Protocol) 网际控制报文协议 ICMP (Internet Control Message Protocol) 网际组管理协议 IGMP (Internet Group Management Protocol)
16
网际层的 IP 协议及配套协议 各种应用层协议 应用层 (HTTP, FTP, SMTP 等) 运输层 TCP, UDP ICMP IGMP
网络层 (网际层) IP RARP ARP 与各种网络接口 网络接口层 物理硬件
17
4.2.1 虚拟互连网络 互连在一起的网络要进行通信,会遇到许多问题需要解决,如: 不同的寻址方案 不同的最大分组长度 不同的网络接入机制
虚拟互连网络 互连在一起的网络要进行通信,会遇到许多问题需要解决,如: 不同的寻址方案 不同的最大分组长度 不同的网络接入机制 不同的超时控制 不同的差错恢复方法 不同的状态报告方法 不同的路由选择技术 不同的用户接入控制 不同的服务(面向连接服务和无连接服务) 不同的管理与控制方式 没有一种单一的网络适应所有用户的需求
18
网络互相连接起来 要使用一些中间设备 中间设备又称为中间系统或中继(relay)系统。 物理层中继系统:转发器(repeater)。
数据链路层中继系统:网桥或桥接器(bridge)。 网络层中继系统:路由器(router)。 网桥和路由器的混合物:桥路器(brouter)。 网络层以上的中继系统:网关(gateway)。
19
网络互连使用路由器 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
网关由于比较复杂,目前使用得较少。 互联网都是指用路由器进行互连的网络。 由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
20
互连网络与虚拟互连网络 路由器 网络 网络 虚拟的IP网 (互联网) 网络 网络 网络 (a) 互连网络 (b) 虚拟互连网络
21
虚拟互连网络的意义 所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。 使用 IP 协议的虚拟互连网络可简称为 IP 网。 使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
22
分组在互联网中的传送 互联网可以由多种异构网络互连组成 H1 5 4 3 2 1 R1 R2 R3 3 2 2 1 1 3 2 2 1 1
3 3 主机 H1 R1 R2 R3 间接交付 间接交付 间接交付 间接交付 R5 R4 间接交付 R5 R4 直接交付 3 3 H2 主机 H2 5 4 3 2 1 互联网可以由多种异构网络互连组成
23
从网络层看 IP 数据报的传送 如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送。 IP 数据报
H1 R1 R2 R3 R4 R5 H2 有了虚拟互连网络的概念后,再讨论在这样的虚拟网络上如何寻址。
24
分类的 IP 地址 1. IP 地址及其表示方法 2. 常用的三种类别的IP地址
25
分类的 IP 地址 1. IP 地址及其表示方法 我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在因特网上的主机(或路由器)的每一个接口分配一个在全世界范围是唯一的 32 位的标识符。 IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配
26
IP 地址的编址方法 经过三个历史阶段 分类的 IP 地址 这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
子网的划分 这是对最基本的编址方法的改进,其标准[RFC 950]在 1985 年通过。 构成超网 这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
27
分类的 IP 地址 将IP地址划分成若干个固定类,每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。 两级的 IP 地址可以记为: IP 地址 ::= { <网络号>, <主机号>} (4-1) ::= 代表“定义为” 在相同的网络号指明的网络范围内,主机号必须是唯一的
28
分类的 IP 地址 A类 B类 C类 D类 E类
29
IP 地址中的网络号字段和主机号字段 A 类地址 net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
30
IP 地址中的网络号字段和主机号字段 A 类地址的网络号字段 net-id 为 1 字节 A 类地址 net-id 8 位 host-id
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 A 类地址的网络号字段 net-id 为 1 字节 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
31
IP 地址中的网络号字段和主机号字段 B 类地址的网络号字段 net-id 为 2 字节 A 类地址 net-id 8 位 host-id
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 B 类地址的网络号字段 net-id 为 2 字节 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
32
IP 地址中的网络号字段和主机号字段 C 类地址的网络号字段 net-id 为 3 字节 A 类地址 net-id 8 位 host-id
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 C 类地址的网络号字段 net-id 为 3 字节 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
33
IP 地址中的网络号字段和主机号字段 A 类地址的主机号字段 host-id 为 3 字节 A 类地址 net-id 8 位 host-id
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 bit host-id 8 位 A 类地址的主机号字段 host-id 为 3 字节 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
34
IP 地址中的网络号字段和主机号字段 B 类地址的主机号字段 host-id 为 2 字节 A 类地址 net-id 8 位 host-id
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 B 类地址的主机号字段 host-id 为 2 字节 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
35
IP 地址中的网络号字段和主机号字段 C 类地址的主机号字段 host-id 为 1 字节 A 类地址 net-id 8 位 host-id
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 位 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 C 类地址的主机号字段 host-id 为 1 字节 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
36
IP 地址中的网络号字段和主机号字段 D 类地址是多播地址 A 类地址 net-id 8 位 host-id 24 位 B 类地址 1
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 bit D 类地址是多播地址 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
37
IP 地址中的网络号字段和主机号字段 E 类地址保留为今后使用 A 类地址 net-id 8 位 host-id 24 位 B 类地址 1
net-id 8 位 host-id 24 位 B 类地址 1 net-id 16 bit E 类地址保留为今后使用 host-id 16 位 C 类地址 1 1 net-id 24 位 host-id 8 位 D 类地址 多 播 地 址 E 类地址 保 留 为 今 后 使 用
38
点分十进制记法 10000000000010110000001100011111 机器中存放的 IP 地址 是 32 位 二进制代码
每隔 8 位插入一个空格 能够提高可读性 将每 8 位的二进制数 转换为十进制数 采用点分十进制记法 则进一步提高可读性
39
2. 常用的三种类别的 IP 地址 IP 地址的使用范围 网络 最大 第一个 最后一个 每个网络 类别 网络数 可用的 可用的 中最大的
网络 最大 第一个 最后一个 每个网络 类别 网络数 可用的 可用的 中最大的 网络号 网络号 主机数 A (27 – 2) ,777,214 B ,383(214 1) ,534 C 2,097,151 (221 1)
40
A类地址 网络号: 一个字节,7位可用,可指派的网络号是126个(27-2)
网络号: 一个字节,7位可用,可指派的网络号是126个(27-2) IP地址中的全0表示“这个(this)”,网络号字段全为0的IP地址是个保留地址,意思是“本网络” 网络号为127( )保留,作为本地软件环回测试(loopback test)本主机的进程之间的通信之用。 若主机发送一个目的地址为环回地址的IP数据报( ),则本机中的协议软件就处理数据报中的数据,而不会把数据发送到任何网络。
41
A类地址 主机号: 3个字节,可指派的主机号是224-2=16777214
全0的主机号字段表示该IP地址是“本主机”所连接的单个网络地址(例如,某主机的IP地址为 ,则该主机所在的网络地址是 ) 全1表示“所有(all)”,因此全1的主机号表示该网络上的所有主机。 IP地址空间共有232( )个地址, A类地址空间占整个IP地址空间的50%
42
B类地址 网络号: 主机号: 2个字节,14位可用,可指派的网络号是214-1 128.0不指派(全0),最小的网络号是128.1
1 0 网络号: 2个字节,14位可用,可指派的网络号是214-1 128.0不指派(全0),最小的网络号是128.1 主机号: 2个字节,可指派的主机号是216-2=65534 扣除全0和全1的主机号 最大网络号? B类地址空间约230个,占整个IP地址空间的25%
43
C类地址 网络号: 主机号: 3个字节,21位可用,可指派的网络号是221-1 192.0.0不指派(全0),最小的网络号是192.0.1
110 网络号: 3个字节,21位可用,可指派的网络号是221-1 不指派(全0),最小的网络号是 主机号: 1个字节,可指派的主机号是28-2=254 扣除全0和全1的主机号 C类地址空间约229个,占整个IP地址空间的12.5%
44
一般不使用的特殊IP地址 网络号 主机号 源地址使用 目的地址使用 代表的意思 可以 不可 在本网络上的本主机 host-id
可以 不可 在本网络上的本主机 host-id 在本网络上的某个主机host-id 全1 只在本网络上进行广播 net-id 对net-id上的所有主机进行广播 127 非全0或非全1 用作本地软件环回测试之用
45
IP 地址的一些重要特点 (1) IP 地址是一种分等级的地址结构。分两个等级的好处是:
第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。 IP地址不能反映任何有关主机位置的地理信息,和电话号码的结构不一样。
46
IP 地址的一些重要特点 (2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
47
IP 地址的一些重要特点 (3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。具有不同网络号的局域网必须使用路由器进行互连。 (4) 所有分配到网络号 net-id 的网络,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
48
图中的网络号就是 IP 地址中的 net-id
在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
49
图中的网络号就是 IP 地址中的 net-id
在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
50
图中的网络号就是 IP 地址中的 net-id
LAN1 R1 LAN3 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id N3 LAN2 N2 R3 N1 R2 B 互联网
51
图中的网络号就是 IP 地址中的 net-id
在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的。 图中的网络号就是 IP 地址中的 net-id LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
52
路由器总是具有两个或两个以上的 IP 地址。
路由器的每一个接口都有一个 不同网络号的 IP 地址。 LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
53
路由器总是具有两个或两个以上的 IP 地址。
路由器的每一个接口都有一个 不同网络号的 IP 地址。 LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
54
路由器总是具有两个或两个以上的 IP 地址。
路由器的每一个接口都有一个 不同网络号的 IP 地址。 LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
55
互联网中的 IP 地址 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。 LAN1 R1 LAN3 N3 LAN2 N2 R3 N1 R2 B 互联网
56
IP 地址与硬件地址 从层次角度看,物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(用软件实现)。 IP地址放在IP数据报的首部,而硬件地址放在MAC帧的首部。
57
4.2.3 IP 地址与硬件地址 首部 应用层数据 网络层及以上 使用 IP 地址 IP 地址 TCP 报文 首部 链路层及以下
使用硬件地址 硬件地址 IP 数据报 首部 尾部 MAC 帧
58
查找路由表 查找路由表 通信的路径 H1→经过 R1 转发→再经过 R2 转发→H2 主机 H1 主机 H2 IP1 硬件地址 IP2
HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 通信的路径 H1→经过 R1 转发→再经过 R2 转发→H2
59
从协议栈的层次上看数据的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1
局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
60
从虚拟的 IP 层上看 IP 数据报的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2
HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
61
在链路上看 MAC 帧的流动 IP 层上的互联网 主机 H1 主机 H2 IP1 硬件地址 IP2 路由器 R1 路由器 R2 HA1
局域网 局域网 局域网 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
62
在 IP 层抽象的互联网上只能看到 IP 数据报 图中的 IP1→IP2 表示从源地址 IP1 到目的地址 IP2
主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
63
路由器只根据目的站的 IP 地址的网络号进行路由选择
主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2 MAC 帧 MAC 帧 MAC 帧
64
在具体的物理网络的链路层 只能看见 MAC 帧而看不见 IP 数据报 IP 层上的互联网 主机 H1 主机 H2 IP 数据报 路由器 R1
HA1 HA3 HA4 HA5 HA6 HA2 MAC 帧 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2
65
IP层抽象的互联网屏蔽了下层很复杂的细节
在抽象的网络层上讨论问题,就能够使用 统一的、抽象的 IP 地址 研究主机和主机或主机和路由器之间的通信 主机 H1 主机 H2 IP 数据报 路由器 R1 路由器 R2 IP1 → IP2 IP1 → IP2 IP1 → IP2 IP1 IP2 IP3 IP4 IP5 IP6 IP 层上的互联网 HA1 HA3 HA4 HA5 HA6 HA2 MAC 帧 从 HA1 到 HA3 从 HA4 到 HA5 从 HA6 到 HA2
66
不同层次,不同区间的源地址和目的地址 在网络层写入IP数据报首部的地址 在数据链路层写入MAC帧首部的地址 源地址 目的地址 从H1到R1
IP1 → IP2 路由器 R1 IP1 → IP2 路由器 R2 IP1 → IP2 HA1 HA3 HA4 HA5 HA6 HA2 局域网 局域网 局域网 不同层次,不同区间的源地址和目的地址 在网络层写入IP数据报首部的地址 在数据链路层写入MAC帧首部的地址 源地址 目的地址 从H1到R1 IP1 IP2 HA1 HA3 从R1到R2 HA4 HA5 从R2到H2 HA6 HA2
67
小结 (1)在IP抽象层的互联网上只能看到IP数据报,数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中。
68
(3)在局域网的链路层,只能看见MAC帧。IP数据报被封装在MAC帧中。MAC帧在不同网络上传送时,首部中的源地址和目的地址要发生变化。这种变化在IP层是看不见的。
69
两个问题 (1)主机或路由器怎样知道应当在MAC帧的首部填入什么样的硬件地址? (2)路由器中的路由表是怎样得出的?
70
4.2.4 地址解析协议 ARP 和 逆地址解析协议 RARP
物理地址 IP 地址 RARP 物理地址 IP 地址
71
一、地址解析协议 ARP Address Resolution Protocol
IP地址是主机在抽象的网络层中的地址,不能直接用来进行通信。不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。 (参见P66)
72
一、地址解析协议 ARP Address Resolution Protocol
IP地址是32位的,MAC地址是48位的,两者之间不存在简单的映射关系。 网络上的主机经常会有变化,网卡也会更新。 因此在主机中应存放一个从IP地址到硬件地址的映射表,并且这个映射表必须能够经常动态更新。
73
地址解析协议 ARP 解决方法: 每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
74
ARP是怎样建立映射表的呢? (1)ARP进程在本局域网上广播发送一个ARP请求分组。
主要内容应当包括自己(即主机A)的IP地址和硬件地址,以及对方(及主机B)的IP地址。 (2)在本局域网上的所有主机上运行的ARP进程都会收到这个ARP请求分组。
75
ARP是怎样建立映射表的呢? (3)主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,其他主机都不理睬这个ARP请求分组。 ARP相应分组的主要内容应包括主机B的IP地址和硬件地址。 (4)主机A收到B的ARP响应分组后,就在其ARP高速缓存中写入B的IP地址和硬件地址的映射。
76
主机 A 广播发送 ARP 请求分组 主机 B 向 A 发送 ARP 响应分组
我是 ,硬件地址是 C0-15-AD-18 我想知道主机 的硬件地址 ARP 请求 ARP 请求 ARP 请求 ARP 请求 X Y Z A B 00-00-C0-15-AD-18 我是 硬件地址是 B-00-EE-0A 主机 B 向 A 发送 ARP 响应分组 ARP 响应 X Y Z A B 00-00-C0-15-AD-18 B-00-EE-0A
77
ARP 高速缓存的作用 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。 名片 减少了网络上的通信量
78
ARP 如何动态更新映射表? 生存时间:高速缓存中的每一个映射地址项目都设置一个生存时间。 凡超过生存时间的项目就从高速缓存中删除掉。
主动通知 例如:A和B通信。 B的网卡坏了,换了一个新的,硬件地址变了。 A从高速缓存中查到B的硬件地址,但这个地址是失效的,通信失败。 过了一段时间,A从高速缓存中删除了B的硬件地址,再通信时则通过广播ARP请求分组,重新找到B。
79
应当注意的问题 ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
80
应当注意的问题(续) 从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
81
使用 ARP 的四种典型情况 (1)发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
82
使用 ARP 的四种典型情况 (3)发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
83
使用 ARP 的四种典型情况 主机找主机:直接交付 主机找路由:间接交付 路由找主机:直接交付 路由找路由:间接交付
84
为什么我们不直接 使用硬件地址进行通信? 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。 连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
85
逆地址解析协议 RARP Reverse Address Resolution Protocol
逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址。 这种主机往往是无盘工作站。 因此 RARP协议目前已很少使用。
86
ARP攻击 拓展资料 ARP协议对网络安全具有重要的意义,但是当初ARP的设计没有考虑到过多的安全问题,给ARP留下很多的隐患,ARP欺骗就是其中一个例子。
87
ARP攻击 拓展资料 ARP攻击原理: 通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
88
ARP攻击 假设有三台主机A,B,C位于同一个交换式局域网中,监听者处于主机A,而主机B,C正在通信。 例子: C B A
C B A
89
ARP攻击 例子: 现在A希望能嗅探到B->C的数据, 于是A就可以伪装成C对B做ARP欺骗——向B发送伪造的ARP应答包,应答包中IP地址为C的IP地址而MAC地址为A的MAC地址。 C B 我的IP地址是 , 物理地址是MACa MACa A
90
ARP攻击 这个应答包会刷新B的ARP缓存,让B认为A就是C。 这样,B想要发送给C的数据实际上却发送给了A,就达到了嗅探的目的。 例子:
IP地址 物理地址 MACc …… …… IP地址 物理地址 MACa …… ……
91
ARP攻击 A在嗅探到数据后,还必须将此数据转发给C, 这样就可以保证B,C的通信不被中断。 例子: C B A 192.168.0.22
C B A
92
ARP攻击 以上就是基于ARP欺骗的嗅探基本原理,在这种嗅探方法中,嗅探者A实际上是插入到了B->C中, B的数据先发送给了A,然后再由A转发给C,其数据传输关系如下所示: B----->A----->C B<----A<------C 于是A就成功于截获到了B发给C的数据。
93
ARP攻击 ARP欺骗攻击有两种可能,一种是对路由器ARP表的欺骗;另一种是对内网电脑ARP表的欺骗,当然也可能两种攻击同时进行。但不管怎么样,欺骗发送后,电脑和路由器之间发送的数据可能就被送到错误的MAC地址上。 ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。
94
防范ARP欺骗攻击的措施 在客户端使用arp命令绑定网关的真实MAC地址 在交换机上做端口与MAC地址的静态绑定。
在路由器上做IP地址与MAC地址的静态绑定 使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC映射表。
95
4.2.5 IP 数据报的格式 IP数据报的格式能说明IP协议具有什么功能。 一个 IP 数据报由首部和数据两部分组成。
在首部的固定部分的后面是一些可选字段,其长度是可变的。
96
IP 数据报的格式 位 4 8 16 19 24 31 首 部 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志
4 8 16 19 24 31 首 部 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 一行4个字节 首 部 数 据 部 分 发送在前 IP 数据报
97
IP 数据报的格式 位 4 8 16 19 24 31 固 定 部 分 版 本 首部长度 区 分 服 务 总 长 度 标 识 标志
4 8 16 19 24 31 固 定 部 分 版 本 首部长度 区 分 服 务 总 长 度 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 首 部 数 据 部 分 发送在前 IP 数据报
98
IP 数据报的格式 位 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 首 部 数 据 部 分 发送在前 IP 数据报
99
1. IP 数据报首部的固定部分中的各字段 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 位
4 8 16 19 24 31 版本——占 4 位,指 IP 协议的版本 目前的 IP 协议版本号为 4 (即 IPv4) 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
100
因此 IP 数据报的首部长度的最大值是 60 字节。
位 4 8 16 19 24 31 首部长度——占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节) 因此 IP 数据报的首部长度的最大值是 60 字节。 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
101
在旧标准中叫做服务类型,但实际上一直未被使用过。 1998 年这个字段改名为区分服务。
位 4 8 16 19 24 31 区分服务——占 8 位,用来获得更好的服务 在旧标准中叫做服务类型,但实际上一直未被使用过。 1998 年这个字段改名为区分服务。 只有在使用区分服务(DiffServ)时,这个字段才起作用。 在一般的情况下都不使用这个字段 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
102
总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 65535 字节。
4 8 16 19 24 31 总长度——占 16 位,指首部和数据之和的长度, 单位为字节,因此数据报的最大长度为 字节。 总长度必须不超过最大传送单元 MTU。 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
103
关于总长度 因为以太网的普遍应用,实际上使用的数据报长度很少有超过1500字节的。
当数据报长度超过网络所容许的最大传送单元MTU时,就必须将过长的数据报进行分片后才能在网络上传送。 这时,总长度字段不是指未分片前的数据报长度,而是指分片后每片的首部和数据长度之和。
104
标识(identification) 占 16 位,
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标识(identification) 占 16 位, 它是一个计数器,用来产生数据报的标识。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
105
标识 IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
当数据报由于长度超过网络的MTU而必须分片时,标识字段的值就被复制到所有的数据报分片的标识字段中。 相同的标识字段的值使分片后的各数据报片在目的站最后能正确地重装成为原来的数据报。
106
标志(flag) 占 3 位,目前只有两位有意义。 标志字段的最低位是 MF (More Fragment)。
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 标志(flag) 占 3 位,目前只有两位有意义。 标志字段的最低位是 MF (More Fragment)。 MF 1 表示后面“还有分片”;MF 0 表示最后一个分片。 标志字段中间的一位是 DF (Don't Fragment) 。 只有当 DF 0 时才允许分片。
107
片偏移(13 位)指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。 位 4 8 16 19 24 31
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 片偏移(13 位)指出:较长的分组在分片后 某片在原分组中的相对位置。 片偏移以 8 个字节为偏移单位。 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
108
【例4-1】 IP 数据报分片 数据部分共 3800 字节 需分片的 数据报 偏移 = 0/8 = 0 首部 字节 0 1400 2800
20字节 需分片的 数据报 偏移 = 0/8 = 0 首部 字节 0 1400 2800 3799 首部 1 首部 2 首部 3 字节 0 1399 1400 2799 2800 3799 数据报片 1 数据报片 2 数据报片 3 偏移 = 0/8 = 0 偏移 = 1400/8 = 175 偏移 = 2800/8 = 350
109
IP数据报中与分片有关的字段的值 总长度 标识 MF DF 片偏移 原始数据报 3820 12345 数据报片1 1420 1 数据报片2
数据报片1 1420 1 数据报片2 175 数据报片3 1020 350
110
再分片 假定数据报片2经过某个网络时还要再进行分片,划分成两个数据报片2-1(800字节)和2-2(600字节)。那么这两个数据报片的总长度、标识、MF、DF和片偏移分别为: 820,12345,1,0,175 620,12345,1,0,275
111
生存时间(8 位)记为 TTL (Time To Live) 表明数据报在网络中的寿命 数据报在网络中可通过的路由器数的最大值。
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分 生存时间(8 位)记为 TTL (Time To Live) 表明数据报在网络中的寿命 数据报在网络中可通过的路由器数的最大值。
112
关于TTL 由发出数据报的源点设置这个字段,目的是防止无法交付的数据报无限制地在因特网上兜圈子,因而白白消耗网络资源。
最初的设计是以秒为单位,每经过一个路由器,就把TTL减去数据报在路由器所消耗的一段时间。若消耗时间小于1秒,就把TTL值减1。当TTL=0时,就丢弃这个数据报(不可交付)。
113
关于TTL 随着技术进步,消耗时间一般都远远小于1秒,后来就把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1,若其减小到0,就丢弃该数据报,不再转发。 现在TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在因特网中至多可经过多少个路由器。 最大值是255。若TTL=1,则表示这个数据报只能在本局域网中传送。
114
协议(8 位)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 协议(8 位)字段指出此数据报携带的数据使用何种协议 以便目的主机的 IP 层将数据部分上交给哪个处理过程 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
115
运输层 TCP UDP ICMP IGMP OSPF 网络层 首部 数 据 部 分 协议字段指出应将数据 部分交给哪一个进程 IP 数据报
116
这里不采用 CRC 检验码而采用简单的计算方法。
位 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 首部检验和(16 位)字段只检验数据报的首部 不检验数据部分。 这里不采用 CRC 检验码而采用简单的计算方法。 生 存 时 间 协 议 首 部 检 验 和 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
117
发送端 接收端 字 1 字 1 16 位 16 位 数 据 报 首 部 字 2 字 2 16 位 16 位 … … 置为全 0 检验和 16 位 检验和 … … 字 n 字 n 16 位 16 位 16 位 反码算术 运算求和 16 位 反码算术 运算求和 取反码 IP 数据报 取反码 16 位 检验和 16 位 结果 若结果为 0, 则保留; 否则,丢弃该数据报 数据部分 不参与检验和的计算 数据部分
118
源地址和目的地址都各占 4 字节 位 4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识
4 8 16 19 24 31 版 本 首部长度 区 分 服 务 总 长 度 固 定 部 分 标 识 标志 片 偏 移 首 部 生 存 时 间 协 议 首 部 检 验 和 源地址和目的地址都各占 4 字节 源 地 址 目 的 地 址 可变 部分 可 选 字 段 (长 度 可 变) 填 充 数 据 部 分
119
2. IP 数据报首部的可变部分 IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。
选项字段的长度可变,从 1 个字节到 40 个字节不等,取决于所选择的项目。 增加首部的可变部分是为了增加 IP 数据报的功能,但这同时也使得 IP 数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。 实际上这些选项很少被使用。
120
4.2.6 IP 层转发分组的流程 路由器如何转发分组?
例子:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。 可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。 但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目。这样就可使路由表大大简化。
121
在路由表中,对每一条路由,最主要的是 (目的网络地址,下一跳地址) 路由器 R2 的路由表 10.0.0.4 20.0.0.7
R1 R2 R3 网 1 网 2 网 3 网 4 1 目的主机所在的网络 下一跳地址 直接交付,接口 1 直接交付,接口 0 路由器 R2 的路由表 R1 R2 R3 链路 1 链路 2 链路 3 链路 4 把网络简化为一条链路
122
查找路由表 根据目的网络地址就能确定下一跳路由 器,这样做的结果是:
IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
123
特定主机路由 这种路由是为特定的目的主机指明一个路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
124
默认路由(default route) 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
这种转发方式在一个网络只有很少的对外连接时是很有用的。 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和因特网连接,那么在这种情况下使用默认路由是非常合适的。
125
只要目的网络不是 N1 和 N2, 就一律选择默认路由, 把数据报先间接交付路由器 R1, 让 R1 再转发给下一个路由器。 R1的路由表
目的网络 下一跳 N 直接 N R2 默认 R1 R1 N1 因特网
126
必须强调指出 IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
当路由器收到待转发的数据报,从路由表中得出下一跳路由器的IP地址后,不是将这个 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
127
分组转发算法 (1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
128
分组转发算法 (4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。 (6) 报告转发分组出错。
129
4.3 划分子网和构造超网 4.3.1 划分子网 1. 从两级 IP 地址到三级 IP 地址
4.3 划分子网和构造超网 划分子网 1. 从两级 IP 地址到三级 IP 地址 在 ARPANET 的早期,IP 地址的设计不够合理。 IP地址空间的利用率有时很低。 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 两级的IP地址不够灵活。
130
三级的 IP 地址 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
131
IP地址 ::= {<网络号>, <子网号>, <主机号>} (4-2)
划分子网的基本思路 (1)一个拥有多个物理网络的单位,可将其划分为多个子网。划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。 (2)从主机号借用若干位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。 IP地址 ::= {<网络号>, <子网号>, <主机号>} (4-2)
132
划分子网的基本思路(续) (3)凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。 最后就将 IP 数据报直接交付目的主机。
133
一个未划分子网的 B 类网络145.13.0.0 网络 145.13.0.0 … … … 我的网络地址 是 145.13.0.0
… R2 网络 R1 … R3 … 所有到网络 的分组均到达此路由器
134
划分为三个子网后对外仍是一个网络 网络 145.13.0.0 所有到达网络 145.13.0.0 的分组均到达 此路由器
… R2 子网 子网 … R1 R3 子网 … 网络
135
划分子网后变成了三级结构 当没有划分子网时,IP 地址是两级结构。 划分子网后 IP 地址就变成了三级结构。
划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。
136
2. 子网掩码 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
2. 子网掩码 问题:路由器如何把数据报转发到相应的子网? 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
137
2. 子网掩码 子网掩码32位,由一串1和跟随的一串0组成。1对应IP地址中的net-id加上subnet-id,0对应host-id。
2. 子网掩码 问题:路由器如何把数据报转发到相应的子网? 子网掩码32位,由一串1和跟随的一串0组成。1对应IP地址中的net-id加上subnet-id,0对应host-id。
138
IP 地址的各字段和子网掩码 net-id host-id 两级 IP 地址 145 . 13 . 3 . 10 net-id
net-id subnet-id host-id 三级 IP 地址 主机号 子网号为 3 的网络的网络号 子网掩码 子网的 网络地址
139
(IP 地址) AND (子网掩码) =网络地址
网络号 net-id 主机号 host-id 三级 IP 地址 net-id host-id subnet-id 逐位进行 AND 运算 网络号 子网号 主机号 子网掩码 子网的 网络地址 net-id subnet-id
140
默认子网掩码 当没有划分子网时,仍然需要使用子网掩码,这是为了方便查找路由表。
因特网标准规定:所有的网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。 如果一个网络没有划分子网,那么该网络的子网掩码就使用默认子网掩码。
141
默认子网掩码 A 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 255.0.0.0
B 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码 C 类 地 址 网络地址 net-id host-id 为全 0 默认子网掩码
142
子网掩码 子网掩码是一个网络或一个子网的重要属性。
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
143
B类地址的子网划分选择 子网号的位数 子网掩码 子网数 子网的主机数 2 255.255.192.0 16382 3
6 8190 4 14 4094 5 30 2046 62 1022 7 126 510 8 254 9 10 11 12 13
144
【例4-2】已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。
(a) 点分十进制表示的 IP 地址 (b) IP 地址的第 3 字节是二进制 (c) 子网掩码是 (d) IP 地址与子网掩码逐位相与 (e) 网络地址(点分十进制表示)
145
【例4-3】在上例中,若子网掩码改为255.255.224.0。试求网络地址,讨论所得结果。
(a) 点分十进制表示的 IP 地址 (b) IP 地址的第 3 字节是二进制 (c) 子网掩码是 (d) IP 地址与子网掩码逐位相与 (e) 网络地址(点分十进制表示) 相同IP地址,不同的子网掩码得出相同的网络地址。 但不同的掩码的效果是不同的。
146
4.3.2 使用子网掩码的分组转发过程 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。
使用子网掩码的分组转发过程 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事。 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。 因此分组转发的算法也必须做相应的改动。
147
路由表的内容 划分子网后,路由表必须包含以下三项内容: 目的网络地址 子网掩码 下一跳地址
148
在划分子网的情况下路由器转发分组的算法 (1) 从收到的分组的首部提取目的 IP 地址 D。
若匹配,则将分组直接交付。 否则就是间接交付,执行(3)。 (3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
149
在划分子网的情况下路由器转发分组的算法 (4) 对路由表中的每一行(目的网络地址 子网掩码 下一跳地址),用子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。 (5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。 (6) 报告转发分组出错。
150
【例4-4】已知互联网和路由器 R1 中的路由表。主机 H1 向 H2 发送分组。试讨论 R1 收到 H1 向 H2 发送的分组后查找路由表的过程。
目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 H1 子网2:网络地址 子网掩码 1 H2 R2 1 子网3:网络地址 子网掩码 H3
151
主机 H1 要发送分组给 H2 因此 H1 首先检查主机 128.30.33.138 是否连接在本网络上
要发送的分组的目的 IP 地址: R1 的路由表(未给出默认路由器) 目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 H1 R1 子网2:网络地址 子网掩码 1 R2 H2 请注意:H1 并不知道 H2 连接在哪一个网络上。 H1 仅仅知道 H2 的 IP 地址是 因此 H1 首先检查主机 是否连接在本网络上 如果是,则直接交付; 否则,就送交路由器 R1,并逐项查找路由表。 1 子网3:网络地址 子网掩码 H3
152
主机 H1 首先将 本子网的子网掩码 255. 255. 255. 128 与分组的 IP 地址 128. 30. 33
主机 H1 首先将 本子网的子网掩码 与分组的 IP 地址 逐比特相“与”(AND 操作) AND 的计算 H1 目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 255 就是二进制的全 1,因此 255 AND xyz = xyz, 这里只需计算最后的 128 AND 138 即可。 R1 子网2:网络地址 子网掩码 128 → 138 → 1 H2 逐比特 AND 操作后: → 128 R2 1 逐比特 AND 操作 子网3:网络地址 子网掩码 H1 的网络地址 H3
153
因此 H1 必须把分组传送到路由器 R1 然后逐项查找路由表
目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 H1 R1 子网2:网络地址 子网掩码 1 H2 R2 1 子网3:网络地址 子网掩码 H3
154
路由器 R1 收到分组后就用路由表中第 1 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作
R1 收到的分组的目的 IP 地址: R1 的路由表(未给出默认路由器) 目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 H1 R1 子网2:网络地址 子网掩码 不一致 1 R2 H2 AND = 不匹配! (因为 与路由表中的 不一致) 1 子网3:网络地址 子网掩码 H3
155
路由器 R1 再用路由表中第 2 个项目的 子网掩码和 128.30.33.138 逐比特 AND 操作
R1 收到的分组的目的 IP 地址: R1 的路由表(未给出默认路由器) 目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 H1 一致! R1 子网2:网络地址 子网掩码 1 R2 H2 AND = 匹配! 这表明子网 2 就是收到的分组所要寻找的目的网络 1 子网3:网络地址 子网掩码 H3
156
【思考】 H1向 H3 发送分组后查找路由表的过程。
R1 的路由表(未给出默认路由器) R1 目的网络地址 子网掩码 下一跳 接口 0 接口 1 R2 子网1: 网络地址 子网掩码 H1 子网2:网络地址 子网掩码 1 H2 R2 1 子网3:网络地址 子网掩码 H3
157
4.3.3 无分类编址 CIDR 1. 网络前缀 划分子网在一定程度上缓解了因特网在发展中遇
到的困难。然而在 1992 年因特网仍然面临三个必 须尽早解决的问题,这就是: B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕! 因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。 整个 IPv4 的地址空间最终将全部耗尽。
158
IP 编址问题的演进 1987 年,RFC 1009 就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高 IP 地址资源的利用率。 在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
159
CIDR 最主要的特点 CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。 CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。 IP 地址从三级编址(使用子网掩码)又回到了两级编址。
160
无分类的两级编址 无分类的两级编址的记法是: IP地址 ::= {<网络前缀>, <主机号>} (4-3)
CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址后面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。 CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。
161
CIDR 地址块 /20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。 这个地址块的起始地址是 。 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。 /20 地址块的最小地址: /20 地址块的最大地址: 全 0 和全 1 的主机号地址一般不使用。
162
/20 表示的地址(212 个地址) 最小地址 所有地址 的 20 位 前缀都是 一样的 最大地址
163
CIDR 记法的其他形式 10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略。
/10 隐含地指出 IP 地址 的掩码是 。此掩码可表示为 掩码中有 10 个连续的 1 255 192
164
CIDR 记法的其他形式 网络前缀的后面加一个星号 * 的表示方法
如 *,在星号 * 之前是网络前缀,而星号 * 表示 IP 地址中的主机号,可以是任意值。
165
路由聚合(route aggregation)
一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。 路由聚合也称为构成超网(supernetting)。 CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码,称为地址掩码)。 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
166
常用的CIDR地址块 前缀长度 地址掩码 包含的地址数 相当于包含分类的网络数 /13 255.248.0.0 512K
8个B类或2048个C类 /14 256K 4个B类或1024个C类 /15 128K 2个B类或512个C类 /16 64K 1个B类或256个C类 /17 32K 128个C类 /18 16K 64个C类 /19 8K 32个C类 /20 4K 16个C类 /21 2K 8个C类 /22 1K 4个C类 /23 512 2个C类 /24 256 1个C类 /25 128 1/2个C类 /26 64 1/4个C类 /27 32 1/8个C类
167
构成超网 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。 这些 C 类地址合起来就构成了超网。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀变长。
168
CIDR 地址块划分举例 某ISP拥有地址块206.0.64.0/18(相当于64个C类网络) 某大学需要800个IP地址
ISP分配给该大学一个地址块 / 22,包括1024个IP地址,相当于4个连续的C类24/地址块 该大学可自由对本校的院系分配地址块,而各院系还可再划分本系的地址块。
169
CIDR 地址块划分举例 ISP 大学 X 因特网 三系 四系 二系 一系 206.0.64.0/18 206.0.68.0/22
/23 /24 /25 /25 /25 /25 /25 /25 /26 /26 /26 /26 /26 /26 /26 /26 三系 四系 二系 一系 单位 地址块 二进制表示 地址数 ISP / * 大学 / * 一系 / * 二系 / * 三系 / * 四系 / *
170
CIDR 地址块划分举例 ISP 大学 X /18 因特网 /22 /23 /24 /25 /25 /25 /25 /25 /25 /26 /26 /26 /26 /26 /26 /26 /26 三系 四系 二系 一系 这个 ISP 共有 64 个 C 类网络。如果不采用 CIDR 技术,则在与该 ISP 的路由器交换路由信息的每一个路由器的路由表中,就需要有 64 个项目。但采用地址聚合后,只需用路由聚合后的 1 个项目 /18 就能找到该 ISP。
171
CIDR 地址块划分举例 ISP 大学 X /18 因特网 /22 /23 /24 /25 /25 /25 /25 /25 /25 /26 /26 /26 /26 /26 /26 /26 /26 三系 四系 二系 一系 同理,这个大学有4个系,如果不使用CIDR,则ISP内的路由器的路由表中,需要4个项目,现在只需要一个 /22即可。
172
2. 最长前缀匹配 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。 网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。 最长前缀匹配又称为最长匹配或最佳匹配。
173
最长前缀匹配举例 收到的分组的目的地址 D = 206.0.71.129 路由表中的项目:206.0.68.0/22 (ISP)
/25 (四系) 查找路由表中的第 1 个项目 第 1 个项目 /22 的掩码 M 有 22 个连续的 1。 M = 因此只需把 D 的第 3 个字节转换成二进制。 M = AND D = X 与 /22 匹配
174
最长前缀匹配举例 收到的分组的目的地址 D = 206.0.71.129 路由表中的项目:206.0.68.0/22 (ISP)
/25 (四系) 再查找路由表中的第 2 个项目 第 2 个项目 /25 的掩码 M 有 25 个连续的 1。 M = 因此只需把 D 的第 4 个字节转换成二进制。 M = AND D = 与 /25 匹配
175
最长前缀匹配 D AND ( ) = / 匹配 D AND ( ) = / 匹配 选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。
176
3. 使用二叉线索查找路由表 当路由表的项目数很大时,怎样设法减小路由表的查找时间就成为一个非常重要的问题。
为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索(binary trie)。 IP 地址中从左到右的比特值决定了从根结点逐层向下层延伸的路径,而二叉线索中的各个路径就代表路由表中存放的各个地址。 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。
177
用 5 个前缀构成的二叉线索 32 位的 IP 地址 唯一前缀
1
178
4.4 网际控制报文协议 ICMP 为了提高 IP 数据报交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 ICMP 不是高层协议,而是 IP 层的协议。 ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
179
ICMP 报文的格式 8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型)
8 16 31 前 4 个字节 都是一样的 类型 代码 检验和 (这 4 个字节取决于 ICMP 报文的类型) ICMP 的数据部分(长度取决于类型) ICMP 报文 首 部 数 据 部 分 IP 数据报
180
4.4.1 ICMP 报文的种类 ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
181
几种常用的ICMP报文类型 ICMP报文种类 类型的值 类型 差错报告报文 3 终点不可达 4 源点抑制(Source quench) 11
时间超过 12 参数问题 5 改变路由(Redirect) 询问报文 8或0 回送请求或回答 13或14 时间戳请求或回答
182
(一)ICMP 差错报告报文共有 5 种 (1) 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
(2) 源点抑制(Source quench):当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
183
ICMP 差错报告报文共有 5 种 (3) 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。
当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
184
ICMP 差错报告报文共有 5 种 (4) 参数问题:当路由器或主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
185
ICMP 差错报告报文共有 5 种 (5) 改变路由 (Redirect):路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。 主机发送数据报,首先查找自己的路由表。主机不跟路由器定期交换路由信息,刚开始的时候,使用默认路由器。 如果默认路由器发现主机发往某个目的地址的数据报的最佳路由是网络上的另一个路由器R时,就把改变路由报文把这情况告诉主机。 于是,该主机就在其路由表中增加一个项目:到某某目的地址应经过路由器R,而不是默认路由器。
186
ICMP 差错报告报文的数据字段的内容 IP 数据报的数据字段 收到的 IP 数据报 IP 数据报 首部 8 字节
为了得到运输层的端口号或发送序号 ICMP 的 前 8 字节 IP 数据报 首部 8 字节 ICMP 差错报告报文 首部 ICMP 差错报告报文 装入 ICMP 报文的 IP 数据报 IP 数据报
187
不应发送 ICMP 差错报告报文 的几种情况 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
188
(二)ICMP 询问报文有两种 回送请求和回答报文:主机或路由器向一个特定的主机发出的询问。收到此询问的主机必须给源点发送ICMP回送回答报文。用来测试目的站是否可达以及了解其有关状态。 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。可用来进行时钟同步和测量时间。
189
4.4.2 ICMP的应用举例 PING (Packet InterNet Groper)
PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
190
PING 的应用举例
191
Traceroute 的应用举例 用来跟踪一个分组从源点到终点的路径,Windows操作系统下的命令是tracert。
该命令从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。 第一个数据报P1的生存时间TTL设置成1。当P1到达路径上的第一个路由器R1时,R1先收下它,接着把TTL减1。由于TTL等于零,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过差错报告报文。
192
Traceroute 的应用举例 源主机接着发送第二个数据报P2,并把TTL设置为2。P2先到达R1,R1把TTL减1,再把P2转发给R2。R2收到P2时TTL为1,但减1后又变为零了。故R2丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。 这样一直继续下去。当最后一个数据报Pn刚刚到达目的主机时,数据报的TTL是1。主机不转发数据报,也不把TTL减1。但因IP数据报中封装的是无法交付的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。
193
Traceroute 的应用举例 到达目的主机所经过的路由器的IP地址,以及到达每一个路由器的往返时间。
194
4.5 因特网的路由选择协议 路由表中的路由是怎样得出的? 4.5.1 有关路由选择协议的几个基本概念 4.5.2 内部网关协议 RIP
4.5 因特网的路由选择协议 路由表中的路由是怎样得出的? 有关路由选择协议的几个基本概念 内部网关协议 RIP 内部网关协议 OSPF 外部网关协议 BGP 路由器的构成
195
1. 理想的路由算法 4.5.1 有关路由选择协议的几个基本概念 算法必须是正确的和完整的。 算法在计算上应简单。
有关路由选择协议的几个基本概念 1. 理想的路由算法 算法必须是正确的和完整的。 算法在计算上应简单。 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。 算法应具有稳定性。 算法应是公平的。 算法应是最佳的。
196
关于“最佳路由” 不存在一种绝对的最佳路由算法。 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
实际的路由选择算法,应尽可能接近于理想的算法。 路由选择是个非常复杂的问题 它是网络中的所有结点共同协调工作的结果。 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。
197
从路由算法的自适应性考虑 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。适用于简单的小网络,用人工配置每一条路由。 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。适用于较复杂的大网络。
198
2. 分层次的路由选择协议 因特网采用分层次的路由选择协议。
2. 分层次的路由选择协议 因特网采用分层次的路由选择协议。 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到因特网上。 划分为较小的自治系统
199
自治系统 AS (Autonomous System)
自治系统 AS 的经典定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
200
因特网有两大类路由选择协议 内部网关协议 IGP (Interior Gateway Protocol)
即在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
201
因特网有两大类路由选择协议 外部网关协议EGP (External Gateway Protocol)
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP的版本4。
202
自治系统和 内部网关协议、外部网关协议 自治系统之间的路由选择也叫做 域间路由选择(interdomain routing),
自治系统 B 自治系统 A 用外部网关协议 (例如,BGP-4) R1 R2 用内部网关协议 (例如RIP) 用内部网关协议 (例如OSPF) 自治系统之间的路由选择也叫做 域间路由选择(interdomain routing), 在自治系统内部的路由选择叫做 域内路由选择(intradomain routing)
203
这里要指出两点 因特网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个属于当作同义词。 IGP 和 EGP 是协议类别的名称。但 RFC 在使用 EGP 这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是 EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别。
204
因特网的路由选择协议 内部网关协议 IGP:具体的协议有多种,如 RIP 和 OSPF 等。
外部网关协议 EGP:目前使用的协议就是 BGP。
205
4.5.2 内部网关协议 RIP (Routing Information Protocol)
1. 工作原理 路由信息协议 RIP 是内部网关协议 IGP中最先得到广泛使用的协议。 RIP 是一种分布式的基于距离向量的路由选择协议。 RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
206
“距离”的定义 从一路由器到直接连接的网络的距离定义为 1。 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
RIP 协议中的“距离”也称为“跳数”(hop count),每经过一个路由器,跳数就加 1。 这里的“距离”实际上指的是“最短距离”
207
“距离”的定义 RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。 RIP 允许一条路径最多只能包含 15 个路由器。
208
RIP 协议的三个要点 仅和相邻路由器交换信息。 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
一个路由器和哪些路由器交换信息?交换什么信息?在什么时候交换信息? 仅和相邻路由器交换信息。 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。 按固定的时间间隔交换路由信息,例如,每隔 30 秒。
209
路由表的建立 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。
以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。 RIP 协议的收敛(convergence)过程较快,即在自治系统中所有的结点都得到正确的路由选择信息的过程。
210
2. 距离向量算法 收到相邻路由器(其地址为 X)的一个 RIP 报文: 先修改此 RIP 报文中的所有项目:
每一个项目都有三个关键数据:目的网络N,距离d,下一跳路由器X (2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤: 若项目中的目的网络不在路由表中,则把该项目加到路由表中。解释2 否则(即目的网络存在) 若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。解释3 否则(即相同的目的网络,下一跳地址不同) 若收到项目中的距离小于路由表中的距离,则进行更新。(解释4) 否则,什么也不做。(解释5)
211
2. 距离向量算法 收到相邻路由器(其地址为 X)的一个 RIP 报文:
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。 (4) 返回。 Bellman-Ford算法或Ford-Fulkerson算法要点: 设X是结点A到B的最短路径上的一个结点。 若路径A->B拆成两段路径A->X和X->B,则每一段路径A->X和X->B也都分别是结点A到X和结点X到B的最短路径。
212
解释1 便于对路由表的更新 为什么要把报文中的所有项目的“下一跳地址”改为X,并且距离要加1?
假设相邻路由器X发来的RIP报文中的某一项是“Net2,3,Y”,意思是“我(即X)经过路由器Y到网络Net2的距离是3”,那么本路由器就可推断出:我经过X到Net2的距离应是3+1=4。 所以,本路由器就将这一项目改为“Net2,4,X”,作为下一步和路由表中原有项目进行比较时使用。
213
解释2 新的目的网络,应当加入到路由表中。 为什么要用把报文中的某个项目加到路由表中?
例如,如果本路由表中没有到目的网络Net2的路由,就要把“Net2,4,X”加入到路由表中。
214
解释3 因为这是最新的消息,应以最新的消息为准。 为什么要用报文中的某个项目替换原有路由表中的项目?
到目的网络的距离有可能减小,也可能增大或不变,但不管怎样,都要用新的项目替换旧的项目。 例如,不管原来路由表中的项目是“Net2,3,X”还是“Net2,5,X”,都要更新为“Net2,4,X”。
215
解释4 使用距离短的路由替换距离长的路由。 根据距离决定是否替换旧项目。
例如,如果路由表中存在到目的网络Net2的路由为“Net2,5,Z”,现在报文中的路由为“Net2,4,X”,就要用后者替换前者,因为距离缩短了。
216
解释5 若距离增大,则不应更新;若距离不变,也不必更新。 但是,如果原来距离小的项目中的路由器坏了,怎么办?
217
例4-5 已知路由器R6有表4-9(a)所示的路由表。现在收到相邻路由器R4发来的路由更新信息,如表4-9(b)所示。试更新路由器R6的路由表。 目的网络 距离 下一跳路由器 Net2 3 R4 Net3 4 R5 … 目的网络 距离 下一跳路由器 Net1 3 R1 Net2 4 R2 Net3 1 直接交付 表4-9(a)R6的路由表 表4-9(b)R4发来的路由更新信息
218
解 目的网络 距离 下一跳路由器 Net1 4 R4 Net2 5 Net3 2 目的网络 距离 下一跳路由器 Net2 3 R4 Net3
… 目的网络 距离 下一跳路由器 Net1 4 R4 Net2 5 Net3 2 …
219
路由器之间交换信息 RIP协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
220
3. RIP2 协议的报文格式 4 字节 地址族标识符 路由标记 4 字节 网络地址 命令 版本 子网掩码 必为 0 下一跳路由器地址
距离 (1-16) 首部 路由部分 路由信息 (20 字节/路由) 可重复出现 最多 25 个 RIP 报文 IP 首部 UDP 首部 UDP 用户数据报 IP 数据报
221
RIP2 的报文 由首部和路由部分组成 RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。如使用IP地址则为2 路由标记填入自治系统的号码,这是考虑使RIP 有可能收到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。
222
RIP 协议的优缺点 RIP 协议最大的优点就是实现简单,开销较小。
路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。 RIP 存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
223
“”表示“直接交付” “1”表示“从本路由器到网 1” “1”表示“距离是 1” R1 说:“我到网 1 的距离是 1,是直接交付。” 正
常 情 况 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 “”表示“直接交付” “1”表示“从本路由器到网 1” “1”表示“距离是 1” R1 说:“我到网 1 的距离是 1,是直接交付。”
224
“R1”表示 “1”表示“从本路由器到网 1” 经过 R1 “2”表示“距离是 2” R2 说:“我到网 1 的距离是 2,是经过 R1。”
正 常 情 况 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 “R1”表示 经过 R1 “1”表示“从本路由器到网 1” “2”表示“距离是 2” R2 说:“我到网 1 的距离是 2,是经过 R1。”
225
R1 说:“我到网 1 的距离是 16 (表示无法到达), 是直接交付。”
正 常 情 况 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 R2 R1 网 1 网 3 网 2 网 1出了故障 1 2 R1 R1 说:“我到网 1 的距离是 16 (表示无法到达), 是直接交付。” 但 R2 在收到 R1 的更新报文之前,还发送原来的报文, 因为这时 R2 并不知道 R1 出了故障。
226
正 常 情 况 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 R2 R1 网 1 网 3 网 2 网 1出了故障 1 2 R1 1 3 R2 R1 收到 R2 的更新报文后,误认为可经过 R2 到达网1,于是更新自己的路由表,说:“我到网 1 的距离是 3,下一跳经过 R2”。然后将此更新信息发送给 R2。
227
R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。
正 常 情 况 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 R2 R1 网 1 网 3 网 2 网 1出了故障 1 2 R1 1 3 R2 1 4 R1 R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。
228
这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。
正 常 情 况 这就是好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往需要较长的时间(例如数分钟)。这是 RIP 的一个主要缺点。 1 1 网 1 网 2 1 2 R1 网 3 R1 R2 网 1 网 2 网 3 R1 R2 网 1出了故障 1 2 R1 1 3 R2 Jiejuefangfa: panduan 1 4 R1 1 5 R2 … … R2 R1 这样不断更新下去,直到 R1 和 R2 到网 1 的距离都增大到 16 时,R1 和 R2 才知道网 1 是不可达的。
229
4.5.3 内部网关协议 OSPF (Open Shortest Path First)
“最短路径优先”是因为使用了 Dijkstra(狄克斯特拉) 提出的最短路径算法SPF OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。 是分布式的链路状态协议。
230
三个要点 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法(flooding)
路由器向所有相邻的路由器发送信息,每一个相邻的路由器又再将此信息发往其所有相邻的路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。 RIP协议仅仅向自己相邻的路由器发送信息。
231
三个要点 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
232
度量 表示费用、距离、时延、带宽等等,也称为“代价”。
233
链路状态数据库 (link-state database)
由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。每个路由器由此可构造出自己的路由表。 OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
234
OSPF 的区域(area) 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域。
每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。 区域也不能太大,在一个区域内的路由器最好不超过 200 个。
235
OSPF 划分为两种不同的区域 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3
R1 R6 网 6 R3 R7 网 1 R5 R9 网 7 网 2 R4 R2 网 3 网 8 R8 网 4 网 5 区域 区域 区域
236
划分区域 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。
在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。 OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为 。主干区域的作用是用来连通其他在下层的区域。
237
主干路由器 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2 R1
网 6 R3 R7 网 1 R5 R9 网 7 网 2 R4 R2 网 3 网 8 R8 网 4 网 5 区域 区域 区域
238
区域边界路由器 至其他自治系统 自治系统 AS 主干区域 0.0.0.0 区域 0.0.0.1 区域 0.0.0.3 区域 0.0.0.2
R1 R6 网 6 R3 R7 网 1 R5 R9 网 7 网 2 R4 R2 网 3 网 8 R8 网 4 网 5 区域 区域 区域
239
OSPF 直接用 IP 数据报传送 OSPF 不用 UDP 而是直接用 IP 数据报传送。
数据报很短的另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
240
OSPF 分组 位 8 16 31 版 本 类 型 分 组 长 度 路 由 器 标 识 符 区 域 标 识 符 检 验 和 鉴 别 类 型
8 16 31 版 本 类 型 分 组 长 度 路 由 器 标 识 符 区 域 标 识 符 检 验 和 鉴 别 类 型 鉴 别 鉴 别 24 字节 OSPF 分组首部 类型 1 至类型 5 的 OSPF 分组 IP数据报首部 OSPF 分组 IP 数据报
241
OSPF分组首部各字段的含义 版本:当前的版本号是2 类型:5种分组类型中的一种 分组长度:包括OSPF首部在内的分组长度,单位为字节
路由器标识符:标识发送该分组的路由器的接口的IP地址 区域标识符:标识分组所属的区域 校验和:差错检测 鉴别类型:0—不用 1—口令 鉴别:类型为0则填入0,为1则填入8个字符的口令
242
OSPF 的其他特点 (1)OSPF 对不同的链路可根据 IP 分组的不同服务类型 TOS 而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。 (2)如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫作多路径间的负载平衡。
243
OSPF 的其他特点 (3)所有在 OSPF 路由器之间交换的分组都具有鉴别的功能,保证仅在可信赖的路由器之间交换信息。
(4)支持可变长度的子网划分和无分类编址 CIDR (5)由于网络中的链路状态经常变化,每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。
244
2. OSPF 的五种分组类型 类型1:问候(Hello)分组,用来发现和维持邻站的可达性。
类型2:数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。 类型3:链路状态请求(Link State Request)分组,向对方请求发送某些链路状态项目的详细信息。
245
2. OSPF 的五种分组类型 类型4:链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。这种分组是最复杂,也是OSPF协议最核心的部分。路由器使用这种分组将其链路状态通知给邻站。 类型5:链路状态确认(Link State Acknowledgment) 分组。
246
不同类型分组的作用 相邻路由器每隔10秒交换一次问候分组
如果40秒没有收到某个相邻路由器发来的问候分组,则认为该相邻路由器是不可达的,应立即修改链路状态数据库,并重新计算路由表。 其他四种分组用来进行链路状态数据库的同步。
247
OSPF的基本操作 问候 确定可达性 问候 数据库描述 数据库描述 达到数据库的同步 数据库描述 数据库描述 链路状态请求 新情况下的同步
R1 R2 问候 确定可达性 问候 达到数据库的同步 数据库描述 数据库描述 数据库描述 数据库描述 新情况下的同步 链路状态请求 链路状态更新 链路状态确认
248
OSPF 使用的是可靠的洪泛法 B A D t1 t2 t3 t4 E 更新报文 R C 上游路由器不转发 R R ACK报文 t R
249
OSPF 的其他特点 为了保持链路状态数据库与全网的状态一致,OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。
250
指定的路由器 (designated router)
多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。 指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。
251
外部网关协议 BGP 边界网关协议BGP (Border Gateway Protocol)是不同自治系统的路由器之间交换路由信息的协议。 BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。 可以将 BGP-4 简写为 BGP。
252
BGP 使用的环境不同 (1)因特网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。
当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。 比较合理的做法是在 AS 之间交换“可达性”信息。 “到达目的网络N,可经过ASx”
253
BGP 使用的环境不同 (2)自治系统之间的路由选择必须考虑有关策略。政治、经济、安全等方面
BGP采用了路径向量(path vector)路由选择协议,与距离向量协议和链路状态协议都有很大区别。
254
BGP 发言人 (BGP speaker) 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。
一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器。
255
BGP 交换路由信息 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。
256
BGP 发言人和 自治系统 AS 的关系 BGP BGP 发言人 AS1 发言人 AS2 BGP 发言人 BGP 发言人 AS3
257
AS 的连通图举例 BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。
当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。 AS1 AS2 AS3 AS4 AS5
258
BGP 发言人交换路径向量 自治系统 AS2 的 BGP 发言人通知主干网的 BGP 发言人:“要到达网络 N1, N2, N3 和 N4 可经过 AS2。” 本地 ISP(AS4) N1, N2 本地 ISP(AS5) N3, N4 地区 ISP (AS2) 主干网 (AS1) 本地 ISP(AS6) N5 地区 ISP (AS3) 本地 ISP(AS7) N6, N7
259
BGP 发言人交换路径向量 主干网还可发出通知:“要到达网络 N5, N6 和 N7 可沿路径(AS1, AS3)。”
本地 ISP(AS4) N1, N2 地区 ISP (AS2) 本地 ISP(AS5) N3, N4 主干网 (AS1) 本地 ISP(AS6) N5 本地 ISP(AS7) N6, N7 地区 ISP (AS3)
260
BGP 协议的特点 BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。
261
BGP 协议的特点 BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。 在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销方面都有好处。
262
BGP-4 共使用四种报文 (1) 打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
(2) 更新(UPDATE)报文,用来通告某一路由的信息,以及列出要撤消的多条路由。 (3) 保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。 (4) 通知(NOTIFICATION)报文,用来发送检测到的差错。 在 RFC 2918 中增加了 ROUTE-REFRESH 报文,用来请求对等端重新通告。
263
BGP 报文具有通用的首部 19个字节 16 2 1 标 记 长 度 类 型 BGP 报文通用首部 BGP 报文主体部分 TCP首部
19个字节 标 记 长 度 类 型 BGP 报文通用首部 BGP 报文主体部分 TCP首部 BGP 报文 IP 首部 TCP 报文
264
路由器在网际互连中的作用 1. 路由器的结构 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
265
典型的路由器的结构 路由选择处理机 3——网络层 2——数据链路层 1——物理层 路由 选择 分组 转发 交换结构 路由选择协议 路由表
输入端口 输出端口 1 2 3 3 2 1 分组处理 … … 转发表 分组 转发 输入端口 输出端口 1 2 3 交换结构 3 2 1
266
两大部分 路由选择:也叫控制部分,核心构件是路由选择处理机。 分组转发:由三部分组成
路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时和相邻路由器交换路由信息而不断地更新和维护路由表。 分组转发:由三部分组成 交换结构 输入端口 输出端口
267
“转发”和“路由选择”的区别 “转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去,仅涉及到一个路由器。 “路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,涉及到多个路由器。 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别,
268
分组转发 网络层: 若接收到的分组是路由器之间交换路由信息的分组,则将其送交给路由选择机。
若收到的是数据分组,则按照分组首部中的目的地址查找转发表,根据得出的结果,分组经过交换结构到达合适的输出端口。
269
输入端口 输入端口的查找和转发功能在路由器的交换功能中是最重要的。
影子副本(shadow copy):把复制的转发表放在每一个输入端口中,由路由选择处理机负责更新。可以避免在路由器中的某一点上出现瓶颈。
270
输入端口对线路上 收到的分组的处理 数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延。
线速:输入端口的处理速率能跟上分组传送到路由器的速率。 输入端口的处理 网络层处理 分组排队 从 线 路 接 收 分 组 交 换 结 构 数据链路层 处理 物理层处理 查表和转发
271
输出端口将交换结构传送来的分组发送到线路
将交换结构传送过来的分组先进行缓存。数据链路层处理模块将分组加上链路层的首部和尾部,交给物理层后发送到外部线路。 输出端口的处理 向 线 路 发 送 分 组 网络层处理 分组排队 交 换 结 构 数据链路层 处理 物理层处理 缓存管理
272
分组丢弃 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
273
2 交换结构 交换结构是路由器的关键构件,将分组从输入端口转移到某个合适的输出端口。 怎样转移?
274
2 交换结构 输入端口接收,中断,复制到存储器,查表,复制到输出端口。受存储器的带宽限制。 I1 O1 I2 存 储 器 O2 I3 O3
2 交换结构 输入端口接收,中断,复制到存储器,查表,复制到输出端口。受存储器的带宽限制。 I1 O1 I2 存 储 器 O2 I3 O3 (a) 通过存储器
275
2 交换结构 共享总线,直接传送到输出端口。 受总线速率的限制。 总线 I1 O1 I2 O2 I3 O3 (b) 通过总线
276
2 交换结构 纵横交换结构,2N条总线。 I1 互连网络 I2 I3 O2 (c) 通过互连网络 O1 O3
277
4.6 IP 多播 4.6.1 IP 多播的基本概念 … … … 不使用多播时需要 发送 90 次单播 视频服务器 M 90 个 R1
30 个 30 个 30个 R2 R3 R4 30 个 30 个 30 个 … … … 共有 90 个主机接收视频节目
278
多播可明显地减少 网络中资源的消耗 … … … 视频服务器 M 发送 1 次多播 1 个 R1 复制 1 个 1 个 1 个 R2 R3
多播组成员 共有 90 个 … … …
279
IP 多播的一些特点 (1) 多播使用组地址—— IP 使用 D 类地址支持多播。多播地址只能用于目的地址,而不能用于源地址。
(2) 永久组地址——由因特网号码指派管理局 IANA 负责指派。 (3) 动态的组成员 (4) 使用硬件进行多播
280
4.6.2 在局域网上进行硬件多播 因特网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。
在局域网上进行硬件多播 因特网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 E。 因此 TCP/IP 协议使用的以太网多播地址块的范围是:从 E 到 E-FF-FF-FF D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。
281
D 类 IP 地址 与以太网多播地址的映射关系 表示多播 这 5 位不使用 D 类 IP 地址 8 16 24 31 1110
8 16 24 31 D 类 IP 地址 1110 E 表示多播 最低 23 位来自 D 类 IP 地址 48 位以太网地址
282
4.6.3 网际组管理协议 IGMP 和多播路由选择协议
1. IP多播需要两种协议 为了使路由器知道多播组成员的信息,需要利用网际组管理协议 IGMP (Internet Group Management Protocol)。 连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议。
283
IGMP 使多播路由器 知道多播组成员信息 128.56.24.34 135.27.74.52 IGMP R1 130.12.14.56
IGMP R3 IGMP R4
284
IGMP 的本地使用范围 IGMP 并非在因特网范围内对所有多播组成员进行管理的协议。
IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。 IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
285
多播路由选择协议 比单播路由选择协议复杂得多
多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。请注意,单播路由选择通常是在网络拓扑发生变化时才需要更新路由。 多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员接入的网络。
286
2. 网际组管理协议 IGMP 1989 年公布的 RFC 1112(IGMPv1)早已成为了因特网的标准协议。
1997 年公布的 RFC 2236(IGMPv2,建议标准)对 IGMPv1 进行了更新。 2002 年 10 月公布了 RFC 3376(IGMPv3,建议标准),宣布 RFC 2236(IGMPv2)是陈旧的。
287
IGMP 是整个网际协议 IP 的一个组成部分
和 ICMP 相似,IGMP 使用 IP 数据报传递其报文(即 IGMP 报文加上 IP 首部构成 IP 数据报),但它也向 IP 提供服务。 因此,我们不把 IGMP 看成是一个单独的协议,而是属于整个网际协议 IP 的一个组成部分。
288
IGMP 可分为两个阶段 第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器。
289
IGMP 可分为两个阶段 第二阶段:因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。 只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。 但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。
290
IGMP 采用的一些具体措施 在主机和多播路由器之间的所有通信都是使用 IP 多播。
多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文。默认的询问速率是每 125 秒发送一次。 当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。
291
IGMP 采用的一些具体措施(续) 在 IGMP 的询问报文中有一个数值 N,它指明一个最长响应时间(默认值为 10秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。对应于最小时延的响应最先发送。 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。
292
3. 多播路由选择 多播路由选择协议尚未标准化。 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组。
3. 多播路由选择 多播路由选择协议尚未标准化。 一个多播组中的成员是动态变化的,随时会有主机加入或离开这个多播组。 多播路由选择实际上就是要找出以源主机为根结点的多播转发树。 在多播转发树上的路由器不会收到重复的多播数据报。 对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。
293
转发多播数据报使用的方法 (1) 洪泛与剪除 这种方法适合于较小的多播组,而所有的组成员接入的局域网也是相邻接的。
一开始,路由器转发多播数据报使用洪泛的方法(这就是广播)。为了避免兜圈子,采用了叫做反向路径广播 RPB (Reverse Path Broadcasting)的策略。
294
RPB 的要点 路由器收到多播数据报时,先检查是否从源点经最短路径传送来的。
若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外),否则就丢弃而不转发。 如果存在几条同样长度的最短路径),那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的 IP 地址最小。
295
反向路径广播 RPB 和剪除 源点 转发多播数据报 R1 收到后即丢弃 R2 R3 剪除没有 组成员的树枝 R5 R4 R8 R6 R7
296
(2) 隧道技术(tunneling) 网 1 (支持多播) 网 2 (支持多播) 不支持多播 的网络 R1 R2 隧道 多播数据报 首部
数 据 网 1 和网 2 中的多播数据报 首部 数 据 隧道中通行的单播 IP 数据报 单播 IP 数据报
297
(3) 基于核心的发现技术 这种方法对于多播组的大小在较大范围内变化时都适合。
这种方法是对每一个多播组 G 指定一个核心(core)路由器,给出它的 IP 单播地址。 核心路由器按照前面讲过的方法创建出对应于多播组 G 的转发树。
298
几种多播路由选择协议 距离向量多播路由选择协议 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)
299
4.7 虚拟专用网 VPN 和网络地址转换 NAT 4.7.1 专用IP地址与专用网
本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向因特网的管理机构申请。节约全球IP地址资源。 二义性问题:本地地址与全球地址重合
300
RFC 1918 指明的专用地址 private address 10.0.0.0 到 10.255.255.255
到 到 这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。 专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
301
专用网 专用互联网:采用专用IP地址的互连网络,也称本地互联网,或专用网。 不同的专用网可采用相同的专用IP地址,并不会引起麻烦。
302
问题:不同地点的专用网之间如何进行通信?
租用电信公司的通信线路为本机构专用。 虚拟专用网:利用公用的因特网作为本机构各专用网之间的通信载体。
303
4.7.2 虚拟专用网VPN Virtual Private Network 虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。
它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路,就好比是架设了一条专线一样,但是它并不需要真正的去铺设光缆之类的物理线路。这就好比去电信局申请专线,但是不用给铺设线路的费用,也不用购买路由器等硬件设备。
304
用隧道技术实现虚拟专用网 网络地址 = 10.1.0.0 网络地址 = 10.2.0.0 (本地地址) (本地地址) 本地地址 全球地址
Y X 隧道 部门 B 部门 A R2 R1 因特网 使用隧道技术 网络地址 = (本地地址) 网络地址 = (本地地址)
305
用隧道技术实现虚拟专用网 加密的从 X 到 Y 的内部数据报 源地址:125.1.2.3 目的地址:194.4.5.6 外部数据报的数据部分
数据报首部 Y X 隧道 部门 B 部门 A R2 R1 因特网 使用隧道技术
306
VPN的三种解决方案 目前很多单位都面临着这样的挑战:分公司、经销商、合作伙伴、客户和外地出差人员要求随时经过公用网访问公司的资源,这些资源包括:公司的内部资料、办公OA、ERP系统、CRM系统、项目管理系统等。现在很多公司通过使用VPN来保证公司总部和分支机构以及移动工作人员之间安全连接。
307
(一)内联网 intranet 由一个机构的部门 A 和 B 的内部网络所构成的虚拟专用网 VPN 又称为内联网(intranet),表示部门 A 和 B 都是在同一个机构的内部。 部门 A 部门 B X Y R1 R2 虚拟专用网 VPN
308
(二)外联网 extranet 一个机构和某些外部机构共同建立的虚拟专用网 VPN 又称为外联网(extranet)。
309
(三)远程接入VPN (remote access VPN)
在外地工作的员工拨号接入因特网,而驻留在员工 PC 机中的 VPN 软件可在员工的 PC 机和公司的主机之间建立 VPN 隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络。
310
小结 虚拟专用网(VPN)通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。 经济、安全、方便。
311
专用网内部的主机使用的是专用IP地址,如果想跟因特网上的主机通信(并不需要加密),怎么办呢?
随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘。事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地址。在其他ISP那里,即使是拥有几百台计算机的大型局域网用户,当他们申请IP地址时,所分配的地址也不过只有几个或十几个IP地址。显然,这样少的IP地址根本无法满足网络用户的需求,于是就产生了NAT技术。
312
4.7.3 网络地址转换 NAT (Network Address Translation)
借助于NAT,专用IP地址的“内部”网络通过路由器发送数据包时,专用地址被转换成合法的IP地址,一个局域网只需使用少量IP地址(甚至是1个)即可实现专用网络内所有计算机与Internet的通信需求。
313
4.7.3 网络地址转换 NAT (Network Address Translation)
需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址 IPG。 所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 IPG 才能和因特网连接。
314
网络地址转换的过程 内部主机 X 用本地地址 IPX 和因特网上主机 Y 通信,所发送的数据报必须经过 NAT 路由器。
NAT 路由器将数据报的源地址 IPX 转换成全球地址 IPG,但目的地址 IPY 保持不变,然后发送到因特网。 NAT 路由器收到主机 Y 发回的数据报时,知道数据报中的源地址是 IPY 而目的地址是 IPG。 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPX,转发给最终的内部主机 X。
315
NAT路由器工作原理 192.168.0.0 全球IP地址 172.38.1.5 源IP地址 源IP地址 172.38.1.5 Y
专用网 全球IP地址 源IP地址 源IP地址 Y X 因特网 NAT 路由器 目的IP地址 目的IP地址 主机A 主机B
316
NAT路由器和普通路由器的区别 普通路由器:转发IP数据报时,对于源IP地址和目的IP地址都是不改变的。
317
NAT分为三种类型 静态NAT(staticNAT)、NAT池(pooledNAT)和端口NAT(PAT)。
其中静态NAT将内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址,而NAT池则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络,端口NAT则是把内部地址映射到外部网络的一个IP地址的不同端口上。
318
NAT的另一个作用 保护专用网络: NAT的使用,使内部网络相应于外部网络不可见化,入侵者要先侵入NAT服务器(或NAT设备),然后利用NAT做跳板,进一步侵入内部网络。这样,对于入侵者就有一定的难度,如果NAT服务器与内部服务器使用不同的操作系统,那么入侵者需要对这两个操作系统都要熟悉才可以做到的,这对于一般的入侵者来说,入侵行为无疑是提高了一个台阶。
319
课后练习 6 9 41 42
320
上机实验 连接在同一个HUB上的两台主机,IP地址不在同一个网段,能否通信? A: 211.86.106.10 255.255.255.0
A: ping
321
接上题:如何使这两台主机能通信? A: B: XXXXXX XXXXXX A: B:
322
如何将一个C类网络划分成4个子网? 网络号: 子网掩码: 地址范围:
Similar presentations