计算机网络_网络层
网络层
1. 网络层概述
1)任务
实现网络互连,进而实现数据包在各网络之间的传输
2)解决问题
- 网络层向运输层提供怎样的服务(可靠还是不可靠)
- 网络层寻址问题
- 路由选择问题
- 人工配置,适用于小型网络
- 路由协议,适用于大型网络
2. 网络层提供的两种服务
1)面向连接的虚电路服务
- 可靠通信由网络来保证
- 必须建立网络的连接——虚电路VC
- 通信双方沿着已建立的虚电路发送分组
- 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的标号(构成虚电路的每一段链路都有一个虚电路编号)。
- 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组正确到达接收方(无差错按序到达、不丢失、不重复)。
- 通信结束后,需要释放之前所建立的虚电路
- 很多广域分组交换网都使用面向连接的虚电路服务。
虚电路表示这是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而非物理上的连接。采用电路交换的电话通信则是建立一条真正的连接。
2)无连接的数据报服务
- 可靠通信应当由用户主机来保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码、丢失、重复和失序
- 由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做的比较简单,而且价格低廉
- 因特网采用了这种涉及思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
3)对比
| 对比方面 | 虚电路服务 | 数据报服务 |
|---|---|---|
| 思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
| 连接的建立 | 必须建立网络层连接 | 不需要建立网络层连接 |
| 终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
| 分组的转发 | 属于同一个虚电路的分组均按照同一路由进行转发 | 每个分组可走不同的路由 |
| 当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生该笔那 |
| 分组的顺序 | 总是按发送顺序到达重点 | 到达重点不一定按发送顺序 |
| 服务质量保证 | 可以将通信资源提前分配给每一个虚电路,容易实现 | 很难实现 |
3. MAC地址、IP地址以及ARP协议


1)MAC地址
当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路地址。
在每个主机发送的帧中必须携带标识发送主机和接受主机的地址。由于这类地址是用于媒体介入控制MAC(Media Access Control),因此这类地址被称为MAC地址。
MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储区EEPROM中,因此MAC地址也被称为硬件地址;
MAC地址有时也被称为物理地址。
一般情况下,用户主机会包含两个网络设配器:有限局域网适配器(有线网卡)和无线局域网适配器(无线网卡)。每个网络适配器都有一个全球唯一的MAC地址。而交换机和路由器往往拥有更多的网络接口,所以会拥有更多的MAC地址。综上所述,严格来说,MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识。
2)IP地址
IP地址是因特网(Internet)上的主机和路由器所使用的地址。用于标识两部分信息:网络编号和主机标号。
网络编号:标识因特网上数以万计的网络
主机编号:标识同一个网络上不同主机(或路由器各接口)
a. 与MAC的联系
- 如果只是一个单独的网络,不接入因特网,可以只使用MAC地址(这不是一般用户的应用方式)
- 如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用
3)数据报转发过程中IP地址和MAC地址的变化情况
- 数据报转发过程中源IP地址和目的IP地址保持不变
- 数据报转发过程中源MAC地址和目的MAC地址逐个链路(或逐个网络)改变

4)地址解析协议ARP
a. 概述
每一台主机都设有一个ARP高速缓存,里面有本局域网上的可主机和路由器的IP地址到硬件地址的映射表。
在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。
b. 高速缓存类别
动态:自动获取,生命周期默认为两分钟
静态:手工设置,不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。
c. ARP的作用范围
逐段链路或逐个网络使用

d. 案例
情况:主机B向主机C发送消息,但是在ARP高速缓存中到不到地址映射,这时候,主机B会广播ARP请求报文





4. IP数据报首部格式

1)版本
占4比特,标识IP协议的版本。
通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4、
2)首部长度、可选字段和填充字段
首部长度
占4比特,表示IP数据报首部的长度,该字段的取值以4字节为单位。
最小十进制取值为5,表示IP数据报首部只有20字节固定部分。
最大十进制取值为15,表示IP数据报首部包含
可选字段
长度从1个字节到40个字节不等。用来支持排错、测量和安全等措施。
可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用。
填充字段
确保首部长度为4字节的整数倍。使用全0进行填充。
3)区分服务
占8比特,用来获得更好的服务。
只有在使用区分服务时,该字段才起作用。一般情况下都不使用该字段。
4)总长度
占16比特,表示IP数据报的总长度。(首部+数据载荷)
最大取值为十进制的65535,以字节为单位。
5)标识、标志和片偏移
标识
占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。
IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
标志
占3比特,各比特含义如下:
- DF位:1标识不允许分片;0表示允许分片
- MF位:1表示"后面还有分片",0表示"这是最后一个分片"
- 保留位:必须为0
片偏移
占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位。
片偏移以8个字节为单位。
IPv4的数据报的长度需要小于等于最大传输单元值

示例


6)生存时间TTL
占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。
作用:防止IP数据报在网络中永久兜圈

7)协议
占8比特,指明IPv4数据报的数据部分是何种协议数据单元。
常用的一些协议和相应的协议字段值如下。
| 协议名称 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
|---|---|---|---|---|---|---|
| 协议字段值 | 1 | 2 | 6 | 17 | 41 | 89 |
8)首部检验和
占16比特,用来检测首部在传输过程中是否出现拆错。比CRC检验码简单,称为因特网检验和。
9)源IP地址和目的IP地址
各占32比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
5. IPv4概述
1)IPv4地址
因特网上的每台主机(或路由器)的每一个接口都有一个在全世界范围内是唯一的32比特的标识符
2)点分十进制表示法

3)十进制转二进制

6. 分类编址的IPv4地址
1) 分类情况

2)A类地址

3)B类地址

4)C类地址

7. 无分类编址的IPv4地址
1)无分类域间路由选择CIDR
CIDR使用"斜线记法",或称CIDR记法。即在IPv4地址后面加上斜线"/",在斜线后面写上网络前缀所占的比特数量。

CIDR实际上是将网络前缀都相同的连续的IP地址组成一个"CIDR地址块"。
知道一个CIDR地址块的任何一个地址,就可以知道该地址块的全部细节:最大地址,最小地址,地址数量,聚合某类网络,地址掩码

2)路由聚合
- 网络前缀越长,地址块越小,路由越具体
- 若路由器查表转发分组时发现有多条路有可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

8. IPv4地址的应用规划
1)定长的子网掩码FLSM
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
- 子网划分方式不灵活:只能划分出2^n个子网
案例:

2)变长的子网掩码VLSM
- 使用不同的子网掩码来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
- 子网划分方式灵活:可以按需分配
案例:

9.IPv4数据报的发送和转发过程
示例前提:

1)源主机判断目的主机是否在相同网络
将目的网络与子网掩码相与,得到目的网络的网络地址,判断是否和自己的网络地址相同,相同则判定在同一个网络,反之则不同

2)同一个网络间的发送——直接交付
同一个网络之间可以直接通信
3)不同网络的发送——间接交付
不同网络之间的通信,会将本网络的数据包传输给默认网关,由默认网关(路由)帮主机将IP数据包转发出去
默认网关:子网与外网连接的设备,通常是一个路由器
路由器转发步骤
检查IP数据报首部是否出错:
若出错,则直接丢弃该IP数据报并通告源主机
若没有出错,则进行转发
根据IP数据报的目的地址在路由表中查找匹配的条目:
若找到匹配的条目,则转发给条目中指示的下一跳
若找不到,则丢弃该IP数据报并通告源主机

TIP: 广播只局限于同一个网络,广播无法到达其他网络
10. 静态路由配置以及可能产生的路由环路问题
1)静态路由
是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
2)默认路由
是对IP数据包中的目的地址找不到存在的其他路由时,路由器所选择的路由。
任务:转发IP数据报到因特网
3)路由环路问题
- 配置错误
- 聚合了不存在的网络
- 网络故障
a. 解决问题
配置黑洞路由
11. 路由选择协议概述
1)因特网采用分层次的路由选择协议
- 域间路由选择 使用外部网关协议EGP (BGP)
- 域内路由选择 使用内部网关协议IGP (RIP OSPF)

2)路由器的基本结构
- 路由器是一种具有多个输入端口和多个输出端口的专用计算机
- 其任务是转发分组
- 可以划分为两部分:路由选择部分和分组转发部分
- 各端口具有输入缓存区和输出缓存区
- 输入缓存区用来暂存新进入路由器但还来不及处理的分组
- 输出缓存区用来暂存已经处理完毕但还没来得及发送的分组

3)路由选择
- 核心构件是路由选择处理机
- 主要任务是根据所选定的路由选择协议协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
- 如果送交网络层的分组是路由器之间交换路由信息的路由报文,则把这种报文分组送交路由选择处理机,路由选择处理及根据分组的内容来更新自己的路由表。
路由表和转发表
- 路由表一般仅包含从目的网络到下一跳的映射
- 路由表需要对网络拓扑变化的计算最优化
- 转发表是从路由表得出的
- 转发表的结构应当使查找过程最优化
4)分组转发部分
由三部分组成:交换结构、一组输入端口和一组输出端口
12. 路由信息协议RIP
1)定义
是内部网关协议IGP中最先得到广泛使用的协议。
路由信息协议(RIP) 是一种距离矢量协议,这表示它根据跳数来判断到达目标的最佳路由。
2)衡量标准——距离向量
- 距离计算规则
- 路由器到直连网络的距离定义为1
- 路由器到非直连网络的距离定义为所经过的路由器加1
- 允许一条路径最多只能包含15个路由器。"距离"等于16时相当于不可达。因此,RIP只适用于小型互联网。
- RIP认为好的路由就是”距离短”的路由,也就是所通过路由器数量最少的路由。
- 当到达统一目的网络有多条"距离相等"的路由时,可以进行等价负载均衡。

3)RIP三要点
- 和谁交换信息 仅和相邻路由表交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
4)RIP工作过程
路由器刚开始工作时,只知道自己到直连网络的距离为1

每个路由器仅和相邻路由器周期性地交换并更新路由信息

若干次交换和更新后,每个路由器都知道本AS内各网络的最短距离和下一跳地址,称为收敛

5)RIP路由条目的更新规则
- 到达目的网络,相同下一跳,最新消息,更新
- 到达目的网络,不同下一跳,新路由优势,更新
- 到达目的网络,不同下一跳,等价负载均衡
- 到达目的网络,不同下一跳,新路由劣势,不更新

13. 开放最短路径有限OSPF
1)定义
使用了Dijkstra的最短路径算法SPF --> 从算法上保证不会产生路由环路
2)衡量标准
基于链路状态
链路状态是指本路由器和哪些路由器相邻,以及相应链路的"代价"。
代价用来表示费用、距离、时延、带宽等等。这些都由网络管理人员来决定

3)Hello分组
OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
Hello分组分装在IP数据包中,发往组播地址224.0.0.5

发送周期为10秒
40秒未收到来自邻居路由器Hello分组,则认为该邻居路由器不可达
4)链路状态通告LSA(Link State Advertisement)
使用OSPF的每个路由器都会产生链路状态通告LSA。LSA中包含以下内容:
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
LSA被封装在链路状态更新LSU中,采用洪泛法发送

5)链路状态数据库LSDB
- 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA
- 通过各路由器洪泛发送封装由自己LSA的LSU分组,各路由器的LSDB最终将达到一致

- 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即构建各自的路由表。

6)OSFP五种分组类型
问候(Hello)分组
用来发现和维护路由器的可达性
数据库描述(Database Description)分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
链路状态请求(Link State Request)分组
向邻居路由器请求发送某些链路状态项目的详细信息。
链路状态更新(Link State Update)分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
链路状态确认(Link State Acknowledgment)分组
这是对链路状态更新分组的确认分组。
7)OSPF的基本工作过程

8)DR/BDR
OSPF在多点接入网络中路由器邻居关系的建立
- 选举指定路由器DR和备用的指定路由器BDR
- 所有的非DR/BDR只与DR/BDR建立邻居关系
- 非DR/BDR之间通过DR/BDR交换信息

9)区域
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干各更小的范围,叫做区域(Area)

14. 边界网关协议BGP
1)因特网采用分层次的路由选择协议

2)外部网关协议
外部网关协议是AS之间使用的路由协议。是一个在自治系统网络中两个邻近的网关主机间交换路由信息的协议。
3)BGP定义
BGP是自治系统间的路由协议,BGP交换的网络可达性信息提供了足够的信息来检测路由回路并根据性能优先和策略约束对路由进行决策。
4)衡量标准
- 自治系统之间的路由选择必须考虑相关政策(政治,经济,安全等)
- BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由
5)BGP发言人
- 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP发言人"
- 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
- 在次TCP连接上交换BGP报文以建立BGP会话
- 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻战或对等战。
- BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。

6)BGP适用于多级结构的因特网

7)BGP-4的四种报文
- OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
- UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由
- KEEPALIVE(保活)报文:用来周期性地证实邻站的连通信
- NOTIFICATION(通知)报文:用来发送检测到的差错
15. 网际控制报文协议ICMP
1)ICMP差错报文
ICMP差错报文共有以下五种
- 终点不可达
- 源点抑制
- 时间超过
- 参数问题
- 改变
a. 终点不可达
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
b. 源点抑制
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
c. 时间超过
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值域减1。
若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
另外,当终点再预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
d. 参数问题
当路由器或目的主机收到IP数据报后,根据首部种的检验和字段发现首部再传输过程种出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
e. 改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
2)ICMP询问报文
常用的ICMP询问报文有以下两种
回送请求和回答
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送回送回答报文。
这种询问报文用来测试目的站是否可达及了解其有关状态。
时间戳请求和回答
ICMP时间戳请求报文时请某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32位的字段。
这种询问报文用来进行时钟同步和测量时间。
3)ICMP应用
a. 分组网间探测PING
- 用来测试主机或路由器间的连通性
- 应用层直接使用网际层的ICMP(没有通过运输层的TCP或UDP)
- 使用ICMP回送请求和回答报文
b. 跟踪路由
- 用来测试IP数据报从源主机到达目的主机要通过哪些路由器
- Windows版版本
- tracert命令
- 应用层直接使用网际层ICMP
- 使用了ICMP回送请求和回答报文以及容错报告报文
- Unix版本
- traceroute命令
- 在运输层使用UDP协议
- 仅使用ICMP差错报告报文
16. 虚拟专用网VPN与网络地址转换NAT
1) VPN
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网
由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量。因此,虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、再因特网上使用的公有地址

过程演示:10.1.0.3 --> 10.2.0.3 数据传输

a. VPN种类
内联网VPN
同一机构内不同部门的内部网络所构成的虚拟专用网VPN又陈为内联网VPN

外联网VPN
有时一个机构的VPN需要有某些外部机构(通常就是合作伙伴)参加进来,这样的VPN就称为外联网VPN
远程接入VPN
在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入到因特网,运行驻留在员工PC中的VPN软件,在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种VPN称为远程接入VPN
2)NAT
NAT能够大量使用内部专用网址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
a. 内部网络(192.168.0.2)与因特网中网络(217.75.230.30)的传输

由内网传输到NAT路由器
NAT路由器传输到因特网的网络地址

网络地址传输到NAT路由器
NAT路由器查询内网地址和外网地址映射,传输到专用网中的目的网络地址

该转换方法存在一个问题:如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
b. NAPT(网络地址与端口号转换NAPT)
由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据,因此可以利用传输层的端口号和IP地址一起进行转换。
这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫做网络地址与端口号转换NAPT。
案例

c. 外网不能首先发起通信
17. IPv6
1)为什么会有IPv6?
32位IPv4地址空间已分配殆尽,CIDR、NAT治标不治本
使用IPv6从根本解决问题
支持Qos
Qos(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。
2)IPv6数据报格式

版本:指明了协议版本,总是6.
优先级:区分数据报的类别和优先级。
流标签:"流"是互联网上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签。
有效载荷长度:扩展首部和数据部分的大小
下一个首部:标识下一个扩展首部或上层协议首部
跳数限制:相当于IPv4的TTL
3)与IPv4的对比
- IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间
- IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间
- IPv6将IPv4的可选字段移初首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6支持即插即用(即自动配置),不需要DHCP协议
- IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片
- ICMPv6:附加报文类型"分组过大"
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
4)IPv6地址标识形式
一般形式
冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
压缩形式
4BF5:0000:0000:0000:BA5F:039A:000A:2176
→ 4BF5:0:0:0:BA5F:39A:A:2176
4个0可变成1个0,前导0可以省略,每个位置需要有一个数。
**零压缩:**一连串连续的0可以被一对冒号取代
FF05:0:0:0:0:0:0:B3
→ FF05::B3
双冒号表示法在一个地址中仅可出现一次
5)IPv6基本地址类型
a. 单播
一对一通信 可做源地址+目的地址
b. 多播
一对多通信 只能做目的地址
c. 任博
一对多中的一个通信 可做目的地址
6)IPv4向IPv4过渡的策略
a. 双栈协议
双栈协议技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。
这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。
- 如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。
- 如果这台设备是计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
b. 隧道技术
IP IN IP,将IPv6的首部作为数据打包到IPv4的数据
通过使用互联网络的基础设施在网络之间传递数据的方式。
使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。

18. IP多播
1)多播
当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始赋值和分发,是一种点对多点传输方式。
2)单播和组播对比
共有九十个主机接收视频节目
单播

多播

3)IP组播地址
IP组播地址让原设备能够分组发送给一组设备。属于多播组的设备将被分配一个组播IP地址(一群共同需求主机的相同标识)。
组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址标识一个组播组。只能用作分组的目的地址。源地址总是单播地址。
- 组播数据报也是”尽最大努力交付“,不提供可靠交付,应用于UDP
- 对组播数据包不产生ICMP差错报文
- 并非所有D类地址都可以作为组播地址。

4)硬件组播
(局域网中
同单播地址一样,组播IP地址也需要相应组播MAC地址在本地网络中实际传送帧。组播MAC地址以16进制指01-00-5E打头,余下的6个十六进制位是根据IP组播组地址的最后23为转换得到的。
TCP/IP协议使用的以太网多播地址的范围是:
从01-00-5E-00-00-00到01-00-5E-7F-FF-FF

收到多播数据报的主机,还要再IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃
5)IGMP协议与组播路由选择协议
a. IGMP (一个路由器内部
IGMP协议让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组。

IGMP协议栈位置

IGMP工作阶段
某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要成为该组的成员。
本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
本地组播路由器周期性探寻本地局域网上的主机,以便知道这些主机是否还是组播组的成员。
只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不在把这组的成员关系发给其他的组播路由器。
组播路由器知道的成员关系只是所连接的局域网中由于组播组的成员
b. 组播路由选择协议(多个路由器
组播路由协议目的是找出以源主机为根节点的组播转发树。

构造树可以避免在路由器之间兜圈子。
对不同的多播组对应不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
c. 使用的三种算法:
- 基于链路状态的路由选择
- 基于距离-向量的路由选择
- 协议无关的组播(稀疏/密集)