当前位置: 首页 > news >正文

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

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

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

字段长度(字节)含义(请求 / 应答通用)
操作码11 = 请求,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 地址,广泛应用于各类网络。
http://www.dtcms.com/a/272277.html

相关文章:

  • prometheus+grafana接入nginx实战
  • 零成本实现商品图换背景
  • 静态路由实验(2)
  • Vue3 深度解析:渲染器与渲染函数的奥秘
  • 【PTA数据结构 | C语言版】链式栈的3个操作
  • linux 4.14 kernel屏蔽arm arch timer的方法
  • 网络编程与自动化
  • 高亚科技签约奕源金属,助力打造高效智能化采购管理体系
  • Flask 入门教程:用 Python 快速搭建你的第一个 Web 应用
  • 在 Ubuntu 上安装和配置 Kafka
  • 下一代防火墙-终端安全防护
  • 普林斯顿大学DPPO机器人学习突破:Diffusion Policy Policy Optimization 全新优化扩散策略
  • Eigen 几何模块深拆:Isometry3d vs Affine3d + 变换矩阵本质详解
  • OSPF协议:核心概念与配置要点解析
  • 虚拟项目[3D物体测量]
  • 从真人到数字分身:3D人脸扫描设备在高校数字人建模教学中的应用
  • 强化学习 MDP
  • Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 || 用于解决chromedriver版本不匹配问题
  • 《PyQt6-3D:开启Python 3D开发新世界》
  • Windows Edge 播放 H.265 视频指南
  • OpenAI正准备推出一款搭载人工智能功能的网络浏览器,试图直接挑战Alphabet旗下
  • 前端面试专栏-算法篇:21. 链表、栈、队列的实现与应用
  • NAT技术(网络地址转换)
  • 【实战】使用 ELK 搭建 Spring Boot Docker 容器日志监控系统
  • OSPF实验以及核心原理全解
  • 【SkyWalking】配置告警规则并通过 Webhook 推送钉钉通知
  • HP EVA SAN 数据恢复利器:Data recovery plugin for HP StorageWorks EVA
  • 前端项目集成husky + lint-staged + commitlint
  • Web-Bench:基于web标准和框架的benchmark
  • Fiddler中文版全面评测:功能亮点、使用场景与中文网资源整合指南