网络层基础:IP协议功能、IPv4地址分类与子网划分、IP报文结构
核心原理:IP协议的两大职责与“尽力而为”模型
网络层位于数据链路层与传输层之间,其核心协议是IP(Internet Protocol)。IP协议承担两大根本职责:寻址与路由。寻址意味着为每一台接入网络的设备分配唯一的逻辑标识(IP地址),使数据包能够被送达正确的目标网络与主机;路由则意味着路由器根据目的IP地址,逐跳选择最佳路径,将数据包从源端转发到目的端。
IP协议采用“尽力而为”(Best-Effort)的交付模型,它不保证数据包一定到达、不保证顺序、也不保证不重复。这些可靠性问题由上层TCP协议负责解决。理解这一点,是区分网络层与传输层职责的关键。IP协议是无连接的,每个数据报独立处理,路径可能动态变化,因此网络层本身不维护连接状态。
面试高频点:IP协议三大核心特性——无连接(每个包独立转发)、不可靠(不承诺送达)、尽力而为(不轻易丢弃,但出错时仅报告ICMP错误)。可靠性由传输层(TCP)或应用层自行保障。
IPv4地址分类与子网划分
IPv4地址长度为32位,通常以点分十进制表示,如 192.168.1.1。地址由网络号与主机号两部分组成。传统上采用分类编址(Classful Addressing),将地址划分为A、B、C、D、E五类,其中A、B、C为单播地址,D为组播,E保留。
| 类别 | 首字节范围 | 默认子网掩码 | 网络号/主机号位数 | 可用网络数 | 每网络主机数 |
|---|---|---|---|---|---|
| A类 | 1 ~ 126 | 255.0.0.0 (/8) | 8 / 24 | 126 | 16,777,214 |
| B类 | 128 ~ 191 | 255.255.0.0 (/16) | 16 / 16 | 16,384 | 65,534 |
| C类 | 192 ~ 223 | 255.255.255.0 (/24) | 24 / 8 | 2,097,152 | 254 |
| D类(组播) | 224 ~ 239 | — | — | — | — |
| E类(保留) | 240 ~ 255 | — | — | — | — |
注意:分类编址存在严重浪费问题。例如一个B类网络可容纳6.5万台主机,但实际部署往往只需几百台,导致大量地址闲置。因此现代网络普遍采用无类域间路由(CIDR)与VLSM(可变长子网掩码),彻底打破固定分类限制。
子网划分的核心思想是:从主机号部分“借用”若干高位比特作为子网号,从而将一个大的网络划分为多个更小的子网。子网掩码随之加长,用CIDR表示法如 /26 即表示前26位为网络前缀。
方法流程:子网划分四步法
- 确定需求:明确需要划分的子网数量以及每个子网所需的最大主机数。
- 计算借位数:若需
N个子网,则借位数s满足2^s ≥ N;若每子网需H台主机,则主机位h满足2^h - 2 ≥ H(减去网络地址与广播地址)。 - 确定新掩码:新前缀长度 = 原前缀长度 + s,且主机位 h = 32 - 新前缀长度。
- 枚举子网地址:从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)来避免分片。