4. 网络层
4.1 概述
网络层的主要任务:将分组从源主机经过多个网络和多段链路传输到目的主机,可以将该任务划分为分组转发和路由选择两种重要的功能
4.2 网络层提供的两种服务
4.2.1 面向连接的虚电路服务
- 虚电路表示这是一条逻辑上的连接,分组沿着这条逻辑连接按照存储转发方式传送,而不是真正建立了一条物理连接
- 分组的首部仅在连接建立阶段使用完整的目的主机地址 ,之后每个分组的首部只需要携带一条虚电路编号即可
- 虚电路服务采用的是分组交换方式!!

4.2.2 无连接的数据报服务
TCP/IP
使用的就是这种简单灵活的、无连接的、不可靠的数据报服务- 核心思想:可靠通信应由用户主机来保证
- 由于网络自身不提供端到端的可靠传输服务,这就使得网络中的路由器可以做得比较简单,大大降低了网络造价
- 这种设计思想的运行方式灵活、能够适应多种应用。因特网能够发展到今日的规模,充分证明了当初采取这种设计思想的正确性

4.2.3 IP地址
概念
- 网际协议(
Internet Protocol
,IP
)是TCP/IP
体系结构网际层中的核心协议 IPv4
地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
4.2.4 分类编址的IP

4.2.5 划分子网的IP
分类编址方法不够灵活且容易造成大量地址浪费,划分子网编址方法对其进行改进("打补丁")
划分子网案例
4.2.6 无分类编制的IP
无分类域间路由选择(
C
lassless I
nter-D
omain R
outing,CIDR
)
练习

路由聚合
找出共同前缀,其余位取0
4.3 IP数据报的发送和转发过程
IP数据报的发送和转发过程
主机发送IP数据报
- 判断目的主机是否与自己在同一个网络:
- 若在同一个网络,则属于直接交付,直接发送给目的主机
- 若不在同一个网络,则属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发)
路由器转发IP数据报
- 检查IP数据报首部是否出错:
- 若出错,则直接丢弃该IP数据报并通告源主机
- 若没有出错,则进行转发
- 根据IP数据报的目的地址在路由表中查找匹配的条目:
- 若找到匹配的条目,则转发给条目中指示的下一跳;
- 若找不到,则丢弃该IP数据报并通告源主机;

路由器不转发广播IP数据报,即路由器隔离广播域,如果因特网中数量巨大的路由器收到广播IP数据报后都进行转发,则会造成巨大的广播风暴,严重浪费因特网资源
- 中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域
- 网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域
- 路由器工作在网络层,既隔离冲突域,也隔离广播域
4.4 静态路由配置
1. 静态路由的配置

2. 默认路由
-
默认路由:默认路由条目中的目的网络
0.0.0.0/0
,其中0.0.0.0
表示任意网络,而网络前缀"/0"(相应的地址掩码为0.0.0.0
)是最短的网络前缀 -
特定主机路由:特定主机路由条目中的目的网络
192.168.2.1/32
,其中192.168.2.1
是特定主机的IP地址,而网络前缀"/32"(相应地址掩码为255.255.255.255
)是最长的网络前缀 -
路由器在查找转发表转发IP数据报时,遵循"最长前缀匹配"的原则,因此默认路由匹配优先级最低,特定主机路由条目的匹配优先级最高

3. 路由环路
- 错误配置静态路由有可能导致路由环路问题
- 为了防止IP数据报在环路中永久兜圈,在IP数据报首部设有生存时间TTL,TTL为0时会被丢弃
路由环路问题产生原因:
- 路由配置错误

- 聚合了不存在的IP地址
需要给不存在的IP地址配置黑洞路由,防止IP数据报转发到其他路由器
- 网络故障
可以在网络发生故障时添加一条针对该IP的黑洞路由,待网络正常后又将其设置为失效状态
4.5 路由选择协议
- 路由选择分为两类
静态路由选择 | 动态路由选择 |
---|---|
采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目 | 路由器通过路由选择协议自动获取路由信息 |
静态路由选择简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化 | 动态路由选择比较复杂、开销比较大,但能较好地适应网络状态的变化 |
静态路由选择一般只在小规模网络中采用 | 动态路由选择适用于大规模网络 |
- 因特网采用分层次的路由选择协议
因特网是全球最大的互联网,它所采取的路由选择协议具有以下三个主要特点:
- 自适应:因特网采用动态路由选择,能较好地适应网络状态的变化。
- 分布式:因特网中的各路由器通过相互间的信息交互,共同完成路由信息的获取和更新。
- 分层次:将整个因特网划分为许多较小的自治系统(
Autonomous System,AS
),在自治系统内部和外部采用不同类别的路由选择协议,分别进行路由选择

4.6 RIP
路由信息协议(Routing Information Protocol,RIP
)是内部网关协议中最先得到广泛使用的协议之一
- 相关概念
-
RIP使用跳数(
Hop Count
)作为度量(Metric
)来衡量到达目的网络的距离-
RIP将路由器到直连网络的距离定义为1
-
RIP将路由器到非直连网络的距离定义为所经过的路由器数加1
-
RIP允许一条路径最多只能包含15个路由器,距离等于16时相当于不可达,因此RIP只适用于小型互
联网
-

-
RIP认为好的路由就是"距离短"的路由,也就是所通过路由器数量最少的路由,和传输速率和物理距离等无关
-
RIP的3个重要特点

-
RIP的工作原理
- 基本流程
2. RIP路由条目的更新规则
3. 坏消息传播的慢 -
RIP的优缺点
优点 | 缺点 |
---|---|
实现简单,路由器开销小 | RIP限制了最大RIP距离为15 这就限制了使用RIP的自治系统AS的规模 |
如果一个路由器发现了RIP距离更短的路由,那么这种更新信息就传播得很快,即"好消息传播得快" | 相邻路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也随之增大 |
"坏消息传播得慢",使更新过程的收敛时间过长。因此,对于规模较大的自治系统AS,应当使用OSPF 协议 |
4.7 OSPF
1. 基本概念
开放最短路径优先(
Open Shortest Path First,OSPF
)协议是为了克服路由信息协议RIP的缺点在1989年开发出来的
- "开放"表明
OSPF
协议不是受某一厂商控制,而是公开发表的- "最短路径优先"是因为使用了Dijkstra提出的最短路径算法(
Shortest Path First,SPF
)
2. 特点
OSPF
是基于链路状态的,而不像RIP
是基于距离向量的OSPF
基于链路状态并采用最短路径算法计算路由,从算法上保证了不会产生路由环路OSPF
不限制网络规模,更新效率高,收敛速度快
3. 相关概念
-
链路状态(
Link State,LS
)是指本路由器都和哪些路由器相邻,以及相应链路的"代价(cost)",类似RIP中的距离"代价"用来表示费用、距离、时延和带宽等,这些都由网络管理人员来决定

OSPF
路由器邻居关系的建立和维护- 如果在死亡倒计时为0时还未收到邻居的问候分组,则认为该邻居不可达,
- 在接受到邻居的问候分组后,刷新死亡倒计时为40s
- 路由器每10s会向邻居发送问候分组

- 链路状态数据库(
Link State Database,LSDB
)

使用
OSPF
的各路由器,基于链路状态数据库LSDB进行最短路径优先计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表(根据链路状态数据库得出全局带权有向图,使用Dijkstra算法得出个路由器的最短路径)

OSPF
的五种分组类型- 类型1,问候(
Hello
)分组:用来发现和维护邻居路由器的可达性。 - 类型2,数据库描述(
Database Description
)分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息 - 类型3,链路状态请求(
Link State Request
)分组:向邻居路由器请求发送某些链路状态项目的详细信息。 - 类型4,链路状态更新(
Link State Update
)分组:路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态 - 类型5,链路状态确认(
Link State Acknowledgment
)分组:这是对链路状态更新分组的确认分组。
- 类型1,问候(
4. 基本工作原理
采用划分区域的方法,虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了,但这样做能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模更大的自治系统AS
4.8 BGP
1. 基本概念
- 边界网关协议 (
Border Gateway Protocol,BGP
)属于外部网关协议EGP
这个类别,用于自治系统AS
之间的路由选择协议- 由于在不同AS内度量路由的"代价"(距离、带宽、费用等)可能不同,因此对于AS之间的路由选择,使用统一的"代价"作为度量来寻找最佳路由是不行的
- AS之间的路由选择还必须考虑相关策略(政治、经济、安全等)
总结:
BGP
只能是力求寻找一条能够到达目的网络且比较好的路由(即不能兜圈子),而并非要寻找一条最佳路由
在配置BGP时,每个AS的管理员要选择至少一个路由器作为该AS的"BGP发言人"
一般来说,两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器
使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站(neighbor)或对等站(peer)
BGP发言人除了运行BGP协议外,还必须运行自己所在AS所使用的内部网关协议IGP,例如RIP或OSPF
BGP发言人交换网络可达性的信息,也就是要到达某个网络所要经过的一系列自治系统
当BGP发言人相互交换了网络可达性的信息后,各BGP发言人就根据所采用的策略,从收到的路由信息中找出到达各自治系统的较好的路由,也就是构造出树形结构且不存在环路的自治系统连通图
!important
BGP会话主要有以下几种类型:
- 内部BGP (iBGP) 会话:在同一个自治系统(AS)内部的BGP路由器之间建立的会话。IBGP的主要特点是它不改变AS-path属性,因为它不跨越AS边界。
- 外部BGP (eBGP) 会话:在不同AS之间建立的BGP会话。EBGP会增加AS-path属性,记录路径中经过的AS。
- 联盟外部BGP (confed-EBGP) 会话:这种会话类型是在同一个联盟内部不同成员AS之间的BGP会话,用于在更大的AS内部划分更小的自治区域并管理路由信息。
2. 四种BGP报文
4.9 IPv4分组格式

字段 | 含义 |
---|---|
版本 | 长度为4个比特,用来表示IP协议的版本,通信双方使用的IP协议的版本必须一致,目前广泛使用的IP协议的版本号为4(即IPv4) |
首部长度 | 长度为4个比特,该字段的取值以4B为单位,用来表示IPV4数据报的首部长度。 最小取值为二进制的0101,即十进制的5,再乘以4字节单位,表示IPv4数据报首部只有20字节固定部分 最大取值为二进制的1111,即十进制的15,再乘以4字节单位,表示IPV4数据报首部包含20字节固定部分和最大40字节可变部分 |
总长度 | 长度为16个比特,该字段的取值以字节为单位,用来表示IPv4数据报的长度(首部长度+数据载荷长度) 最大取值为二进制的16个比特1,即十进制的65535(很少传输这么长的IPv4数据报) |
标识 | 长度为16个比特,属于同一个IPv4数据报的各分片数据报应该具有相同的标识 |
标志 | 最低位(More Fragment,MF ) MF=1表示本分片后面还有分片 MF=0表示本分片后面没有分片 中间位(Don't Fragment,DF ) DF=1表示不允许分片 DF=0表示允许分片 最高位为保留位,必须设置为0 |
片偏移 | 长度为16个比特,该字段的取值,以8B为单位,用来指出分片IPv4数据报的数据载荷偏移其在原IPv4数据报的位置有多远,只能为整数,否则必须调整前一个分片长度 |
生存时间 | 长度为8个比特,最大取值为二进制的11111111,即十进制的255。该字段的取值最初以秒为单位。因此,IPv4数据报的最大生存时间最初为255秒。路由器转发IPv4数据报时,将其首部中该字段的值减去该数据报在路由器上所耗费的时间,若结果不为0就转发,否则就丢弃 生存时间字段后来改为以"跳数"为单位,路由器收到待转发的IPv4数据报时,将其首部中的该字段的值减1,若结果不为0就转发,否则就丢弃 |
协议 | 长度为8个比特,用来指明IPv4数据报的数据载荷是何种协议数据单元PDU ![]() |
首部检验和 | 长度为16个比特,用于检测IPv4数据报在传输过程中其首部是否出现了差错 IPv4数据报每经过一个路由器,其首部中的某些字段的值(例如生存时间TTL、标志以及片偏移等)都可能发生变化,因此路由器都要重新计算一下首部检验和 |
源IP地址和目的IP地址 | 长度都为32个比特,用来填写发送(接收)IPv4数据报的源(目的)主机的IPv4地址 |

MTU
:最大传送单元,超过最大传送单元的长度的IP数据报必须分片


4.10 IPv6分组格式
1.数据报格式

2.IPv4和IPv6的区别
!important
1.IPv6将地址从32位(4B)扩大到128位(16B) ,更大的地址空间( 2 96 2^{96} 296)。
2.IPv6将IPv4的校验和字段彻底移除 ,以减少每跳的处理时间。
3.IPv6将IPv4的可选字段移出首部,变成了扩展首部 ,成为灵活的首部格式,路由器通常不对扩展首部进行检查,
大大提高了路由器的处理效率。
4.IPv6支持即插即用(即自动配置) ,不需要DHCP协议。
5.IPv6首部长度必须是8B的整数倍 ,IPv4首部是4B的整数倍:
6.IPv6只能在主机处分片 ,IPv4可以在路由器和主机处分片。
7.ICMPv6:附加报文类型"分组过大"
8.IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
9.IPv6取消了协议字段,改成下一个首部字段。
10.IPv6取消了总长度字段,改用有效载荷长度字段。
11.IPv6取消了服务类型字段。
3.从IPv4向IPv6过渡
- 双栈协议:一台设备上同时装有IPv4和IPv6两个协议栈
- 隧道技术 :IPv6数据报要进入IPv4网络时将整个IPv6数据报封装成IPv4数据报的数据部分传输,离开IPv4网络时再将数据部分拆出IPv6数据报
4.11 ICMP
1. 基本概念
- 为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文协议(
Internet Control Message Protocol,ICMP
)- 主机或路由器使用ICMP来发送差错报告报文和询问报文
- ICMP报文被封装在IP数据报中作为数据载荷发送
2. ICMP报文数据类型
-
差错报告报文 :用来向主机或路由器报告差错情况
-
终点不可达 :当路由器或主机不能交付IP数据报时,就向源点发送终点不可达报文,具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种
-
源点抑制 :当路由器或主机由于拥塞而丢弃IP数据报时,就向发送该IP数据报的源点发送源点抑制报文,使源点知道应当把IP数据报的发送速率放慢
-
超时:
- 当路由器收到一个目的IP地址不是自己的IP数据报时,会将其首部中生存时间TTL字段的值减1。若结果不为0,则路由器将该数据报转发出去;若结果为0,路由器不但要丢弃该数据报,还要向发送该IP数据报的源点发送时间超过(超时)报文
- 另外,当终点在预先规定的时间内未能收到一个数据报的全部数据报分片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过(超时)报文
-
参数问题:当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段的值发现首部在传送过程中出现了误码,就丢弃该数据报,并向发送该数据报的源点发送参数问题报文
-
改变路由(重定向) :路由器把改变路由报文发送给主机,让主机知道下次应将IP数据报发送给另外的路由器,这样可以通过更好的路由到达目的主机
-
-
以下情况不应发送ICMP差错报告报文:
-
对ICMP差错报告报文不再发送ICMP差错报告报文
-
对第一个分片的IP数据报片的所有后续数据报片都不发送ICMP差错报告报文
-
对具有多播地址的IP数据报都不发送ICMP差错报告报文
-
对具有特殊地址(例如
127.0.0.0
或0.0.0.0
)的IP数据报不发送ICMP差错报告报文。 -
询问报文 :用来向主机或路由器询问情况
-
回送请求和回答:
由主机或路由器向一个特定的目的主机或路由器发出。收到此报文的主机或路由器必须给发送该报文的源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态
-
时间戳请求和回答:
用来请求某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32比特的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。这种询问报文用来进行时钟同步和测量时间
-
-
3. ICMP的典型应用
1. PING
分组网间探测(Packet InterNet Groper,
PING
)在命令行中使用ping命令用来测试主机或路由器之间的连通性
- PING是TCP/IP体系结构的应用层直接使用网际层ICMP的一个例子,它并不使用运输层的TCP或UDP
- PING应用所使用的ICMP报文类型为回送请求和回答
2. traceroute
跟踪路由应用traceroute,用于探测IP数据报从源主机到达目的主机要经过哪些路由器
在不同操作系统中,traceroute应用的命令和实现机制有所不同:
- 在UNIX版本中,具体命令为
traceroute
,其在运输层使用UDP协议,在网络层使用ICMP报文类型只有差错报告报文- 在Windows版本中,具体命令为
tracert
,其应用层直接使用网际层的ICMP协议,所使用的ICMP报文类型有回送请求和回答报文以及差错报告报文原理:设置IP数据报TTL为1,经过第一个路由器时,TTL减为0,IP数据报被丢弃,路由器向源主机发送超时差错报告报文,这样就知道了经过的第一个路由器的IP地址,以此类推依次设置TTL为2,3,4,......,直到接收到目的主机的回送请求回答报文
4.12 VPN
虚拟专用网(
Virtual Private Network,VPN
):利用公用的因特网作为本机构各专用网之间的通信载体,这样形成的网络又称为虚拟专用网
专用地址:
10.0.0.0-10.255.255.255
(CIDR地址块10/8)172.16.0.0-172.31.255.255
(CIDR地址块172.16/12)192.168.0.0-192.168.255.255
(CIDR地址块192.168/16)
很显然,全世界可能有很多不同机构的专用网具有相同的专用IP地址,但这并不会引起麻烦,因为这些专用地址仅在机构内部使用
注意 :在因特网中的所有路由器,对目的地址是专用地址的IP数据报一律不进行转发,这需要由因特网服务提供者ISP对其拥有的因特网路由器进行设置来实现(需要自己对路由器额外配置)

4.12 NAT
1. 概述
背景 :尽管因特网采用了无分类编址方法来减缓IPv4地址空间耗尽的速度,但由于因特网用户数量的急剧增长,特别是大量小型办公室和家庭网络接入因特网的需求不断增加,IPv4地址空间即将耗尽的危险然仍没有解除(实际上,因特网号码分配管理局IANN于2011年2月3日宣布,IPv4地址已经分配完毕)
网络地址转换 (
Network Address Translation,NAT
)技术于1994年被提出,用来缓解IPv4地址空间即将耗尽的问题
- NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
- 这种方法需要在专用网络连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器称为NAT路由器,它至少要有一个有效的外部全球地址IPG。这样,所有使用内部专用地址的主机在和外部因特网通信时,都要在NAT路由器上将其内部专用地址转换成IPG

2. NAPT
网络地址与端口号转换方法 :将NAT和运输层端口号结合使用,称为网络地址与端口号转换(
Network Address and Port Translation,NAPT
)
- 由于目前绝大多数基于TCP/IP协议栈的网络应用,都使用运输层的传输控制协议TCP或用户数据报协议UDP,为了更加有效地利用NAT路由器中的全球IP地址,现在常将NAT转换和运输层端口号结合使用
- 这样就可以使内部专用网中使用专用地址的大量主机,共用NAT路由器上的1个全球IP地址,因而可以同时与因特网中的不同主机进行通信
- 现在很多家用路由器将家中各种智能设备(手机、平板、笔记本电脑、台式电脑、物联网设备等)接入因特网,这种路由器实际上就是一个NAPT路由器,但往往并不运行路由选择协议

由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护
5. 思维导图和习题
-tvWRyfy7-1745888229826)]
由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护