计算机网络:网络层

网络层概述与功能

网络层概述

网络层的核心任务是基于 IP 地址进行寻址,通过路由选择和转发机制,将数据包从源主机跨越多个异构网络传输到目的主机。它为上层提供的是无连接、尽最大努力交付的数据报服务。

网络层功能

  • 路由选择:通过路由算法决定数据包从源端到目的端的最佳传输路径(属于控制平面)。
  • 转发:路由器根据转发表,将到达输入端口的数据包转移到正确的输出端口(属于数据平面)。

ip

IP数据报格式

ip数据报格式

IP数据报分片

当 IP 数据报的总长度超过链路层的 最大传输单元(MTU) 时,路由器或源主机会将其分割成多个较小的分片进行传输。 分片仅在最终的目的主机上进行重组。

分片与重组依赖于:

  • 标识:同一原始数据报的所有分片被打上相同的标识。
  • 标志:包含 DF(Don’t Fragment,为1时禁止分片,超长则丢弃并报错)和 MF(More Fragments,为1表示后面还有分片,为0表示这是最后一片)。
  • 片偏移:指明该分片的数据在原数据报数据区中的相对起始位置(必须是 8 字节的整数倍,8字节是单位)

ip地址

主机/路由器接口的标识符,用于在网络中唯一标识和寻址的逻辑地址

32位,4字节

包含两层结构

  • 子网部分:高位,标识子网,IP转发(将分组运送到目的子网)时使用
  • 主机部分:低位,标识子网内部的主机

分类编址:

类别 首字节范围 默认网络位 默认掩码
A 0–127 8 位 255.0.0.0 (/8)
B 128–191 16 位 255.255.0.0 (/16)
C 192–223 24 位 255.255.255.0 (/24)

无类别编址:CIDR

无类别域间路由选择

  • 地址格式 a.b.c.d/x,其中x是网络部分(前缀)的位数

  • x可以是任意[0,32]之间的值

  • 主机号全零:网络地址

  • 主机号全幺:广播地址

子网掩码

子网掩码用来告诉主机/路由器:一个 IPv4 地址里,哪些位是子网部分(网络前缀),哪些位是主机部分。 32 位地址写成二进制后,与子网掩码做 按位与(AND),结果就是网络地址;剩下的位用来标识该子网内的主机。

子网

能不经过三层设备(路由器)直接通信的一组接口,构成一个子网 注意:两个路由器各自有一个接口连在同一条链路上,这两个接口属于同一个子网

网关

默认网关 ≈ 本子网出口的路由器接口 当目的地址不在本子网时,主机把 IP 包交给的下一跳路由器

转发

路由器收到 IP 分组后,根据转发表,把分组从入端口移到出端口送出去——属于数据平面

1,分组从某接口进入路由器 2,看目的 IP,查转发表(最长前缀匹配) 3,得到下一跳和应从哪个出端口发出 4,若出链路 MTU 更小且不允许分片,可能丢弃或分片(视 DF 等) 5,封装成下一跳链路层帧(常要 ARP 解析下一跳 MAC)发出

地址块

  • 一个地址块 = 一个网络前缀 + 后面若干位主机号
  • /x 表示前 x 位是网络部分,剩下 32−x 位是主机部分
  • 块内地址连续,例如 /20 包含 2¹² = 4096 个地址

地址聚合

地址聚合就是把多个相邻、可合并的小网段,在对外通告路由时合成一条更短的前缀,用来减小路由表。

DHCP协议

DHCP让主机自动获取 IP 地址、子网掩码、默认网关、DNS 等网络参数,不用手动配置。

四个报文(DORA):

步骤 报文 含义
1 Discover 客户端广播:“谁有 IP 可分给我?”
2 Offer 服务器回应:“可以用这个 IP”
3 Request 客户端:“我选这个,请确认”
4 Ack 服务器:“确认,参数如下”

记忆:Discover → Offer → Request → Ack

网络地址转换NAT

NAT在路由器/防火墙上,把内网私有 IP 与公网 IP 互相映射,让多台内网设备共用少量公网 IP 访问互联网。

为什么需要

  • IPv4 地址不够用:内网用私有地址(如 192.168.x.x、10.x.x.x),对外统一成一个公网 IP。
  • 隐藏内网结构:外网一般看不到内网具体主机地址。

内网主机访问外网时步骤:

  • 内网包:源 IP = 私有地址,目的 IP = 公网服务器
  • NAT 路由器改写:源 IP 改成路由器公网 IP,并记录 (内网 IP, 端口) ↔ (公网 IP, 新端口) 的映射表
  • 外网回包:目的为公网 IP + 端口 → NAT 查表改回内网 IP + 端口 → 转给对应主机

借用了传输层的「源 IP + 源端口 + 目的 IP + 目的端口」四元组,修改了端口号,违反了协议分层原则

IPV6

IPv6将地址长度由32位增加到了128位 冒号分隔:如2001:db8:0:0:1:0:0:1 连续0可压缩,:: 表示一段连续的 0,但一个地址中只能出现一次

ipv6数据报格式

IPv6 over IPv4隧道技术

IPv6 数据包 ↓ 封装 IPv4 数据包载荷中携带 IPv6 数据包 ↓ 穿过 IPv4 网络 到达隧道出口后去掉 IPv4 头部 ↓ 解封装 恢复原来的 IPv6 数据包

路由算法

路由算法用于计算从源节点到目的节点的转发路径,路由器根据算法生成路由表,并依据路由表决定数据包的下一跳。

1,集中式

  • 每个路由器都拥有完整的拓扑,链路开销
  • 链路状态(link state)算法

2,分布式

  • 每个路由器只知道邻居节点,以及与邻居节点之间的链 路开销
  • 迭代地与邻居交换信息,并进行计算
  • 距离向量(distance vector)算法

距离向量路由选择算法

Bellman-Ford公式:D_x(y) = min_v { c(x, v) + D_v(y) } 我到目的地 y 的最短距离 = min(我先到某个邻居 v 的代价 + 这个邻居 v 到 y 的距离)

节点x维护以下信息:

  • x到邻居v的直达开销c(x, v)
  • x的距离向量估计Dx = [Dx(y): y є N ]
  • x的每个邻居的距离向量估计Dv = [Dv(y): y є N ]

距离向量路由算法主要是在数据转发之前和网络运行过程中后台持续计算/更新路由表,不是在每个数据包到来时临时跑Bellman-Ford。

路由还没收敛时会出现的问题

  • 非最优路径:还能到达目的地,但走的不是当前最短路径。
  • 错误路径/黑洞:路由表指向一条已经失效的路径,包被丢弃。
  • 路由环路:多个路由器互相以为对方知道正确路径,包在几个路由器之间来回转发。
  • 计数到无穷:坏消息传播很慢,路由代价一步步增大,直到达到“无穷大”。

AS

由同一个管理机构控制、使用统一路由策略的一组网络和路由器

  • 一个 AS 内部:使用内部网关协议 IGP 例如 RIP、OSPF、IS-IS

  • 不同 AS 之间:使用外部网关协议 EGP 主要是 BGP

ICMP 互联网控制报文协议

用来在 IP 通信中传递差错报告和控制信息。它不负责传输用户数据,而是帮助主机和路由器发现网络问题。


计算机网络:网络层
https://yaoyablog.xyz/2026/05/12/study/计算机网络/计算机网络:网络层/
作者
Yaoyawen
发布于
2026年5月12日
许可协议