第四章:网络层
网际协议
- 地址解析协议 ARP(Address Resolution Protocol)
- 网际控制协议 ICMP(Internet Control Message Protocol)
- 网际组管理协议 IGMP(Internet Group Management Protocol)

网络使用中间设备进行互联
IP 网络
IP 网络的意义
当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络细节。
若在覆盖全球 IP 网的上层使用 TCP 协议,那么就是现在的互联网。
理解IP地址与物理地址的关系
- IP 地址
虚拟地址、软件地址、逻辑地址。
网络层和以上各层使用。
放在 IP 数据报的首部。 - MAC 地址
固化在网卡的 ROM 中。
硬件地址、物理地址。
数据链路层使用。
放在 MAC 帧的首部。

【图】
【图】
不同使用不同的 MAC 地址。MAC 地址之间的转换非常复杂。对以太网 MAC 地址进行寻址非常困难。
IP 编制解决了这个复杂问题,使得连接到互联网的主机只需要各自拥有一个唯一的 IP 地址,他们之间的通信就像连接在同一个网络上一样方便,即使必须多次调用 ARP 来找到 MAC 地址,但是这个过程有计算机软件自动完成。
在虚拟网络 IP 上使用 IP 地址通信释放方便。
IP 地址
在 TCP / IP 体系中,IP 地址是一个最基本的概念。
没有 IP 地址就无法和网上的其他设备进行通信。
IP 地址的特点
每个 IP 地址都由网络前缀和主机号两部分组成。
IP 地址是一种分等级的地址结构,方便 IP 地址的管理,实现路由聚合,减少转发表占有的存储空间,以及查找转发表的时间。
IP 地址是标志一台主机(或者路由器)和一条链路的接口
当一台主机同时连接到两个网络上时,该主机就必须同时具有相应的 IP 地址,其网络号必须是不同的,这种主机称为多归主机。一个路由器至少应当连接到两个网络,因此一个路由器至少应该有两个不同的 IP 地址。
转发器或交换机连接起来的若干个局域网仍然为一个网络。
按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。转发器或交换机连接起来的若干个局域网具有相同的网络号,它们仍然为一个网络。具有不同网络号的局域网必须使用路由器进行互联。
在 IP 地址中,所有分配到网络前缀的网络都是平等的。
互联网同等对待每一个 IP 地址,不管时范围很小的局域网还是可能覆盖很大地理范围的广域网。
IP 地址及其表示
- IP 地址 32 位二进制代码。分组每 8 位为一组;
互联网上的每台主机(路由器)的每个接口分配在一个全世界唯一的 IP 地址。由互联网名字和数字分配机构 ICANN 进行分配。
一般采用点分十进制表示
- IP 地址采用 2 级结构
IP 地址 ::= {<网络号>, <主机号>}
IP 地址在整个互联网是唯一的,明确指定连接到某个网络上的一个主机。 - 分类的 IP 地址
单播地址:A、B、C
多播地址:D
保留为今后使用:E
- 各类 IP 地址可以指派的范围

指派时要扣除全 0 和全 1 的主机号 - 一般不使用特殊的 IP 地址
- 分类 IP 地址的优点和缺点
优点:管理简单、使用方便、转发分组迅速、划分子网,灵活使用
缺点:设计上不合理:大块地址,浪费地址资源;即使采用划分子网的方法,也无法解决 IP 地址枯竭的问题。
- 无分类编址 CIDR(Classless Inter-Domain Routing)
- 特殊的 CDIR 地址块

ARP协议的作用
地址解析协议 ARP
实现 IP 通信时使用了两个地址
- IP 地址(网络层地址)
- MAC 地址(数据链路层地址)

- ARP 高速缓存(ARP cache)
存放 IP 地址到 MAC 地址的映射表。
映射表动态更新(新增或超时删除)。
减少 ARP 广播的通信量。
为了进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组。
当主机 B 收到 A 的 ARP 请求分组时,就将 A 的 IP 地址及其对应的 MAC 地址写入主机 B 自己的 ARP 告诉缓存中,不必在发送 ARP 请求。
地址解析的过程
IP数据报分片
(P129例4-1)
划分子网
子网掩码
默认地址掩码:
- A 类地址:255.0.0.0
- B 类地址:255.255.0.0
- C 类地址:255.255.255.0
【图】
网络地址 = (二进制的 IP 地址)AND(地址掩码)
【图】
【图】
地址聚合
给出一个地址,能够知道其所在地址块,并会计算地址块中地址的个数,最大最小地址,CIDR地址块划分,给出一个地址块,能够合理划分子网;
理解RIP路由选择协议及其路由表过程
(P155 例4-5)
路由选择协议的工作原理
RIP(距离向量协议)
OSPF(分布式链路状态协议)
路由表查找
(P140 例4-4)
IPV 6
IPV 6 数据报的基本首部
首部长度固定为 40 个字节,称为基本首部。首部字段数 8 个。
- IPV 6 对首部的主要更改

- 40 字节长的 IPv6 基本首部

取消了首部长度字段;取消了服务类型字段;取消了总长度字段,改用有效荷载长度字段;
把 TTL 字段改称为跳数限制字段;取消了协议字段,改用下一个首部字段;取消了检验和字段;取消了选项字段,而用扩展首部来实现选项功能。
通信量 8位,是为了区分不同的 IPv6 数据报的类别或者优先级。目前正在进行不同的通信量类型的实验。
流标号 20 位。“流”是互联网上从特定网络上源点到特定终点的一系列数据报,“流”所经过的路径上的路由器都保证指明的服务质量,所有有属于同一个流的数据报都具有相同的流标号。
有效荷载长度(payload length) 16位。她指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效荷载之内),其最大值是 64 KB。
下一个首部(8 位)相当于 IPv4 的协议字段或着可选字段。
跳数限制(8 位)源站在数据报发送时设置的跳数限制,路由器在转发数据报时将跳数字段中的值域减 1 ,当跳数限制的值为 0 时,就要将此数据报丢弃。
源地址 128 位,四数据报的发送站的 IP 地址。
目的地址 128 位。是数据报的接收站的 IP 地址。IPv6 的六种扩展首部:逐跳选项、路由选择、分片、鉴别、封装安全有效荷载、目的站选项。
IPv4到IPv6过渡策略
方法:逐步演进、向后兼容
向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够成为 IPv4 分组选择路由。
两种过度策略:
- 双协议站


- 隧道技术

路由器的结构
路由选择
分组转发
网际控制报文协议 ICMP
允许主机或者路由器报告差错情况和提供有关异常情况的报告。
ICMP 时互联网的标准协议。
ICMP 不是高层协议,而是 IP 层的协议。
【图】ICMP 报文格式
ICMP 报文有两种种类:差错报告报文、询问报文。
4.6 互联网的路由选择协议
4.6.1 有关路由选择的基本概念

【图】路由选择协议属于网络控制层面的内容
- 最佳路由
不存在一种绝对的最佳路由算法;
所谓“最佳”只能是相对于某一特定要求下要得出较为合理的选择而已。 - 路由选择的复杂性
需要所有节点光同协调工作;
环境不断变化,而这种变化有时无法事先知道;
当网络发生拥塞,很难获得所需要的路由选择信息; - 路由选择算法(自适应)
静态路由选择策略
动态路由选择算法 - 分层次路由选择协议
采用自适应的(动态的)、分布式路由选择协议。
把整个互联网划分为许多较小的自治系统 AS,采用分层次的路由选择协议。
自治系统之间的路由选择 或 域间路由选择(inter domain routing)
自治系统内部的路由选择 或 域内路由选择。
【图】 - 大类路由选择协议
- 内部网关协议(Interior Gateway Protocol)
在一个自治系统内部使用的网络路由选择协议;
常用:RIP、OSPF - 外部网关协议(EXternal Gateway Protocol)
在不同的自治系统之间进行路由选择时使用的协议
最多使用:BGP-4;
- 内部网关协议(Interior Gateway Protocol)
4.6.2 内部网关协议 RIP
【图】内部网关协议 RIP
RIP 工作原理
路由信息协议(Routing Information Protocol)是一种分布式的、基于距离向量的路由选择协议;
互联网的协议标准;
最大优点:简单;
要求网络中的每个路由器都要维护从它自己到其他每一个网络的距离记录;
RIP 距离定义
路由器到之间连接的网络距离 = 1;
路由器到非直接连接的网络距离 = 所经过的路由器数 + 1;
RIP 协议中的距离,也称为跳数(hop count),每经过一个路由器,跳数就加 1;
好路由路径距离最短;一条路径最多包含 15 个路由器超过 16 个时即相当于不可达;
RIP 不能在两个网络之间同时使用多条路由,只选择距离最短的路由。
RIP 协议三个特点
仅和相邻路由器交换信息;
交换的信息是当前本路由器所知道的全部信息,即自己的路由表;
按固定时间间隔交换路由器信息。例如,每隔 30 秒,当网络拓扑发生变化时,路由器也即使向相邻路由器通告拓扑变化后的路由信息。
路由表建立
刚开始工作是空表;然后得到直接连接的网络距离(1),之后每一个路由器也只和数目有限的相邻节点路由器交换并且更新路由协议信息;经过若干次更新,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。RIP 协议收敛过程比较快,收敛就是在自治系统中所有节点都得到正确的路由信息选择的过程。
距离向量算法

【图】距离向量算法
算法基础:Bellman-Ford 算法 / Ford-Fulkerson 算法
【图】路由表的更新
没有新信息:不变;相同下一跳:替换;新路由:增加;不同下一跳:跳数相同不变、变小替换、变大不变;
RIP2 报文

【图】RIP2 报文
组成:首部和路由 2 个部分;
路由部分:若干个路由信息组成、每个路由信息共 20 个字节;
地址族标识符(又称地址类别)字段用来标志所使用的地址协议。
路由标记填入自治系统的号码;
后面为具体的协议,指出某个网络地址、该网络的子网掩码、下一跳路由器以及到此网络的距离。
一个 RIP 报文最多可以包括 25个 路由,故而最大长度为 4 + 20 * 25 = 504 字节。超过后,必须再用一个报文传送。
RIP2 具有简单的鉴别功能;
RIP 协议的特点:好消息传播的快,坏消息传播的慢;
故障消息往往需要较长时间才能传送到路由器。
- 优点:
简单实现、开销小; - 缺点:
网络规模有限、最大距离为 15;
交换的路由信息为完整路由表,开销较大;
坏消息传播得慢,收敛时间过长;
4.6.3 内部网管协议 OSPF
开放最短路径优先(Open Shortest Path First)为克服 RIP 的缺点在 1989 年提出的;
原理很简答,实现很复杂;
使用 Dijkstra 提出的最短路径算法 SPF;
采用分布式的链路状态协议(link state protocol);
现在使用 OSPFv2;
三个主要特点
采用洪泛法(flooding),向本自治系统中所有路由器发送信息;
发送的信息是本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息;
链路状态:说明本路由器都和那些路由器相邻,以及该链路的度量(metric)
当链路状态发生变化或者每隔一点时间(30分钟),路由器才用洪泛法向所有路由器发送此信息;
链路状态数据库(link-state database)
每个路由器最终都能建立;
全网的拓扑结构图;
在全网范围内是一致的(这称为链路状态数据库的同步)
每个路由器使用链路状态数据库中断数据构造自己的路由表
链路状态数据库能够较快的进行更新,使各个路由器能及时更新其路由表。OSPF 更新过程收敛速度更快
OSPF 中的路由器
- 区域边界路由器 ABR(area border router)

- 主干路由器 BR(backone router)
- 自治系统边界路由器 ASBR(AS border router)

【图】OSPF 将自治系统划分为两种不同的区域(area)
主干区域(background area)标识符 = 0.0.0.0,作用 = 用来连通其他下层区域;
- 区域划分的优缺点
优点:减少了整个网络上的通信量;减少了需要维护的状态数量;
缺点:交换信息的种类增多了;使 OSPF 协议更加复杂了;
分层次划分区域的好处:使得每一个区域内部交换路由信息的通信量大大减小,因而使 OSPF 协议能够用于规模很大的自治系统这种;
- 其他特点
对于不同类型的业务可以计算出不同的路由;
可实现多路径的负载均衡;
所有在 OSPF 路由器之间交换的分组都具有鉴别功能;
支持可变长度的子网划分和无分类编制 CIDR;
32 位序号,序号越大,状态就越新,全部空间在600年内不会重复。
- OSPF 的五种分组类型
问候(Hello)分组;数据库描述(Database Description)分组;链路状态请求(Link State Request)分组;链路状态更新分组(Link State Update)分组;链路状态确认(Link State Acknowledgment)分组;

【图】OSPF 分组用 IP 数据报传送
OSPF 工作过程
- 确定临站可达
相邻路由器每隔十秒要交换一次分组;
若有 40 秒没有收到某个相邻路由器发来的问候分组,则可以认为该相邻路由器是不可达的。 - 同步链路状态数据库
同步:指不同路由器的链路状态数据库内容是一样的;
两个同步的路由器叫做完全邻接(fully adjacent)路由器。
不是完全邻接路由器:其虽然是物理上相邻的,但是链路状态数据库并没有达到一致;
- 更新链路状态
只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态;
为确保链路状态数据库与全网的状态保持一致,OSPF 还规定:每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态;
OSPF 链路状态只涉及相邻路由器,与整个互联网的规模并无直接关系,此时当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。OSPF 没有“坏消息传播的慢”的问题,收敛速度快;
4.6.4 外部网关协议 BGP
【略】
4.6.5 路由器的构成
路由器工作在网络层,用于互联网络;
是互联网中的关键设备;
路由器的主要工作:转发分组;
把从某个输入端口接收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
【图】、路由器结构
转发和路由选择的区别
- 转发:
根据转发表将用户的 IP 数据报从合适的端口转发出去;
仅涉及到一个路由器;
转发表是从路由表得出的;
转发表必须包含完成转发功能所必须的信息,每一行必须包含从要到达目的网络到输出端口和某些 MAC 地址信息(如下一跳的以太网地址)的映射。 - 路由选择:
按照路由选择算法,根据网络拓扑的变化情况,动态的改变所选择的路由,并且由此构造整个路由表;
涉及到很多路由器;
路由表一般仅包含从目的网络到下一跳(IP)地址表示的映射;

【图】输入端口对线路上收到的分组的处理
4.7 IP 多播
【略】
4.8 虚拟专用网 VPN 和网络地址转换 NAT
【略】
4.9 多协议标签交换 MPLS
【略】
4.10 软件定义网络 SDN 简介
【略】

