【TCP/IP】10. 引导协议与动态主机配置协议

10. 引导协议与动态主机配置协议

  • [10. 引导协议与动态主机配置协议](#10. 引导协议与动态主机配置协议)
    • 概述
    • [10.1 BOOTP 原理](#10.1 BOOTP 原理)
      • [10.1.1 核心功能](#10.1.1 核心功能)
      • [10.1.2 工作过程](#10.1.2 工作过程)
      • [10.1.3 实现要点](#10.1.3 实现要点)
    • [10.2 BOOTP 报文](#10.2 BOOTP 报文)
      • [10.2.1 报文格式(300 字节固定长度)](#10.2.1 报文格式(300 字节固定长度))
      • [10.2.2 报文传输流程](#10.2.2 报文传输流程)
    • [10.3 启动配置文件](#10.3 启动配置文件)
    • [10.4 DHCP 基本概念](#10.4 DHCP 基本概念)
      • [10.4.1 核心功能](#10.4.1 核心功能)
      • [10.4.2 报文格式与 BOOTP 的差异](#10.4.2 报文格式与 BOOTP 的差异)
      • [10.4.3 优势](#10.4.3 优势)
    • [10.5 DHCP 运行方式](#10.5 DHCP 运行方式)
      • [10.5.1 客户机运行机制(状态转换)](#10.5.1 客户机运行机制(状态转换))
      • [10.5.2 服务器运行机制](#10.5.2 服务器运行机制)
      • [10.5.3 完整交互流程](#10.5.3 完整交互流程)
    • [10.6 DHCP/BOOTP 中继代理](#10.6 DHCP/BOOTP 中继代理)
      • [10.6.1 工作流程](#10.6.1 工作流程)
      • [10.6.2 配置要点](#10.6.2 配置要点)
    • 本章要点

10. 引导协议与动态主机配置协议

概述

引导协议(BOOTP)和动态主机配置协议(DHCP)均为 TCP/IP 应用层协议,用于解决网络设备的配置问题。BOOTP 主要为无盘节点提供启动信息,DHCP 在其基础上扩展,支持动态 IP 地址分配及更灵活的配置,两者兼容且共享部分报文格式。

10.1 BOOTP 原理

BOOTP(BOOTstrap Protocol)是针对无盘节点设计的启动协议,解决无盘设备从网络获取启动信息的问题。

10.1.1 核心功能

无盘节点启动时需获取三类信息:

  1. 自身的 IP 地址;
  2. 文件服务器的 IP 地址;
  3. 可运行的初始内存映像(启动映象文件名)。

与 RARP 的对比

  • 相同点:均采用客户 - 服务器模式,通过请求 / 应答机制工作。
  • 不同点:
    • BOOTP 基于 UDP,服务器是应用程序,易于修改和移植,支持跨 IP 网络通信;
    • RARP 服务器位于内核,依赖物理网络广播,修改和移植困难,仅支持同一物理网络。

10.1.2 工作过程

  1. 请求阶段:无盘客户机(无 IP 地址)以有限广播(255.255.255.255)发送 BOOTP 请求,包含自身 MAC 地址。
  2. 应答阶段:BOOTP 服务器根据 MAC 地址查询数据库,若存在记录,返回包含客户机 IP、服务器 IP、启动文件名的应答。
  3. 启动阶段:客户机通过 TFTP 下载启动文件并启动。

10.1.3 实现要点

  • 采用 UDP 传输,客户端端口 68,服务器端口 67;
  • 请求为广播,应答可单播或广播;
  • 支持跨网关引导,通过中继代理转发请求;
  • 依赖超时重传机制保证可靠性(重传间隔采用二进制指数后退策略)。

10.2 BOOTP 报文

BOOTP 报文分为请求和应答两种,格式固定,封装在 UDP 数据报中传输。

10.2.1 报文格式(300 字节固定长度)

字段 长度(字节) 含义(请求 / 应答通用)
操作码 1 1 = 请求,2 = 应答
硬件类型 1 物理网络类型(以太网 = 1)
硬件地址长度 1 硬件地址长度(以太网 = 6)
跳数 1 经过的网关数(初始为 0)
事务标识 4 随机 ID,用于匹配请求与应答
秒数 2 客户端启动后经过的秒数
标志 2 仅最高位有效(0 = 单播应答,1 = 广播应答)
客户 IP 地址 4 客户已知 IP(未知则为 0)
你的 IP 地址 4 服务器分配给客户的 IP(应答用)
服务器 IP 地址 4 服务器自身 IP
网关 IP 地址 4 转发请求的网关 IP(跨网时使用)
客户硬件地址 16 客户 MAC 地址(以太网占前 6 字节)
服务器主机名 64 客户请求的特定服务器名(可选)
引导文件名 128 客户请求的启动文件名(如 "unix")
特定厂商区域 64 可选配置信息,首 4 字节为 "魔饼"(99.130.83.99),定义后续内容格式

10.2.2 报文传输流程

  1. 客户端发送请求
    • 源 IP=0.0.0.0(未知时),目的 IP=255.255.255.255(广播);
    • 填充 MAC 地址、事务标识等,引导文件名可设为通用名或空(使用默认)。
  2. 客户端重传策略
    • 未收到应答时,初始延迟 0-4 秒,后按二进制指数后退(每次重传延迟翻倍),避免网络拥塞。
  3. 服务器处理请求
    • 检查服务器名(为空或匹配时处理),查询 MAC-IP 映射表;
    • 填充你的 IP、服务器 IP、启动文件名等,发送应答(单播或广播)。
  4. 跨网关引导
    • 网关(中继代理)接收广播请求,修改跳数(+1)和网关 IP,转发至其他子网的服务器;
    • 服务器应答通过网关返回客户机。

10.3 启动配置文件

BOOTP 依赖静态配置文件,存储客户机 MAC 地址与 IP、启动文件等的映射关系,适用于设备固定的网络。

局限性

  • 静态映射不适应设备频繁移动或 IP 地址不足的场景;
  • 需管理员手动维护,扩展性差。

解决方案:DHCP 通过动态分配 IP 地址克服上述问题,兼容 BOOTP。

10.4 DHCP 基本概念

DHCP(Dynamic Host Configuration Protocol)是 BOOTP 的扩展,支持动态 IP 分配及灵活配置,核心是 "租约" 机制(IP 地址的使用期限)。

10.4.1 核心功能

  • 自动分配 IP 地址、子网掩码、网关、DNS 服务器等配置信息;
  • 支持三种地址分配方式:
    1. 手工分配:管理员指定 IP 与 MAC 绑定;
    2. 自动分配:分配永久 IP(类似 BOOTP);
    3. 动态分配:IP 地址有租期,到期后回收重用(最常用,节省地址)。

10.4.2 报文格式与 BOOTP 的差异

  • 复用 BOOTP 报文格式,主要扩展:
    • 标志位:最高位为 "广播应答标志"(1 = 服务器必须广播应答);
    • 特定厂商区域:变长(超过 64 字节),通过选项字段携带更多配置信息(如租期、DNS 服务器)。
  • 关键选项(类型 53 定义消息类型):
消息类型 含义 方向
DHCPDISCOVER(1) 客户请求 IP 及配置 客户→服务器
DHCPOFFER(2) 服务器提供 IP 及配置 服务器→客户
DHCPREQUEST(3) 客户确认选择某服务器的提供 客户→服务器
DHCPACK(5) 服务器确认租约 服务器→客户
DHCPNAK(6) 服务器拒绝租约 服务器→客户
DHCPRELEASE(7) 客户主动释放 IP 客户→服务器

10.4.3 优势

  1. 减少错误:避免手工配置 IP 导致的冲突或子网掩码错误;
  2. 降低管理负担:自动分配 IP,灵活设置租期,适应设备移动;
  3. 节省地址:动态分配使 IP 可重用,适合临时设备(如访客终端)。

10.5 DHCP 运行方式

DHCP 通过客户机与服务器的交互完成 IP 分配,核心是 "租约生命周期" 管理。

10.5.1 客户机运行机制(状态转换)

  1. 初始化(INIT):客户机无 IP,广播 DHCPDISCOVER,进入 "选择状态(SELECTING)"。
  2. 选择状态:接收多个服务器的 DHCPOFFER(含 IP、租期等),选择首个到达的 offer,广播 DHCPREQUEST(指定选中的服务器),进入 "请求状态(REQUESTING)"。
  3. 请求状态:等待服务器应答,若收到 DHCPACK(确认租约),进入 "绑定状态(BOUND)";若收到 DHCPNAK(拒绝),返回初始化状态。
  4. 绑定状态:使用分配的 IP,租期内定期续租:
    • T1(租期 50%):单播 DHCPREQUEST 给原服务器,请求续租;
    • T2(租期 87.5%):若 T1 未成功,广播 DHCPREQUEST 请求续租;
    • 租期到期未续租:释放 IP,返回初始化状态。

10.5.2 服务器运行机制

  • 被动响应客户机请求:
    1. 收到 DHCPDISCOVER:从地址池分配 IP,发送 DHCPOFFER;
    2. 收到 DHCPREQUEST:确认客户选择的 IP,发送 DHCPACK(成功)或 DHCPNAK(IP 冲突或无效);
    3. 收到 DHCPRELEASE:回收 IP,重新加入地址池;
    4. 收到 DHCPDECLINE:客户检测到 IP 冲突,服务器标记该 IP 为无效,不再分配。

10.5.3 完整交互流程

  1. 发现阶段:客户→广播 DHCPDISCOVER(请求 IP 及配置)。
  2. 提供阶段:服务器→单播 / DHCPOFFER(含 IP、子网掩码、租期等)。
  3. 请求阶段:客户→广播 DHCPREQUEST(确认选中的服务器)。
  4. 确认阶段:服务器→DHCPACK(确认租约)或 DHCPNAK(拒绝)。
  5. 续租阶段:客户在 T1、T2 时段请求续租。
  6. 释放阶段:客户→DHCPRELEASE(主动释放 IP)。

10.6 DHCP/BOOTP 中继代理

当客户机与服务器位于不同子网时,需通过中继代理转发广播报文(路由器需支持 RFC1542)。

10.6.1 工作流程

  1. 子网 2 的客户机广播 DHCPDISCOVER,中继代理(路由器)接收。
  2. 中继代理修改报文:网关 IP 设为自身 IP,跳数 + 1,单播转发至子网 1 的 DHCP 服务器。
  3. 服务器根据网关 IP 判断客户机所在子网,从对应地址池分配 IP,单播 DHCPOFFER 给中继代理。
  4. 中继代理广播 DHCPOFFER 至子网 2 的客户机。

10.6.2 配置要点

  • 多子网环境中,DHCP 服务器需为每个子网配置独立地址池;
  • 中继代理需启用 DHCP 中继功能,指定服务器 IP 地址。

本章要点

  • BOOTP 用于无盘节点获取 IP、服务器 IP 及启动文件名,基于 UDP(端口 67/68),依赖静态配置文件。
  • DHCP 扩展 BOOTP,支持动态 IP 分配(租期机制),三种分配方式:手工、自动、动态(最常用)。
  • DHCP 报文复用 BOOTP 格式,通过选项字段扩展功能(如租期、DNS 服务器),核心消息类型包括 DISCOVER、OFFER、REQUEST、ACK。
  • 客户机通过状态转换完成 IP 获取与续租,服务器被动响应请求,处理 IP 分配与回收。
  • 跨子网时需中继代理转发报文,路由器需支持 DHCP/BOOTP 中继功能。
  • DHCP 的优势:减少配置错误、降低管理负担、节省 IP 地址,广泛应用于各类网络。
相关推荐
Muisti17 分钟前
NAT技术(网络地址转换)
网络·计算机网络·智能路由器
SKYDROID云卓小助手35 分钟前
无人设备遥控器之无线电频率篇
服务器·网络·单片机·嵌入式硬件·算法
chirrupy_hamal44 分钟前
TCP 保活(KeepAlive)机制详解
网络·tcp
hrrrrb1 小时前
【TCP/IP】7. IP 路由
网络·tcp/ip·智能路由器
189228048611 小时前
NW710NW713美光固态闪存NW719NW720
大数据·服务器·网络·人工智能·科技
会会会一飞冲天的小慧猪~ ~ ~1 小时前
网络综合实验
服务器·网络·lvs
嵌入式郑工1 小时前
RV1126平台(Buildroot Linux)+ SunplusIT SPCA2688 USB摄像头 RTSP推流全流程复盘与问题解决记录
网络
abc23735817632 小时前
静态路由综合实验
网络
三体世界2 小时前
TCP传输控制层协议深入理解
linux·服务器·开发语言·网络·c++·网络协议·tcp/ip
LuDvei3 小时前
CH9121T电路及配置详解
服务器·嵌入式硬件·物联网·网络协议·tcp/ip·网络安全·信号处理