【良师408】计算机考研408真题解析(2025-36 DHCP REQUEST报文的IP地址封装)
特别提醒:【良师408】所收录真题根据考生回忆整理,命题版权归属教育部考试中心所有
摘要:本文基于2025年408考研真题,深度解析DHCP协议中REQUEST报文的IP地址封装机制,并提供C语言代码模拟,旨在帮助读者从协议细节和代码实现层面掌握这一核心网络考点。
🎯 2025年408真题分析:DHCP REQUEST报文的IP地址封装
题目回顾:
一台新接入网络的主机 H 通过 DHCP 服务器动态请求 IP 地址过程中,与 DHCP 服务器交换 DHCP 报文过程如下图所示。封装 DHCP 的 REQUEST 报文的 IP 数据报的目的 IP 地址和源 IP 地址分别是( )。

A.192.168.5.1, 0.0.0.0
B.192.168.5.1, 192.168.5.9
C.255.255.255.255, 0.0.0.0
D.255.255.255.255, 192.168.5.9
答案:C
🛠️ 协议原理深度解析:REQUEST阶段的特殊性
DHCP(动态主机配置协议)采用经典的四步握手机制:DISCOVER → OFFER → REQUEST → ACK。本题的关键在于理解REQUEST阶段客户端的状态。
1. 源IP地址:为什么是
0.0.0.0?
0.0.0.0
根据 RFC 2131 规范,DHCP客户端在发送 REQUEST 报文时,其 IP 地址尚未被 DHCP 服务器正式确认和分配。
在收到 OFFER 报文后,客户端只是暂时接受了服务器的建议(例如本题中的 )。只有在收到最终的 ACK 报文后,客户端才能正式使用该 IP 地址。因此,在 REQUEST 阶段,客户端的 IP 地址仍处于“未配置”状态,其 IP 数据报的源 IP 地址必须设置为
192.168.5.9。
0.0.0.0
2. 目的IP地址:为什么是
255.255.255.255?
255.255.255.255
REQUEST 报文的目的是为了确认选择。
客户端在 DISCOVER 阶段可能会收到多个 DHCP 服务器的 OFFER 报文。REQUEST 报文需要以广播形式发送,目的是通知所有 DHCP 服务器(包括被选中的和未被选中的),告知它们客户端的选择。这种广播机制确保了未被选中的服务器可以回收其提供的 IP 地址,避免地址浪费。因此,目的 IP 地址必须设置为 (受限广播地址)。
255.255.255.255
💻 C语言代码模拟:IP数据报封装
以下 C 语言代码片段模拟了 DHCP REQUEST 报文在 IP 层的封装过程,直观展示了源 IP 和目的 IP 的设置。
#include <stdint.h>
#include <stdio.h>
// IP地址结构体
typedef struct {
uint8_t octet[4];
} IpAddress;
// IP数据报头部结构体(简化版)
typedef struct {
// ... 其他字段
IpAddress sourceIp; // 源IP地址
IpAddress destIp; // 目的IP地址
} IpHeader;
// 创建IP地址
IpAddress createIpAddress(uint8_t a, uint8_t b, uint8_t c, uint8_t d) {
IpAddress ip;
ip.octet[0] = a;
ip.octet[1] = b;
ip.octet[2] = c;
ip.octet[3] = d;
return ip;
}
// 创建DHCP REQUEST报文的IP封装
IpHeader createDhcpRequestIpHeader() {
IpHeader ipHeader;
// 设置源IP地址:0.0.0.0(客户端尚未获得IP地址)
ipHeader.sourceIp = createIpAddress(0, 0, 0, 0);
// 设置目的IP地址:255.255.255.255(广播地址)
ipHeader.destIp = createIpAddress(255, 255, 255, 255);
return ipHeader;
}
void printIpHeader(IpHeader header) {
printf("DHCP REQUEST IP Header:
");
printf(" Source IP: %d.%d.%d.%d
",
header.sourceIp.octet[0], header.sourceIp.octet[1],
header.sourceIp.octet[2], header.sourceIp.octet[3]);
printf(" Destination IP: %d.%d.%d.%d
",
header.destIp.octet[0], header.destIp.octet[1],
header.destIp.octet[2], header.destIp.octet[3]);
}
int main() {
IpHeader requestHeader = createDhcpRequestIpHeader();
printIpHeader(requestHeader);
return 0;
}
📊 总结与拓展
| DHCP阶段 | 客户端状态 | 源IP地址 | 目的IP地址 | 传输方式 |
|---|---|---|---|---|
| DISCOVER | 未配置 | |
|
广播 |
| OFFER | 建议分配 | 服务器IP | |
广播 |
| REQUEST | 待确认 | |
|
广播 |
| ACK | 已配置 | 服务器IP | 客户端IP | 单播 |
拓展知识点:
DHCP中继代理:当 DHCP 服务器和客户端不在同一网段时,需要配置 DHCP 中继代理(Relay Agent)来转发广播报文。DHCPv6:在 IPv6 环境下,DHCPv6 协议用于地址分配,但 IPv6 也支持无状态地址自动配置(SLAAC)。
标签:# 数据结构 # 算法 # 考研真题 # 计算机网络 # DHCP协议 # C语言实现 # 408考研
版权声明:
【良师408】所收录真题根据考生回忆整理,命题版权归属教育部考试中心所有。本文内容为作者原创,仅供学习交流使用,严禁用于商业用途。
作者简介
周忠良,男,1968 年 10 月生,安徽桐城人,退役军官。现为资深高校教师、研究员,兼具金融科技与人工智能领域丰富实践经验。
教学领域:主讲《计算机学科专业基础(408)》《大数据分析》《JavaEE 开发》《云安全原理》《机器学习》等课程,覆盖本科至研究生层次。院校合作:曾执教于中国人民大学、大连理工大学、东北大学、北京外国语大学、北京石油化工学院、苏州大学、常州大学、盐城工学院等国内二十多所高校,累计授课超 50 门次,涵盖大数据、人工智能、金融科技等前沿方向。实践教学:主导“智慧云平台”“分布式系统架构”“金融大数据计量”等企业实训项目,注重产教融合。学术指导:指导学生获全国水下机器人大赛一等奖、算法竞赛奖项,并获“优秀指导教师”称号。
跨领域专长
技术能力:精通 Python、Java、C++等编程语言,擅长类脑计算、深度学习、大数据分析及云计算安全。金融科技:持有证券、基金执业资格,深耕量化交易、智能投顾及区块链技术研究。
荣誉与成果
军队科技进步一等奖(国家 863 项目)、二、三等奖等多项奖励曾任中国传媒大学特聘教授、清华大学 AI 项目研究员
联系方式 :
微信(goodteacher408)E-mail:243969453@qq.com


