网络层基础:IP协议功能、IPv4地址分类与子网划分、IP报文结构

核心原理:IP协议的两大职责与“尽力而为”模型

网络层位于数据链路层与传输层之间,其核心协议是IP(Internet Protocol)。IP协议承担两大根本职责:寻址与路由。寻址意味着为每一台接入网络的设备分配唯一的逻辑标识(IP地址),使数据包能够被送达正确的目标网络与主机;路由则意味着路由器根据目的IP地址,逐跳选择最佳路径,将数据包从源端转发到目的端。

IP协议采用“尽力而为”(Best-Effort)的交付模型,它不保证数据包一定到达、不保证顺序、也不保证不重复。这些可靠性问题由上层TCP协议负责解决。理解这一点,是区分网络层与传输层职责的关键。IP协议是无连接的,每个数据报独立处理,路径可能动态变化,因此网络层本身不维护连接状态。

面试高频点:IP协议三大核心特性——无连接(每个包独立转发)、不可靠(不承诺送达)、尽力而为(不轻易丢弃,但出错时仅报告ICMP错误)。可靠性由传输层(TCP)或应用层自行保障。

IP协议功能模型:寻址 + 路由 + 尽力而为 发送端主机 IP地址: 192.168.1.10 路由器 R1 查路由表 TTL减1 重新计算校验和 路由器 R2 查路由表 TTL减1 转发至目的网络 接收端主机 IP: 10.0.0.5 数据报 数据报 数据报 “尽力而为”三大不保证: 不保证送达(可能丢包,路由器拥塞时直接丢弃) 不保证顺序(不同数据报可能走不同路径,后发先至) 不保证不重复(网络震荡时可能产生重复数据报)

IPv4地址分类与子网划分

IPv4地址长度为32位,通常以点分十进制表示,如 192.168.1.1。地址由网络号与主机号两部分组成。传统上采用分类编址(Classful Addressing),将地址划分为A、B、C、D、E五类,其中A、B、C为单播地址,D为组播,E保留。

类别首字节范围默认子网掩码网络号/主机号位数可用网络数每网络主机数
A类1 ~ 126255.0.0.0 (/8)8 / 2412616,777,214
B类128 ~ 191255.255.0.0 (/16)16 / 1616,38465,534
C类192 ~ 223255.255.255.0 (/24)24 / 82,097,152254
D类(组播)224 ~ 239————
E类(保留)240 ~ 255————

注意:分类编址存在严重浪费问题。例如一个B类网络可容纳6.5万台主机,但实际部署往往只需几百台,导致大量地址闲置。因此现代网络普遍采用无类域间路由(CIDR)与VLSM(可变长子网掩码),彻底打破固定分类限制。

子网划分的核心思想是:从主机号部分“借用”若干高位比特作为子网号,从而将一个大的网络划分为多个更小的子网。子网掩码随之加长,用CIDR表示法如 /26 即表示前26位为网络前缀。

方法流程:子网划分四步法

  1. 确定需求:明确需要划分的子网数量以及每个子网所需的最大主机数。
  2. 计算借位数:若需 N 个子网,则借位数 s 满足 2^s ≥ N;若每子网需 H 台主机,则主机位 h 满足 2^h - 2 ≥ H(减去网络地址与广播地址)。
  3. 确定新掩码:新前缀长度 = 原前缀长度 + s,且主机位 h = 32 - 新前缀长度。
  4. 枚举子网地址:从0开始,按“块大小 = 2^h”递增,依次列出各子网的网络地址、可用主机范围与广播地址。

案例:将 192.168.1.0/24 划分为4个子网。需要借 s=2 位(因为 2²=4),新掩码为 /26,块大小 = 2^(32-26) = 64。子网如下:

子网1: 192.168.1.0/26     可用主机: 192.168.1.1 ~ 192.168.1.62     广播: 192.168.1.63
子网2: 192.168.1.64/26    可用主机: 192.168.1.65 ~ 192.168.1.126   广播: 192.168.1.127
子网3: 192.168.1.128/26   可用主机: 192.168.1.129 ~ 192.168.1.190  广播: 192.168.1.191
子网4: 192.168.1.192/26   可用主机: 192.168.1.193 ~ 192.168.1.254  广播: 192.168.1.255

每个子网的首地址(主机位全0)为网络地址,末地址(主机位全1)为广播地址,均不可分配给主机使用。

IP报文结构:20字节固定头 + 可选字段

IPv4报文头部长度可变,最小20字节,最大60字节。理解头部各字段是分析网络问题的基本功。以下按顺序列出关键字段及其作用:

  • 版本(Version):4位,恒为4,表示IPv4。
  • 首部长度(IHL):4位,以4字节为单位,最小值为5(即20字节)。
  • 服务类型(ToS/DSCP):8位,用于QoS标记,现代路由中常被DSCP字段替代。
  • 总长度(Total Length):16位,IP报文总字节数(含头部与数据),最大65535字节。
  • 标识(Identification):16位,用于分片重组,同一数据报的分片共享相同标识。
  • 标志(Flags):3位,DF(禁止分片)与MF(更多分片)位。
  • 片偏移(Fragment Offset):13位,以8字节为单位,指示分片在原数据报中的位置。
  • TTL(Time To Live):8位,每经过一台路由器减1,减到0时丢弃并回送ICMP超时消息,防止数据报无限循环。
  • 协议(Protocol):8位,标识上层协议,如1=ICMP,6=TCP,17=UDP。
  • 首部校验和(Header Checksum):16位,仅校验头部,每跳需重新计算(因为TTL变化)。
  • 源IP地址与目的IP地址:各32位。
  • 可选字段(Options):可变长,通常用于调试(如时间戳、记录路由),实际生产环境极少使用。
 0                   15                   31
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|版本| 首部长度 |  服务类型   |      总长度      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        标识        |标志|    片偏移        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  生存时间(TTL) |   协议   |   首部校验和    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                源IP地址                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              目的IP地址                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              选项(如有)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

记忆技巧:“版本-长度-服务-总长,标识-标志-偏移,TTL-协议-校验和,源IP-目的IP”。面试时能默画此结构并解释每个字段,是网络基础扎实的有力证明。

误区与复盘:常见理解偏差

误区一:认为IP协议是可靠的,丢包后会自动重传。实际上IP层不负责重传,重传由TCP完成。若使用UDP,丢包后应用层需自行处理。

误区二:混淆“私有地址”与“公网地址”。RFC 1918定义了私有地址段:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。私有地址不可在公网路由,必须通过NAT转换后才能访问互联网。

误区三:子网划分时忘记减去2个保留地址(网络地址与广播地址)。例如 /30 子网只有2个可用主机地址,常用于点对点链路。

误区四:忽略TTL字段的作用。执行 ping 或 traceroute 时,TTL耗尽会导致“Time to live exceeded”错误,这是网络排障中常见现象。

复盘要点:面试中常给一个IP与掩码,要求计算网络地址、广播地址、可用主机范围。务必掌握“与运算”求网络地址的方法:将IP地址与子网掩码逐位做逻辑与,所得结果即为网络地址。例如 192.168.1.130/26 与 255.255.255.192 相与,得到 192.168.1.128,即该地址属于子网 192.168.1.128/26。

最后,IP报文的分片与重组机制也是高频考点。当数据报长度超过链路MTU(如以太网1500字节)时,路由器会将数据报分片,目的端根据标识、标志与片偏移字段重组。分片会增加丢包概率与处理开销,因此现代网络倾向于使用路径MTU发现(PMTUD)来避免分片。