目录
网络层的两种服务
网际协议——核心内容
ICMP、几种常用的路由选择协议、IPv6的主要特点、IP多播概念
4.1 网络层的几个重要概念
4.1.1 网络层提供的两种服务
在计算机网络领域,关于网络层应向运输层提供何种服务(“面向连接”还是“无连接”)曾引发长期争论。争论的核心在于可靠交付的责任应当由谁承担:是网络层还是端系统?
1. 虚电路服务(面向连接)
-
特点:
-
建立连接:通信前必须先建立一条虚电路(Virtual Circuit, VC),类似于电话通信中的拨号过程。
-
资源预留:虚电路建立后,网络会预留所需的资源(如带宽、路由等),确保通信的稳定性。
-
分组传输:分组只需携带虚电路编号,而非完整的目的地址,减少了分组头部的开销。
-
有序传输:分组按序到达终点,且不会丢失、重复或出错。
-
释放连接:通信结束后,必须释放虚电路。
-
-
优点:
-
提供可靠的端到端传输服务,适合对可靠性要求高的应用。
-
分组传输路径固定,减少了路由选择的复杂性。
-
-
缺点:
-
网络设备(如路由器)需要维护大量的连接状态信息,增加了复杂性和成本。
-
资源预留可能导致网络资源的浪费,尤其是在流量不均匀的情况下。
-
-
应用场景:
-
传统电信网(如电话网)采用这种方式,因为终端设备(如电话机)没有智能处理能力,网络必须保证可靠传输。
-
2. 数据报服务(无连接)
-
特点:
-
无需建立连接:每个分组独立发送,无需预先建立连接。
-
独立传输:每个分组独立查找路由,逐跳传送到目的主机,与前后分组无关。
-
无序传输:分组可能出错、丢失、重复或失序到达终点。
-
尽最大努力交付:网络层不提供服务质量的承诺,只负责尽力将分组送达目的地。
-
-
优点:
-
网络设计简单,路由器不需要维护连接状态,降低了设备复杂性和成本。
-
灵活性高,能够适应多种应用需求,尤其是对实时性要求不高但对灵活性要求高的应用。
-
网络资源利用率高,避免了资源预留带来的浪费。
-
-
缺点:
-
不提供可靠的端到端传输,分组可能会丢失、重复或失序。
-
需要运输层(如TCP)来实现可靠的传输,增加了端系统的负担。
-
-
应用场景:
-
互联网采用这种方式,因为端系统(如计算机)具有强大的差错处理能力,可以在运输层实现可靠的传输。
-
3. 争论的实质
-
电信网的经验:电信网的成功经验表明,面向连接的服务可以提供可靠的传输,但这种模式依赖于昂贵的设备和复杂的协议,适用于终端设备简单的场景(如电话机)。
-
互联网的设计思路:互联网的先驱者认为,计算机网络的端系统具有智能,能够处理差错和流量控制,因此网络层应该尽量简单,提供灵活的无连接服务,而将可靠传输的责任交给运输层。
4. 结论
-
互联网的选择:互联网最终选择了数据报服务,网络层提供尽最大努力交付的无连接服务,而运输层(如TCP)负责端到端的可靠传输。这种设计使得网络更加简单、灵活,能够适应多种应用需求,并显著降低了网络设备的成本。
-
历史验证:互联网的成功发展证明了这种设计思路的正确性,尽管早期有支持虚电路服务的标准(如X.25),但这些标准已逐渐被淘汰。
-
虚电路服务:面向连接,提供可靠的端到端传输,适合对可靠性要求高的应用,但网络设备复杂,成本高。
-
数据报服务:无连接,提供灵活的尽最大努力交付,适合互联网的广泛应用,网络简单,成本低,但需要运输层实现可靠的传输。
互联网的成功证明了数据报服务的优势,使得网络层保持简单,而将复杂的可靠传输任务交给运输层处理。
4.1.2 网络层的两个层面
路由器之间传送的信息
1)转发源主机和目的主机之间所传送的数据
2)传送路由信息
1. 数据层面(/转发层面)
转发表
2. 控制层面
远程控制器
4.2 网际协议IP
网际协议IP(Internet Protocol)
TCP/IP系统中最主要的协议之一
互联网标准协议之一
Kahn-Cerf协议
与协议IP配套使用
地址解析协议ARP(Address Resolution Protocol)
网际控制报文协议ICMP(Internet Control Message Protocol)
网际组管理协议IGMP(Internet Group Management Protocol)
网络层==网际层==IP层
4.2.1 虚拟互连网络
网络互连的中间设备
1)转发器(repeater):物理层使用的中间设备
2)网桥或桥接器(bridge)以及交换机:数据层使用的中间设备
3)路由器(router):网络层使用的中间设备
4)网关(gateway):在网络层以上使用的中间设备
网路互连——指用路由器进行网络互连和路由选择
直接交付
间接交付
互联网可以由多种异构网络互连组成
卫星链路——和
无线局域网——
“跳(hop)”
分组在传送途中的每一次转发
“下一跳(next hop)”
4.2.2 IP地址
1. IP地址及其表示方法
整个互联网——单一的、抽象的网络
IP地址——给连接到互联网上的每一台主机(或路由器)的每一个接口,分配一个在全世界范围内是唯一的32位的标识符
由互联网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配
32位的二进制代码
点分十进制记法(dotted decimal notation)
两个字段
1)网络号
标志主机(或路由器)所连接到的网络
唯一的
2)主机号
标志该主机(标志该路由器)
唯一的
“::=”表示“定义为”
指明了连接到某个主机上的一个主机(或路由器)
2.分类的IP地址
A类、B类、C类——单播地址
主机号全0表示网络地址,全1表示广播地址。
分别适用于大、中、小型网络
D类——多播地址
用于多播通信(一对多),不区分网络号和主机号。
E类——保留地址
保留为今后使用
- 资源浪费:分类的IP地址设计存在明显的资源浪费。例如,A类地址块的主机号过多,导致很多单位申请A类地址后大量地址闲置;而C类地址块的主机号过少,无法满足一些单位的需求。
- 地址枯竭:随着互联网的快速发展,IP地址数量迅速消耗,分类的IP地址逐渐无法满足需求。
- 解决方案:为了解决这些问题,后来引入了无分类编址(CIDR)和子网划分等技术,以更灵活地管理和分配IP地址,延长了IPv4地址的使用寿命。
3. 无分类编址CIDR
无分类域间路由选择CIDR(Classless Inter-Domain Routing)
1)网络前缀
指明网络
后缀
n为0~23选取的任意值
斜线记法(slash notation)(/CIDR记法)
2)地址块
- CIDR将具有相同网络前缀的所有连续IP地址组成一个“CIDR地址块”。
-
计算:已知CIDR地址块中的任何一个地址,可以通过网络前缀确定该地址块的最小地址(起始地址)和最大地址,以及地址块中包含的地址数量。
-
最小地址:网络前缀后的主机号全为0。
-
最大地址:网络前缀后的主机号全为1。
-
可指派地址数:通常是
,其中n是网络前缀的长度,减2是为了排除全0和全1的主机号。
-
-
示例:对于
128.14.35.7/20
,其二进制表示为10000000 00001110 00100011 00000111
,网络前缀为前20位,主机号为后12位。最小地址为128.14.32.0
,最大地址为128.14.47.255
,包含个地址,扣除全0和全1的主机号后,可指派地址数为
4094
。
3)地址掩码
-
定义:地址掩码(或子网掩码)由一连串1和接着的一连串0组成,1的个数等于网络前缀的长度。它用于从IP地址中提取网络地址。
-
表示方法:在CIDR记法中,斜线后面的数字就是地址掩码中1的个数。例如,
/20
对应的地址掩码为255.255.240.0
。 -
运算:通过将IP地址和地址掩码进行按位AND运算,可以快速得出网络地址。例如,
128.14.35.7/20
的网络地址是128.14.32.0/20
。
4. IP地址的特点
4.2.3 IP地址与MAC地址
MAC地址——物理地址、硬件地址
IP地址和MAC地址区别
MAC地址
数据链路层使用的地址
IP地址
网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)
4.2.4 地址解析协议ARP
1. ARP的作用
-
主要功能:地址解析协议(ARP, Address Resolution Protocol)用于将IP地址解析为链路层的MAC地址。它解决了在网络层使用IP地址,而在链路层需要使用MAC地址的问题。
-
应用场景:当一台主机或路由器需要与同一局域网内的另一台设备通信时,如果只知道对方的IP地址而不知道其MAC地址,ARP可以帮助找到对应的MAC地址。
2. ARP的工作原理
-
ARP高速缓存:每台主机和路由器都维护一个ARP高速缓存(ARP cache),其中存储了IP地址到MAC地址的映射表。这个缓存可以减少广播ARP请求的频率,提高效率。
-
ARP请求与响应:
-
查找缓存:当主机A需要向主机B发送数据时,首先检查ARP高速缓存中是否有主机B的IP地址到MAC地址的映射。
-
广播ARP请求:如果缓存中没有找到,主机A会广播一个ARP请求分组,内容包括自己的IP地址和MAC地址,并询问目标IP地址(例如209.0.0.6)的MAC地址。
-
接收并响应:局域网上的所有设备都会收到这个ARP请求,只有目标主机B会响应,发送一个ARP响应分组,包含自己的IP地址和MAC地址。
-
更新缓存:主机A收到响应后,将主机B的IP地址和MAC地址的映射添加到自己的ARP高速缓存中,以便后续通信使用。
-
3. ARP的优势
-
减少广播流量:通过ARP高速缓存,主机可以在多次通信中避免频繁广播ARP请求,减少了网络上的广播流量。
-
动态更新:ARP高速缓存中的条目具有生存时间(TTL),通常为10到20分钟。超过生存时间的条目会被删除,确保缓存中的信息是最新和准确的。
4. ARP的应用场景
-
同一局域网内通信:当主机A和主机B在同一局域网内时,主机A可以直接通过ARP解析出主机B的MAC地址,然后发送数据帧。
-
跨局域网通信:当主机A需要与不同局域网上的主机B通信时,主机A首先通过ARP解析出连接在同一个局域网上的路由器的MAC地址,然后将数据包发送给路由器。路由器再通过类似的步骤将数据包转发到目标主机所在的局域网。
5. 为什么需要两种地址(IP地址和MAC地址)
-
异构网络的兼容性:全世界存在各种不同的网络技术,它们使用的MAC地址格式各不相同。使用IP地址可以屏蔽这些差异,使得不同类型的网络能够相互通信。
-
简化寻址:IP地址提供了一个统一的寻址方案,使得全球范围内的主机可以通过IP地址进行通信,而不必关心底层链路层的具体实现。ARP则负责在需要时将IP地址转换为具体的MAC地址。
-
网络层次分离:IP地址属于网络层,适用于全球范围的路由选择;而MAC地址属于链路层,适用于局域网内的直接通信。这种层次分离使得网络设计更加灵活和高效。
6. 逆地址解析协议(RARP)
-
作用:RARP用于使只知道自己的MAC地址的主机能够获取其IP地址。然而,现在的DHCP协议已经包含了RARP的功能,因此RARP已不再常用。
4.2.5 IP数据报的格式
1. IP数据报首部的固定部分中的各字段
1. IP数据报首部的固定部分
IP数据报首部的固定部分长度为20字节,包含多个关键字段,确保数据报在网络中正确传输。以下是各字段的重点内容:
- 版本 (4位):
- 指明IP协议的版本号,当前讨论的是IPv4(版本4)。通信双方必须使用相同的版本。
- 首部长度 (4位):
- 表示首部的长度,单位是32位字长(4字节)。最小值为5(20字节),最大值为15(60字节)。如果首部长度不是4字节的整数倍,需用填充字段补齐。
- 区分服务 (8位):
- 用于提供更好的服务质量(QoS),旧称“服务类型”。在使用区分服务时才起作用,通常不使用。
- 总长度 (16位):
- 表示整个IP数据报(包括首部和数据部分)的总长度,单位为字节。最大值为65535字节。实际应用中,MTU(最大传输单元)限制了数据报的最大长度,例如以太网的MTU为1500字节。
- 标识 (16位):
- 用于唯一标识每个数据报。当数据报分片时,所有分片的标识字段相同,便于重装。
- 标志 (3位):
- MF (More Fragment):指示是否还有后续分片。MF=1表示还有分片,MF=0表示这是最后一个分片。
- DF (Don't Fragment):指示是否允许分片。DF=0允许分片,DF=1禁止分片。
- 片偏移 (13位):
- 表示分片在原数据报中的位置,单位为8字节。除最后一个分片外,其他分片的长度必须是8字节的整数倍。
- 生存时间 (TTL, 8位):
- 表示数据报在网络中的寿命,最初以秒为单位,现改为跳数限制。每经过一个路由器,TTL减1,当TTL为0时,数据报被丢弃。最大值为255。
- 协议 (8位):
- 指出数据报携带的数据使用何种上层协议,如TCP、UDP等。常见协议及其对应的字段值如下:
- ICMP: 1
- TCP: 6
- UDP: 17
- IPv6: 41
- 指出数据报携带的数据使用何种上层协议,如TCP、UDP等。常见协议及其对应的字段值如下:
- 首部检验和 (16位):
- 仅检验IP首部,不包括数据部分。采用简单的反码算术运算进行校验,确保首部在传输过程中未被篡改或损坏。
- 源地址 (32位):
- 发送IP数据报的主机的IP地址。
- 目的地址 (32位):
- 接收IP数据报的主机的IP地址。
2. IP数据报首部的可变部分
-
选项字段:
-
长度可变,从1字节到40字节不等,用于支持排错、测量、安全等功能。选项字段很少使用,且增加了路由器处理的开销。因此,IPv6取消了可变部分,首部长度固定。
-
3. 分片与重组
-
分片原因:当IP数据报的总长度超过下层网络的MTU时,需要进行分片。
-
分片过程:
-
每个分片保留原始数据报的标识字段,确保分片后能正确重装。
-
片偏移字段指示分片在原数据报中的位置,便于接收方重组。
-
MF标志位指示是否还有后续分片,DF标志位控制是否允许分片。
-
4. 生存时间 (TTL) 的作用
-
防止无限循环:TTL字段限制了数据报在网络中的转发次数,防止无法交付的数据报无限制地在网络中循环,浪费资源。
-
跳数限制:TTL的值每经过一个路由器减1,当TTL为0时,数据报被丢弃。初始值通常设置为1-255,具体值取决于应用需求。
4.3 IP层转发分组的过程
4.3.1 基于终点的转发
基于终点的转发
1. 源主机判断
-
检查目的主机是否在同一网络:
-
是:直接通过链路层交付给目的主机。
-
否:将分组发送给连接在本网络上的路由器。
-
2. 路由器处理
-
提取目的IP地址,使用子网掩码进行按位AND运算,得到网络前缀。
-
查找转发表,根据网络前缀确定下一跳路由器或直接交付给目的主机。
-
调用ARP协议,解析下一跳路由器的MAC地址,并将MAC地址写入链路层帧的首部。
-
通过链路层传输分组到下一跳路由器或目的主机。
3. 重复步骤
-
分组在每个路由器上重复上述过程,直到最终到达目的主机。
4.3.2 最长前缀匹配
根据最长前缀匹配的原则,即使128.1.24.1也符合128.1.24.0/22的条件,但由于128.1.24.0/24的前缀更长(即更加具体),因此应该选择这一条目进行匹配。这意味着分组应当通过接口1转发给公司A。
4.3.3 使用二叉线索查找转发表
二叉线索
二叉线索(Binary Trie)是一种用于高效查找无分类域间路由(CIDR)转发表的数据结构,它极大地提高了路由器处理分组的速度。
二叉线索是一种层次化的树形数据结构,其中IP地址的每一位决定了从根节点到叶节点路径上的左右分支选择。
每个叶节点代表一个唯一的网络前缀,并包含该前缀对应的子网掩码和下一跳信息。
加速CIDR转发表的查找
压缩技术
4.4 网际控制报文协议ICMP
(Internet Control Message Protocol)
4.4.1 ICMP报文的种类
ICMP差错报告报文、ICMP询问报文
ICMP报文主要分为两大类:
1)差错报告报文:
-
终点不可达(Type 3):当路由器或主机无法将数据报送达目的地时发送。
-
时间超过(Type 11):当数据报的TTL(生存时间)为零或分片重组超时时发送。
-
参数问题(Type 12):当数据报首部字段值不正确时发送。
-
改变路由(重定向)(Type 5):告知主机更好的下一跳路由器。
2)询问报文:
-
回送请求/回答(Type 8/0):用于测试连通性和获取目的站状态。
-
时间戳请求/回答(Type 13/14):用于测量往返延迟。
4.4.2 ICMP的应用举例
ICMP的应用
-
PING:使用ICMP回送请求和回答报文来测试两台主机之间的连通性。用户可以通过命令行工具(如Windows的
ping
命令)发送ICMP回送请求,并接收回应以评估网络状况。 -
Traceroute:通过发送带有递增TTL值的UDP数据报,逐步记录每个路由器的响应,最终确定从源到目的地的路径及各段的延迟。常用的命令有Unix的
traceroute
和Windows的tracert
。
4.5 IPv6
4.5.1 IPv6的基本首部
IPv6的主要优势
-
更大的地址空间:128位地址,解决了IPv4地址耗尽的问题。
-
灵活的首部格式:通过扩展首部提供更多的功能,同时简化了路由器处理。
-
自动配置:支持即插即用,减少了对DHCP的依赖。
-
改进的安全性和服务质量:支持资源预分配,适用于实时音频/视频等应用。
固定长度:40字节。
字段:
- 版本(Version):4位,标识为6。
- 通信量类(Traffic Class):8位,用于区分数据报的优先级或类别。
- 流标号(Flow Label):20位,用于标识特定的数据流,支持资源预分配。
- 有效载荷长度(Payload Length):16位,指示除首部外的数据长度。
- 下一个首部(Next Header):8位,指示后续的高层协议或扩展首部。
- 跳数限制(Hop Limit):8位,类似于IPv4的TTL,防止数据报无限循环。
- 源地址和目的地址:各128位,分别标识发送方和接收方的地址。
4.5.2 IPv6的地址
- 单播(Unicast):点对点通信。
- 多播(Multicast):一点对多点通信,取代了广播的概念。
- 任播(Anycast):发送到一组节点中的最近一个节点。
IPv6地址使用冒号十六进制记法,并且支持零压缩,使地址表示更加简洁。
4.5.3 从IPv4向IPv6过渡
- 双协议栈(Dual Stack):主机或路由器同时支持IPv4和IPv6,逐步实现过渡。
- 隧道技术(Tunneling):将IPv6数据封装在IPv4数据报中,通过IPv4网络传输,到达目的地后再解封装。
4.5.4 ICMPv6
- 功能增强:不仅用于差错报告,还整合了ARP和IGMP的功能,支持邻站发现(ND)和多播听众交付(MLD)。
- 报文分类:分为差错报文、信息报文、邻站发现报文和组成员关系报文。
4.6 互联网的路由选择协议
4.6.1 有关路由选择协议的几个基本概念
1. 理想的路由算法
理想的路由算法应具备以下特点:
-
正确性和完整性
-
计算简单性
-
自适应性(稳健性)
-
稳定性
-
公平性
-
最优性
实际应用中,路由算法需尽量接近理想状态,但不同应用场景可能对上述特性有不同的侧重。
静态与动态路由选择策略
-
静态路由选择:(/非自适应路由选择),适用于小规模且变化较少的网络。它通过人工配置固定路由,优点是简单、开销小,缺点是无法快速响应网络状态的变化。
-
动态路由选择:(/自适应路由选择),适用于大规模且动态变化的网络。它能根据网络状态自动调整路由,虽然实现复杂且开销较大,但能更好地应对网络变化和故障恢复。
2. 分层次的路由选择协议
为了管理互联网的大规模和复杂性,路由选择协议被划分为两个主要类别:
-
内部网关协议(IGP):用于自治系统(AS)内部的路由选择。常见的IGP包括:
-
RIP(Routing Information Protocol):基于距离向量算法,适合小型网络。
-
OSPF(Open Shortest Path First):基于链路状态算法,适合大型网络,提供更好的性能和可扩展性。
-
IS-IS(Intermediate System to Intermediate System)
-
-
外部网关协议(EGP):用于自治系统之间的路由选择。目前最常用的EGP是:
-
BGP-4(Border Gateway Protocol 版本4):用于自治系统间的路由交换,支持复杂的路由策略和多路径选择。
-
- 自治系统(AS)
-
自治系统(AS)
-
域内路由选择
-
域间路由选择
-
-
分层次路由选择的优势
-
简化路由表
-
保护隐私
-
提高效率
-
4.6.2 内部网关协议RIP
1. RIP的工作原理
RIP(Routing Information Protocol)是一种基于距离向量的分布式路由选择协议,广泛应用于小型互联网中。其主要特点如下:
-
简单性:每个路由器维护到其他所有网络的距离(跳数),并通过定期交换路由信息来更新路由表。
-
距离定义:从一个路由器到直接连接的网络的距离为1;到非直接连接的网络的距离是经过的路由器数加1。最大跳数为15,超过15则认为不可达(距离为16)。
-
信息交换:
-
仅与相邻路由器交换:不与非相邻路由器通信。
-
交换完整的路由表:每个路由器每隔30秒发送一次自己的路由表。
-
及时更新:当网络拓扑发生变化时,立即发送更新信息。
-
-
收敛过程:通过不断的路由信息交换,最终所有路由器都能获得到达每个网络的最短路径。
2. 距离向量算法
RIP使用距离向量算法来更新路由表,具体步骤如下:
-
接收并修改RIP报文:将接收到的RIP报文中的“下一跳”字段改为发送方路由器的地址,并将所有“距离”字段加1。
-
更新路由表:
-
如果路由表中没有该目的网络,则添加新条目。
-
如果已有该目的网络且下一跳是同一路由器,则替换为最新信息。
-
如果已有该目的网络但下一跳不同,且新距离更短,则更新路由表。
-
-
处理超时:如果3分钟内未收到某个相邻路由器的更新信息,则将其标记为不可达(距离设为16)。
3. RIP的优缺点
-
优点:
-
实现简单,配置容易。
-
开销较小,适合小型网络。
-
-
缺点:
-
规模限制:最大跳数为15,不适合大型网络。
-
开销增加:随着网络规模扩大,路由表交换的开销增加。
-
收敛慢:坏消息传播得慢,导致故障恢复时间较长。
-
4. RIP的改进版本
RIPv2(RFC 2453, STD 57)在性能上有所改进,支持以下特性:
-
无分类域间路由选择(CIDR):支持更灵活的地址分配。
-
多播支持:可以通过多播方式发送路由更新。
-
鉴别机制:提供简单的安全验证功能。
5. RIP的传输
RIP报文通过UDP端口520进行传输,包含自治系统号(ASN)、目的网络地址、子网掩码、下一跳路由器地址和距离等信息。一个RIP报文最多可包含25个路由条目,超过时需分多个报文发送。
4.6.3 内部网关协议OSPF
1. OSPF的基本特点
OSPF(Open Shortest Path First)是一种基于链路状态的内部网关协议,旨在克服RIP的局限性。其主要特点如下:
-
开放性
-
最短路径优先
-
链路状态协议:与RIP的距离向量不同,OSPF通过洪泛法(flooding)向整个自治系统(AS)内的所有路由器发送链路状态信息。
关键特性:
-
洪泛法传播信息
-
链路状态数据库
-
灵活的度量
-
快速收敛
-
区域划分
-
负载均衡
-
安全性
-
支持CIDR和VLSM
-
序列号机制
2. OSPF的分组类型
OSPF使用五种类型的分组进行通信:
-
Hello分组:用于发现和维持邻站可达性,每10秒发送一次。
-
数据库描述分组:提供链路状态数据库的摘要信息。
-
链路状态请求分组:请求特定链路状态的详细信息。
-
链路状态更新分组:用洪泛法更新链路状态,是最核心的部分。
-
链路状态确认分组:确认收到的链路状态更新分组。
3. OSPF的传输方式
OSPF分组直接作为IP数据报的数据部分传送,使用IP协议字段值89,不依赖UDP。这种方式减少了通信开销,避免了分片问题。
4. 链路状态数据库同步
-
初始化:新路由器通过Hello分组发现邻居,使用数据库描述分组交换链路状态摘要,再用链路状态请求分组获取缺失的详细信息,最终同步链路状态数据库。
-
更新机制:链路状态发生变化时,路由器立即发送链路状态更新分组,使用可靠的洪泛法确保全网同步。每隔30分钟刷新一次链路状态。
5. 多点接入网络优化
对于以太网等多点接入网络,OSPF引入指定路由器(Designated Router, DR)机制,减少广播信息量。DR代表该网络上的所有路由器发送链路状态信息。
4.6.4 外部网关协议BGP
1. BGP的主要特点
BGP(Border Gateway Protocol)是互联网中自治系统(AS)之间路由选择的关键协议,目前使用的是第4个版本BGP-4。BGP的重要性在于它将全球数以万计的AS连接成一个完整的互联网。其主要特点如下:
-
路径向量协议:BGP不同于内部网关协议(如RIP和OSPF),它采用路径向量(Path Vector)机制,交换可达性信息而非最短路径。
-
策略驱动:BGP允许网络管理员根据政治、安全或经济策略设置路由选择规则,确保路由符合特定需求。
-
大规模网络适应性:BGP能够处理数十万个网络前缀,适用于互联网主干网的复杂环境。
关键特性:
-
eBGP与iBGP:
-
eBGP(外部BGP):用于不同AS之间的边界路由器通信,通过TCP端口179建立半永久性连接。
-
iBGP(内部BGP):用于同一AS内部的路由器间通信,确保所有路由器获得相同的BGP路由信息。iBGP要求AS内部所有路由器全连通。
-
-
避免兜圈子:BGP通过在AS-PATH属性中记录经过的AS号,防止路由环路。如果发现重复的AS号,BGP会丢弃该路由。
-
路由属性:
-
AS-PATH:记录路由经过的AS序列。
-
NEXT-HOP:指定下一跳路由器。
-
LOCAL-PREF:本地优先级,影响路由选择。
-
-
路由选择原则:
-
本地偏好值最高:优先选择LOCAL-PREF值最高的路由。
-
AS跳数最少:在相同LOCAL-PREF时,选择经过AS数量最少的路由。
-
热土豆算法:当上述条件相同时,选择最快离开本AS的路由。
-
最小BGP标识符:最后选择BGP标识符数值最小的路由。
-
-
四种报文类型:
-
OPEN:建立BGP连接,协商参数。
-
UPDATE:通告新路由或撤销旧路由。
-
KEEPALIVE:确认连接状态,保持BGP会话活跃。
-
NOTIFICATION:报告错误并关闭连接。
-
2. BGP路由
BGP路由的一般格式为:“前缀,BGP属性”=“前缀,AS-PATH, NEXT-HOP”。每个BGP路由包含以下要素:
-
前缀:目标网络的CIDR表示。
-
AS-PATH:路由经过的AS序列。
-
NEXT-HOP:下一跳路由器。
3. 自治系统的分类
互联网中的AS可以分为三类:
-
末梢AS(Stub AS):只与直接连接的AS通信,不转发其他AS的流量。多归属AS(Multihomed AS)是连接到多个AS的末梢AS,增加冗余性。
-
穿越AS(Transit AS):提供有偿的流量转发服务,通常拥有高速通信干线。
-
对等AS(Peering AS):两个AS之间免费互换流量,基于事先协商的协议。
4. BGP的路由选择过程
当有多个BGP路由可供选择时,按以下顺序选择最佳路由:
-
本地偏好值最高:优先选择LOCAL-PREF值最高的路由。
-
AS跳数最少:在相同LOCAL-PREF时,选择经过AS数量最少的路由。
-
热土豆算法:当上述条件相同时,选择最快离开本AS的路由。
-
最小BGP标识符:最后选择BGP标识符数值最小的路由。
5. BGP的传输方式
BGP报文作为TCP报文的数据部分传送,使用TCP端口179。四种类型的BGP报文具有相同的首部结构,确保可靠的传输和连接管理。
6. BGP的优势
-
快速收敛:BGP可以迅速响应网络变化,避免“坏消息传播得慢”的问题。
-
灵活性:支持多种路由选择策略,适应复杂的网络环境。
-
安全性:通过TCP连接和路由属性验证,确保路由信息的可靠性和安全性。
4.6.5 路由器的构成
1. 路由器的结构
2. 交换结构
4.7 IP多播
4.7.1 IP多播的基本概念
IP多播(Multicast)是一种一对多的通信方式,允许一个源点同时向多个终点发送数据,从而显著节省网络资源。与单播(每个分组单独发送给每个接收者)相比,多播只需发送一次数据报,由路由器负责复制并转发给所有目标成员。多播特别适用于实时信息传递、软件更新和交互式会议等场景。
-
D类IP地址:多播使用D类IP地址(224.0.0.0到239.255.255.255),标识多播组。
-
硬件多播:在局域网中,多播利用硬件多播功能,无需复制分组,所有组成员都能收到数据。
-
尽最大努力交付:多播数据报不保证一定能够交付给所有组成员,类似于单播IP数据报。
4.7.2 在局域网上进行硬件多播
目的地址是D类IP地址
映射到以太网MAC地址时,前25位固定为01-00-5E-
,后23位来自D类IP地址的后23位。由于存在多对一的映射关系,主机接收到多播数据报后,还需在IP层进行过滤,丢弃非目标数据报。
4.7.3 网际组管理协议IGMP和多播路由选择协议
1. 网际组管理协议IGMP
IGMP(Internet Group Management Protocol)用于管理多播组成员关系,确保多播路由器知道哪些主机加入了某个多播组。IGMP的工作分为两个阶段:
-
加入多播组:主机向多播组的多播地址发送IGMP报文,声明加入该组。多播路由器收到后,通过多播路由选择协议将组成员信息传播给其他路由器。
-
动态维护:多播路由器周期性地探询本地局域网上的主机,确认其是否仍为组成员。若多次探询无响应,则认为主机已离开该组。
IGMP的设计避免了过多的控制信息开销,具体措施包括:
-
使用硬件多播传送IGMP报文,减少不必要的主机接收。
-
探询报文默认每125秒发送一次,且仅需一台主机响应即可。
-
多台主机随机选择响应时间,避免同时发送响应。
2. 多播路由选择协议
多播路由选择协议用于在多播路由器之间传播路由信息,构建多播转发树。常见的多播路由选择方法有:
-
洪泛与剪除:初始时使用洪泛法转发数据报,结合反向路径广播(RPB)策略避免兜圈子,并剪除没有组成员的分支。
-
隧道技术:在不支持多播的网络中,将多播数据报封装成单播数据报,通过“隧道”传输,到达目的地后再恢复为多播数据报。
-
基于核心的发现技术:为每个多播组指定一个核心路由器,构建以核心为根节点的多播转发树,适用于多播组大小变化较大的情况。
常见的多播路由选择协议:
-
DVMRP:最早的多播路由选择协议,基于距离向量算法。
-
CBT:基于核心的转发树,适用于大型自治系统。
-
MOSPF:OSPF的多播扩展,适用于机构内部。
-
PIM-SM:协议无关多播-稀疏模式,适用于组成员分布分散的情况,已成为互联网标准。
-
PIM-DM:协议无关多播-密集模式,适用于组成员集中分布的情况。