TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式

关于 DHCP(DHCP, Dynamic Host Configuration Protocol) 协议

我们知道 IP 协议需要参与通信的网络设备接口具有 IP 地址。一个局域网会经常接入新的主机,而接入局域网的主机也可能随时离开该局域网,这就让人工手动的分配 IP 地址几乎成为了不可能。DHCP 协议就是解决动态分配 IP 地址应用层协议

动态主机配置协议(DHCP, Dynamic Host Configuration Protocol) 是一种基于 UDP/IP 网络的网络管理协议。DHCP 服务器动态的分配 IP 地址和其他网络配置参数给网络中的每个设备,以使它们可以跟其他的 IP 网络通信。
(The Dynamic Host Configuration Protocol (DHCP) is a network management protocol used on UDP/IP networks whereby a DHCP server dynamically assigns an IP address and other network configuration parameters to each device on a network so they can communicate with other IP networks.)

DHCP 协议的基本内容

  • 初始状态: 在如下图的局域网中,新加入 主机 H1
  • DHCP Discovery主机 H1 发现自己没有 IP 地址,就会用 0.0.0.0:68 作为自己的地址,发送 DHCPDISCOVER 消息到广播地址 255.255.255.255:67,以发现可用的 IP 地址
  • DHCP Offer主机 H1 广播的 DHCPDISCOVER 消息在整个局域网内传输,“看不懂”的网络设备(如,图中的主机 H2主机 H3)就直接将收到的包丢弃。DHCP 服务器 收到该消息后,就会从自己的 IP 地址池中取出一个 IP 地址提供给 主机 H1,并通过广播告诉主机 H1。如图中的 DHCP 服务器 S1DHCP 服务器 S2 都从自己的 IP 地址池中取出一个 IP 地址(IP1 和 IP2),提供 Offer主机 H1
  • 主机 H1 接收到 DHCP 服务器 S1 提供的 IP1OfferDHCP 服务器 S2 提供的 IP2Offer 。它会选择自己感兴趣的地址,如 IP1,发送请求该 IP 地址 的消息。
  • DHCP Request: 主机 H1 选择接收 DHCP 服务器 S1 提供的 IP1Offer。它将会在网络广播对 IP1DHCPREQUEST 请求。
  • DHCP Acknowledgement:当 DHCP 服务器 S2 接收到主机 H1 接收 服务器 S1 的提供的 IP1DHCPREQUEST 消息时,将自己提供的 IP2 放入地址池,等待其他网络设备请求。而 主机 H1 接收到 DHCPREQUEST 消息 后,确认主机 H1愿意接收自己提供的 IP1。此时如果 IP1 没有分配出去,则将主机 H1 绑定 IP1,并回复一个 DHCOACK 消息给 主机 H1

DHCP 中继(relaying)

一般来讲,在简单网络中,一个 DHCP 服务器供同一局域网中的网络设备使用。但在某些复杂情况下,一个 DHCP 服务器 可能为多个子网提供服务,而由于此时请求 DHCP 服务的主机还没有分配 IP 地址,因此需要 DHCP 中继代理向各局域网转发 DHCP 消息

通常情况下,DHCP 中继代理不会参与客户机与服务器之间所有的 DHCP 流量交换。而是中继那些广播消息。

租约(lease)

通常情况下,DHCP 服务器 会维护一个供分配的地址池,每次从地址池中取出地址分配给请求的客户机。分配给客户机的地址只在一段时间内有效,这段时间称为租用期(lease duration)。客户机只能在租用期内使用分配的地址。客户机在租用期过半时开始尝试续订租约。

DHCP 协议消息

  • 操作(OP): 8 位。标识消息是请求(1) 或应答(2)。
  • 硬件类型(HTYPE): 8 位。当前网络数据链路层的协议类型, 实际指定了硬件地址类型。如,以太网HTYPE1
  • 硬件地址长度(HLEN): 8 位。硬件地址的长度(单位: 八位字节(Octets))。以太网的 HLEN6
  • 跳数(HOPS): 8 位。保存消息传输过程中的中继次数。消息发送方将该值设置为 0,并在每次中继时递增。
  • 事务 ID(XID):32 位。客户机选择的一个随机数,以标识消息。服务器在响应时,将该字段复制到响应消息中,以保证响应和请求的匹配。
  • 秒数(SECS):16 位。第一次尝试申请或重新申请地址经过的秒数。

    繁忙的 DHCP 服务器可能会在多个客户端请求未完成时使用此功能来优先处理响应。
    (This may be used by a busy DHCP server to prioritize replies when multiple client requests are outstanding.)

  • 标志(FLAGS):16 位。目前只有第一位用作广播标志(Broadcast Flag)。如果设置了广播标志,则表示该客户机只能接收广播消息(可能还没有 IP 地址)。其他位保留,设为 0
  • 客户机 IP 地址(CIADDR): 32 位。请求者的 IP 地址,如果已知的话。否则,为 0
  • “你的” IP 地址(YIADDR): 32 位。DHCP 服务器 提供给主机的地址。
  • (下一)服务器 IP 地址(SIADDR): 32 位。客户机应该在引导过程的下一步中使用服务器的地址。
  • 网关(中继) IP 地址(GIADDR):32 位。由 DHCP 中继填写,它在转发 DHCP 消息时将自己的地址填入 GIADDR
  • 客户机硬件地址(CHADDR): 128 位。保存客户机的硬件地址。
  • 服务器名(SNAME): 64 位。可选。服务器在发送 DHCPOFFERDHCPACK 消息时,可以将自己的名字填入 SNAME 中。
  • 引导文件名(FILE): 128 位。可选。客户端可以选择在 DHCPDISCOVER 消息中请求特定类型的引导文件。
  • 选项(VEND): 可变DHCP 选项格式如下图。DHCP 选项包括 DHCPDISCOVER(1)DHCPOFFER(2) 等。具体内容可查看 Summary Of DHCP Options / BOOTP Vendor Information Fields

参考文献

TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式的更多相关文章

  1. DHCP (Dynamic Host Configuration Protocol )协议的探讨与分析

    DHCP (Dynamic Host Configuration Protocol )协议的探讨与分析 问题背景 最近在工作中遇到了连接外网的交换机在IPv6地址条件下从运营商自动获取的DNS地址与本 ...

  2. TCP/IP(七)之玩转HTTP协议

    前言 前面一篇的博文简单的介绍了一下属于应用层的HTTP协议,这一篇我将详细的学习HTTP协议,这也是做Web开发中一定要用到的协议.虽然我是做大数据的,但是多学习一点肯定是 没有坏处的.国庆放假7天 ...

  3. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

  4. TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议

    ICMP是一种面向无连接的协议,负责传递可能需要注意的差错和控制报文,差错指示通信网络是否存在错误(如目的主机无法到达.IP路由器无法正常传输数据包等.注意,路由器缓冲区溢出导致的丢包不包括在ICMP ...

  5. TCP/IP 笔记 6 netstat -s 命令查看每个协议统计数据

    netstat -s 命令,查看每个协议统计数据的常用方法 lenovo-myc@lenovomyc-Lenovo-Product:~$ netstat -s Ip: total packets re ...

  6. 以太网接口TCP/IP协议介绍,说的很容易懂了

      以太网接口TCP/IP协议介绍,说的很容易懂了  TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列. TCP/IP协议栈(按TCP/IP参考模型划分) 应用层 FTP SMTP HTT ...

  7. TCP/IP笔记(五)IP协议相关技术

    IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP时无法实现通信的.必须还要又能够解析主机名称和MACdivide功能,以技术包在发送过程中异常情况处理的功能. 这篇主要介绍下DNS.ARP ...

  8. # 图解TCP/IP读书笔记(五)

    第五章.IP协议相关技术 IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP是无法实现通信的,因此还有需要作为为IP的辅助的各种协议支持. 协议 作用 特点 DNS(Domain Name ...

  9. 浅谈OSI七层网络模型和TCP/IP四层模型

    OSI七层网络模型 OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系. OSI七层模型 功能 ...

  10. 网络知识(1)TCP/IP五层结构

    图1 数据流向图 1,网络基础 1.1 发展 古代:①烽火狼烟最为原始的0-1单bit信息传递:②飞鸽传书.驰道快马通信,多字节通信: 近代:①轮船信号灯:②无线电报[摩尔斯码]: 现代:①有线模拟通 ...

随机推荐

  1. Redux 的困扰与如何技术选型

    文章的名字我想了很久,备选项有"我再不推荐 Redux","Redux 为什么令我头疼","Redux 进化启示录"等等.通过这一系列名字我 ...

  2. PGL图学习之图神经网络ERNIESage、UniMP进阶模型[系列八]

    PGL图学习之图神经网络ERNIESage.UniMP进阶模型[系列八] 原项目链接:fork一下即可:https://aistudio.baidu.com/aistudio/projectdetai ...

  3. C# Math 中的常用的数学运算

    〇.动态库 System.Math.dll 引入动态库 using System.Math;   Math 为通用数学函数.对数函数.三角函数等提供常数和静态方法,使用起来非常方便,下边简单列一下常用 ...

  4. TKE 超级节点,Serverless 落地的最佳形态

    陈冰心,腾讯云产品经理,负责超级节点迭代与客户拓展,专注于 TKE Serverless 产品演进. 背景 让人又爱又恨的 Serverless Serverless 炙手可热,被称为云原生未来发展的 ...

  5. 【Kafka】Quota配额命令、文档相关概念

    一.多租赁模式基于 Zookeeper和 kafka-configs.sh 管理所有用户 1.步骤 l 基于zookeeper,实现用户管理 l 配置broker认证信息,并进行平滑更新 l 配置cl ...

  6. Java手写一个批量获取数据工具类

    1. 背景 偶尔会在公司的项目里看到这样的代码 List<Info> infoList = new ArrayList<Info>(); if (infoidList.size ...

  7. Burpsuite2022.1详细图文安装教程(含工具链接)

    ​ 应用概述: Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具.Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程.所有工具都共享一个请求,并能处理对应 ...

  8. ModuleNotFoundError: No module named 'MySQLdb'

    执行命令 python manage.py makemigrations时抛出以下错误 Traceback (most recent call last): File "D:\Program ...

  9. Django重点及面试题

    Django 简述python三大主流web框架 """ django 大而全,类似于航空母舰 但是有时候过于笨重 flask 小而精,类似于游骑兵(单行代码就可以起一个 ...

  10. JDBC的一些基础认识,写的不是特别完善,希望大家看的时候别太介意嘿嘿嘿

    JDBC 1,概念和本质 Java DataBase Connectivity Java 数据库链接, Java语言操作数据库 JDBC的本质:是一套操作所有关系型数据库的规则(接口)而JDBC所有的 ...