导图社区 网络层及其核心功能
这是一篇关于网络层及其核心功能的思维导图,主要内容包括:概述,IPv4,ARP协议,动态主机配置协议DHCP,网际控制报文协议ICMP。
编辑于2025-10-21 21:23:37网络层及其核心功能
概述
目标
实现端到端的通信
任何一台联网的主机都叫端
将分组(数据包)从源主机经过一系列中间节点(路由器)正确地、高效地传输到目的主机。
核心功能
1||| 异构网络互连
将使用不同技术和协议的网络连接成一个统一的通信系统。
重要设备:路由器(网关)
2||| 路由与转发
路由
各个路由器之间相互配合,规划IP数据报(分组)的最佳转发路径
转发
一台路由器,根据自己的“转发表”,将收到的IP数据报从合适的接口转发出去
3||| 拥塞控制
什么是拥塞?
某个网络中出现过量的分组而引起网络性能下降
什么是拥塞控制?
获取网络中的拥塞信息,用这些信息进行控制,避免因拥塞而出现分组的丢失
拥塞控制方法
开环控制(静态)
在部署网络时,就提前设计好预防拥塞的方法
一旦网络系统开始运行,就不再修改
闭环控制(动态)
动态监视网络状态,及时发现哪里发生拥塞,并将拥塞信息传递给相关路由器(通过ICMP协议)
相关路由器及时调整“路由表”
各层协议之间的服务关系
IPv4
IP数据报格式
又叫“IP分组”
口诀:“一总八片首四”
版本
占4bit,用于区分网络层使用的IP协议版本(IPv4、IPv6)
首部长度
占4bit,表示数据报首部的长度,单位是4B
注意
1||| 首部长度的最小值为0101,表示这个数据报首部只包含固定部分,长度为5*4B=20B
2||| 当IP分组的首部长度不是4字节的整数倍时,必须利用填充字段加以填充
区分服务
占8bit,一般用不到
总长度
占16bit,表示数据报的总长度(首部 + 数据部分),单位为1B
注意
1||| 数据报的理论最大长度为2^16-1=65535B。但是每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,即最大传送单元MTU。例如,以太网的MTU是1500B
2||| 当数据报的总长度超过MTU时,需要分片
填充
用于将IP首部补充到4字节的整数倍
标识
占16bit,同一数据报的分片使用同一标识,使分片后的各数据报片最后能正确地重组
标志
占3bit,但目前只有后两位有意义
最低位MF(More Fragment)
MF=1,表示“还有分片’
MF=0,表示这已是若干数据报片中的最后一个
中间位DF(Don't Fragment)
DF=1,禁止分片
DF=0,允许分片
片偏移
占13bit,表示数据部分在“被分片前”的位置,单位是8B
IP数据报的分片问题
注意
1||| IP数据报的“分片”可能在源主机、或任何一个路由器中发生
2||| 只有目的主机才会对分片进行“重组”
3||| 各分片有可能乱序到达目的主机
4||| 由于首部的“片偏移”字段是以8B为单位,因此,除了最后一个分片外,其他每个分片的数据部分必须是8B的整数倍
生存时间TTL
占8bit,表示数据报在网络中可以通过的路由器数的最大值,防止无法交付的数据报无限制地在网络中传输
注意
1||| TTL的初始值通常由源主机设置
2||| 每经过一个路由器,路由器就将TTL减1,如果TTL减到0,就直接丢弃分组,并向源主机发送ICMP报文
ICMP报文用于通知一个节点发生了某种“异常”
协议
占8bit,表示数据部分的协议
首部校验和
占16bit,只检验首部,不包括数据部分
注意:数据报每经过一个路由器,路由器都要重新计算一下首部检验和,生存时间、标志、片偏移等都可能发生变化
源地址与目的地址
各占32bit
IP地址
网络层转发IP数据报的过程
主机发送IP数据报
判断目的主机是否连接在本网络上 (检查本机IP地址和目的IP地址的网络前缀是否相同)
用本机配置的子网掩码“逐位与”
属于同一个网络
1||| 通过ARP协议找到目的主机的MAC地址
2||| 将IP数据报封装成MAC帧,发送给目的主机
不属于同一个网络
1||| 通过ARP协议找到默认网关的MAC地址
2||| 将IP数据报封装成MAC帧,发送给默认网关
路由器转发IP数据报
1||| 路由器的某个接口收到一个IP数据报
2||| 对IP数据报首部进行校验,并从中找到目的IP地址
3||| 查“转发表”,检查目的IP地址中的网络号与每个表项能否匹配
将目的IP地址与子网掩码“逐位与”
找到匹配表项
从相应接口转发
所有表项都不匹配
从默认路由转发出去
4||| 注意:查转发表时,路由器如果发现匹配项的转发接口与该IP数据报的入口相同,无需将IP数据报再转发回去,直接丢弃即可
注意:在转发过程中,IP数据报首部的源IP地址和目的IP地址始终不变,MAC帧首部的源MAC地址和目的MAC地址要发生变化
ARP协议
作用
在一个局域网内部,可以通过ARP协议查询到一个IP地址对应的MAC地址
MAC地址
MAC地址(48bit),是网络适配器出厂时分配好的,全球唯一
注意
主机至少有一个MAC地址
一台主机至少有一个网络适配器
路由器有多个MAC地址
一台路由器有多个转发接口,每个接口背后都是一个网络适配器
核心思想
每一台主机(路由器)都维护一张ARP高速缓存表,记录了近期解析过的IP地址与MAC地址的映射关系
工作流程
假设:同一个局域网内,主机A想与主机B通信,主机A已知主机B的IP地址,但不知道MAC地址
1||| 主机A检查自己的ARP高速缓存表
存在目的IP地址的记录表项
直接使用该MAC地址封装数据帧,无需发起ARP请求
不存在目的IP地址的记录表项
下一步
2||| 主机A构造一个ARP请求分组,封装成帧并广播
3||| 局域网内所有主机收到这个广播帧后,都会拆开看到ARP请求
其他主机发现不匹配
丢弃这个ARP请求包
主机B发现“目标IP地址”与自己的IP匹配
下一步
4||| 主机B更新自己的ARP缓存表,构造一个ARP应答报文,封装成帧发送给主机A
5||| 主机A收到应答后,更新ARP缓存表
主机更换MAC地址怎么办?
ARP对高速缓存中的每一个映射地址项目都设置生存时间
注意
1||| ARP只能用于解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题
2||| 从IP地址到MAC地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的
动态主机配置协议DHCP
作用
给刚接入网络的主机动态分配IP地址、配置默认网关、子网掩码
是什么
DHCP使用客户/服务器模型(C/S)
DHCP客户
新接入网络的主机(希望获得IP地址等配置)
DHCP服务器
负责分配IP地址的主机,管理一系列IP地址池
注意
1||| 在一个大型网络内可以有多台DHCP服务器
2||| 在家庭网络中,通常由家庭路由器兼职“DHCP服务器”
DHCP是应用层协议,基于UDP
客户UDP端口号=68、服务器UDP端口号=67
工作流程
注意:可能有多台DHCP服务器给客户主机分配了IP地址,所以客户主机在发送DHCP请求报文时,仍要进行广播
网际控制报文协议ICMP
是什么
ICMP可以让主机或路由器互相报告网络中发生的差错和异常情况
ICMP属于网络层协议,ICMP报文封装在IP数据报中
ICMP常见报文类型
差错报告报文
询问报文
不应发送ICMP差错报告报文的几种情况
1||| 若携带ICMP差错报告报文的IP数据报出错,不再反馈ICMP差错
2||| 若IP数据报被分片,则无论几个分片出错,都只反馈一次ICMP差错
3||| 若IP数据报的目的地址为多播地址,不反馈ICMP差错
4||| 若IP数据报的源地址为特殊地址(如:127.x.x.x、0.0.0.0),则即便发生IP数据报异常也不反馈ICMP差错
5||| 路由器(或接收方)发现首部校验和出错后,不会发送差错报告报文
校验和错误并不属于参数问题
参数问题:指的是IP首部格式正确(校验和通过),但其中的某个字段的值有问题(比如缺少必需的选项、版本号不对等)
校验和错误:指的是IP首部本身在传输过程中损坏了,连格式的正确性都无法保证。就算要发送ICMP报文,连源地址是否正确都不确定。
如果发现首部校验和出错,最安全、最简单的做法就是悄悄地丢弃这个数据包
ICMP应用
ping命令
功能
测试主机之间的连通性、评估往返时间(RTT)
实现
利用ICMP的回送请求和回送回答报文
tracert(Windows) / traceroute(Linux/macOS)命令
功能
追踪数据包从源主机到目标主机经过的完整路径
实现
利用ICMP的时间超过报文
IP地址
基本概念
是什么
IP地址是IP协议提供的一种统一的地址格式
它为互联网上的每台主机(或路由器)的每个接口分配一个全球范围内唯一的32位逻辑地址
表示方法
采用二级结构,由网络号和主机号组成,共32位
采用点分十进制提高可读性
对比MAC地址和IP地址
MAC地址:就像一个人的身份证号,是唯一且不变的物理标识。
IP地址:就像一个人的邮寄地址(如:中国北京市海淀区XX路XX号),它包含了位置信息(网络号),并且当你搬家后(连接到另一个网络),地址就会改变。
分类编址
是什么
注意
1||| 只有单播地址能分配给主机(或路由器)
2||| 路由器和路由器连接的接口可以不分配IP地址,但路由器和其他节点连接的接口必须分配IP地址
3||| 当一台新主机接入网络时,需要给它分配一个IP地址,并配置“默认网关”
DHCP协议
特殊IP地址
子网划分
为什么要子网划分?
在传统的IP地址分类中,存在巨大的地址浪费。两级IP地址不够灵活
核心思想
IP地址中原本主机号占 n bit,取出 k bit作为子网号,把两级的IP地址变为三级的IP地址。这样可以划分出2^k个子网,每个子网能容纳的主机数量相同
网络号和子网号可以合称为网络前缀
子网掩码
子网掩码用于标识IP地址中的“网络部分”和“主机部分”
它与IP地址的长度相同,由一段连续的1和一段连续的0构成
它不能单独存在,需搭配IP地址使用,两者按位相与(AND)即可计算出IP地址所属的网络地址
注意
1||| 子网划分仅在网络内部有效,该网络在外界被视为一个并未划分的整体。网络前缀相同的IP地址,才归属于同一个网络
2||| 如果一个网络进行了子网划分,这个网络中的每台主机(或路由器)接口都需要配置IP地址、默认网关、子网掩码
3||| 如果一台路由器支持子网划分技术,路由器的转发表中需要包含<目的网络号,子网掩码,转发接口>
4||| 默认子网掩码
一个传统网络内没有进行子网划分,将对应此网络的转发表项设置为默认子网掩码
5||| 默认路由
路由器转发表中,如果所有表项都不匹配,将从默认路由转发出去
默认路由目的网络号全0,子网掩码全0
无分类编址CIDR
是什么
CIDR取消了传统的地址分类
CIDR把IP地址中的网络号改称为“网络前缀”,网络前缀的位数n不是固定的数,而是可以在0~32之间选取任意值
表示方法:在IP地址后面加上斜线“/“,斜线后面的数表示网络前缀所占的位数。
核心思想
1||| 变长子网掩码
更加灵活,方便地址资源的分层管理
在一个网络中,不同的子网可以使用不同长度的子网掩码。
2||| 路由聚合
将多个连续的、具有相同前缀的小网络合并成一个大的网络在路由表中通告,大幅减少全球路由表的规模
变长子网划分解题技巧
路由聚合
是什么
对于一个路由转发表,如果几条路由表项的转发接口相同,部分网络前缀也相同,那么可以将这几条路由表项聚合为一条
这种地址的聚合称为路由聚合,也称构成超网
特点
1||| 路由聚合可以减少路由表的大小
2||| 路由聚合可能会引入额外的无效地址
路由聚合的本质是用一个大网段(超网)来概括多个小网段。
但问题在于,这个大网段所覆盖的IP地址范围,可能会大于你实际所拥有的小网段的总和
这些多出来的、被你“概括”进去但实际并不存在的地址,就是所谓的 “额外的无效地址”
3||| 路由聚合可能会使路由器在查“转发表”时,发现目的IP地址中的网络号能与多个表项匹配
最长前缀匹配原则:应当选择前缀最长的一个表项作为匹配的前缀
网络地址转换NAT
核心思想
将一组IP地址(私有地址)映射成另一组IP地址(公有地址)
通过NAT,一个家庭、一个学校或一个公司只需要申请一个或少数几个公有IP地址,其内部成千上万台设备可以使用私有IP地址,然后通过NAT共享这一个公有IP上网。缓解IP地址不够用的问题
私有IP地址(内网IP)
私有IP地址是可复用的,只要求局域网内唯一,不要求全球唯一
每个局域网内部都可以自行分配这些私有IP地址
公有IP地址(外网IP)
外网IP是一个局域网与外界通信时所需使用的IP地址
通常由ISP提供,全球唯一
Internet Service Provider
NAT路由器
维护一张NAT表,转发IP数据报时,进行内网IP与外网IP的转换
对比普通路由器
1||| 转发一个IP数据报时
从内网转发到外网,会更改源IP地址、源端口号
从外网转发到内网,会更改目的IP地址、目的端口号
普通路由器转发IP数据报时,不会改变源IP、目的IP地址
2||| NAT路由器包含传输层的功能
端口号是传输层的概念,传输层通过IP地址 + 端口号,实现了进程到进程的通信
普通路由器仅包含网络层及以下的功能
工作流程