计算机网络--网络层
网络层
概述
目的:实现网络互连
任务
- 网络层向运输层提交怎样的服务
- 网络层寻址问题
- 路由选择问题
服务
面向连接的虚电路服务
- 可靠通信由网络来保障
- 必须建立网络层连接--虚电路 VC
- 通信双方沿着建立的虚电路发送分组
- 通信结束,需要释放之前建立的虚电路
无连接的数据报服务
- 可靠通信由用户主机来保障
- 不需要建立网络层连接
- 每个分组可以走不同的路径
- 每个分组首部必须携带目的主机完整地址
- 可能误码、丢失、重复、失序
IPv4
IPv4 地址就是因特网上每一台主机或路由器的每一个接口分配一个在全世界范围唯一的 32 比特的标识符
- 采用点分十进制表示方法
分类编制
五种类型
-
A 类型:
0 网络号[8] | 主机号[24]
-
最小网络号 0,保留不指派
-
最大网络号 127,作为本地回环测试地址,不指派
127.0.0.1
127.255.255.254
-
可指派数量
-
-
B 类型:
10 网络号[16] | 主机号[16]
- 最小网络号 128.0
- 最大网络号 191.255
- 可指派数量
-
C 类型:
110 网络号[24] | 主机号[8]
- 最小网络号 192.0.0
- 最大网络号 233.255.255
- 可指派数量
-
D 类型:
1110 多播地址
-
E 类型:
1111 保留
注意
- 只有 A, B, C 类地址可以分配给网络中的主机或路由器的各接口
- 主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口
划分子网
从主机号借用几个比特作为子网号
子网掩码
- 使用连续的 1 对应网络号和子网号
- 使用连续的 0 对应主机号
无类型编制
1993,IETF 发布无分类域间路由选择 CIDR
- CIDR 消除传统的 A, B, C 类地址,以及子网概念
- CIDR 可以更有效分配 IPv4 的地址空间
CIDR
- 使用 斜线记法 在 IPv4 地址后面加
/
在后面写网络前缀所占的比特数量 - 将网络前缀都相同的连续 IP 地址组成一个 “CIDR地址块”
- 地址块的最小地址
- 地址块的最大地址
- 地址数量
- 聚合某类网络数量
- 地址掩码
路由聚合
应用规划
-
FLSM 【定长的子网掩码】
- 使用同一个子网掩码来划分子网
- 每个子网分配的 IP 地址数量相同,造成 IP 地址的浪费
-
VLSM 【变长的子网掩码】
- 使用不同的子网掩码来划分子网
- 每个子网分配的 IP 地址数量可以不相同,尽量减少造成 IP 地址的浪费
IP 数据报
路由器可以分析各种不同类型网络传来的数据包的目的地址,把非TCP/IP网络的地址转换成TCP/IP地址,或者反之;再根据选定的路由算法把各数据包按最佳路线传送到指定位置。所以路由器可以把非TCP/IP网络连接到因特网上。
发送与转发:
- 主机发送
- 路由器转发
路由器
- 中续器和集线器工作在物理层;不隔离冲突域,不隔离广播域
- 网桥和交换机【多端口网桥】工作在数据链路层;可以隔离冲突域,不隔离广播域
- 路由器工作在网络层;隔离冲突域,隔离广播域
路由器转发 IP 数据报
-
检验 IP 数据报是否出错
- 出错,直接丢弃并通告源主机
-
根据 IP 数据报的目的地址在路由器中查找匹配的条目
- 匹配失败,直接丢弃并通告主机
路由条目类型
- 直连网络
- 静态路由【人工配置】
- 动态路由【路由选择协议】
静态路由配置及路由环路问题
-
静态路由配置
是指定用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
- 方式简单、开销小;但不能及时适应网络状态的变化
- 一般用于小规模网络
-
静态路由配置可能的错误
- 配置错误
- 聚合了不存在的网络 【解决问题:黑洞路由】
- 网络故障
特殊静态路由条目
-
默认路由
- 目的网络: 0.0.0.0
- 地址掩码: 0.0.0.0
-
特点主机路由
- 目的网络: 特定主机的 IP 地址
- 地址掩码: 255.255.255.255
-
黑洞路由【下一跳为 null0 】
路由选择协议
特点:
- 自适应:动态路由选择
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分为许多较小的自治系统 AS (Autonomous System)
常见路由协议分类
-
内部网关协议 IGP
-
路由信息协议 RIP
基于距离向量,在因特网最早使用
-
内部网关路由协议 IGRP
基于距离向量,是思科早期私有的协议,已经被 EIGRP 取代
-
增强型内部网关路由协议 EIGRP
思科私有的协议,用于取代 IGRP 协议的混合型协议
-
开放式最短路径优先 OSPF
基于链路状态,在各种网络中广泛使用
-
中间系统到中间系统 IS-IS
基于链路状态,集成化 IS-IS 是 ISP 骨干网上最常使用的 IGP 协议
-
-
外部网关协议 EGP
- 边界网关协议 BGP
路由器基本结构
- 路由选择部分
- 分组转发部分
路由信息协议 RIP
是内部网关协议 IGP 中最先得到广泛使用的协议之一,其标准文档为
RFC 1085
RIP 要求自治系统 AS 内每一个路由器都要维护从它自己到 AS 内其他每一个网关的距离记录称为 距离向量 D-V (Distance-Vector)
使用跳数作为度量来衡量达到目的网络的距离
- 路由器到直连网络的距离定义为 1
- 路由器到非直连网络的距离定义为所经过的路由器数加 1
- 允许一条路径最多 15 个路由器,因此 RIP 只适用于小型互联网
RIP 包含
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换
基本工作原理
- 路由器刚开始工作时,只知道自己到直接网络的距离为 1
- 每个路由器仅和相邻路由器周期性地交换并更新路由器信息
- 若干次交换和更新后,每个路由器都知道达到本 AS 内各网络的最短距离和下一跳地址,称为收敛
更新规则
- 发现新网络,添加
- 到达目的网络,相同下一跳,最新消息,更新
- 到达目的网络,不同下一跳,新路由优势,更新
- 到达目的网络,不同下一跳,新路由劣势,不更新
- 到达目的网络,不同下一跳,等价负载均衡
开放式最短路径优先 OSPF
- 开放,不受某一厂商控制,公开发表
- 基于链路状态,链路状态是指本路由器都和哪些路由器相邻,以及相应链路的代价
- 采用 SPF 算法,不会产生路由环路
- 不限制网络规模,更新效率高,收敛速度快
交互方式
OSPF 相邻路由器之间通过交互问候分组,建立和维护邻居关系
-
使用 OSPF 的每个路由器都会产生链路状态通告LSA
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
-
LSA 封装于链路状态更新分组LSU,采用洪泛法发送
-
使用 OSPF 的每个路由器都有一个链路状态数据库LSDB,用于存储 LSA
-
通过各路由器洪泛发送封装有 LSA 的 LSU 分组,各路由器的 LSDB 最终将一致
分类
- 问候分组
- 数据库描述分组
- 链路状态请求分组
- 链路状态更新分组
- 链路状态确认分组
多点接入网络中路由器邻居关系的建立
- 选举 指定路由器 DR 和 备用指定路由器 BDR
- 所有非 DR/BDR 只与 DR/BDR 建立邻居关系
边界网关协议 BGP
寻找一个比较好的路由
在 自治系统 AS 中至少选取一个路由器作为 “BGP 发言人”
不同自治区的 BGP 发言人要交换路由信息,首先必须建立 TCP 连接,端口号 179
- 在此 TCP 连接交换 BGP 报文以建立 BGP会话,交换信息
- BGP 发言 TCP 连接,彼此称为邻站
BGP-4 有以下四种报文
- OPEN 【打开】
- UPDATE 【更新】
- KEEPALIVE 【保活】
- NOTIFICATION 【通知】
IPv4 数据报的首部格式
------------------------------------------------------------------- |[0]| 版本 |[4]| 首部长度 |[8]| 区分服务 |[16]| 总长度 |[31] | 标 识 |[16]| 标志 |[19]| 片位移 | | 生存时间 |[8]| 协议 |[16]| 首部检验和 | | 源 IP 地址 | | 目的 IP 地址 | | | = 可选字段【长度可变】 | 填充 == | | --------------------------------------------------------------------
-
固定部分 【 20 字节 】
-
可变部分 【 40 字节 】
-
版本 【4】
表示 IP 协议的版本,通信双方必须使用版本一致
-
首部长度 【4】
表示 IP 数据报首部的长度,
- 最小十进制取值 5 表示 IP 数据报首部只有 20 字节固定部分
- 最大十进制取值 15 表示 IP 数据报首部只有 20 字节固定部分和最大 40 字节可变部分
-
可选字段
长度从 1 个字节到 40 字节不等,用于支持排错、测量及安全等措施
-
填充字段
确保首部长度为 4 的整数倍,使用 0 填充
-
区分服务 【8】
用于获取更好的服务
-
总长度 【16】
表示 IP 数据报的总长度 (首部 + 数据载荷);最大 65535
IP 数据报分片
-
标识 【16】
属于同一个数据报的各分片数据报应该具有相同的标识,由 IP 软件维持一个计数器,每生产一个数据报,计数器值加 1 并将此值赋给标识字段
-
标志 【3】
- DF:1 不允许分片;0 允许分片
- MF:1 后续有分片;0 最后分片
- 保留位:必须 0
-
片偏移 【13】
指出分片数据报的数据载荷部分偏移其在原数据报位置有多少个单位
片偏移以 8 字节为单位
-
生存时间 TTL 【8】
以秒为单位,最大生存周期 255
现在以 “跳数” 为单位
-
协议 【8】
指明 IPv4 数据报的数据报部分是何种协议数据单元
协议名称 ICMP IGMP TCP UDP IPv6 OSPF 协议字段值 1 2 6 17 41 89 -
首部检验和 【16】
用于检测首部在传输过程中是否出错
-
源 IP 地址 【32】
-
目的 IP 地址 【32】
网际控制报文协议 ICMP
为更好有效转发 IP 数据报和交付成功的机会,在网际层使用网际控制报文协议 ICMP
主机和路由器使用 ICMP 来发送差错报告报文和询问报文
ICMP 报文被封装在 IP 数据报中发送
差错报告报文
-
终点不可达
当路由器或主机不能交付数据报时,就向源点发送
-
源点抑制
当主机或路由器由于拥塞而丢弃数据报时,就向源点发送,使数据报发送速率放慢
-
时间超过
生存时间 归 0 丢弃,报错
-
参数问题
检验和检验不通过,丢弃数据报,就向源点发送报文
-
改变路由【重定向】
路由器把改变路由报文发送给主机
不发送情况
- 对 ICMP 差错报文不发送
- 对于第一个分片的数据报片的后续数据报片不发送
- 对于具有多播地址的数据报不发送
- 特殊地址不发送【127.0.0.1】
询问报文
-
回送请求和回答
是主机或路由器向特定的目的主机发送询问
作用:测试目的站是否可达及了解其有关状态
-
时间戳请求和回答
请某一个主机或路由器回答当前的日期和时间
作用:时间同步和测量
应用
- 分组网间探测 PING
- 跟踪路由 traceroute
虚拟专用网 VPN
利用公用的因特网作为本机构各专用网之间的通信载体
查看 http://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
专用私有地址
- 10.0.0.0 ~ 10.255.255.255 (10/8 地址块)
- 172.16.0.0 ~ 172.31.255.255 (172.16/12 地址块)
- 192.168.0.0 ~ 192.168.255.255 (192.168/16 地址块)
网络地址转换 NAT
缓解 IPv4 的地址消耗
NAT 是使用大量的内部专用地址共享少量的外部全球地址
一些 P2P 网络应用,需要外网主机与内网主机进行通信,此时,NAT时会遇到问题
NAPT 技术:网络地址结合端口号
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了