TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式
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 服务器 S1 和 DHCP 服务器 S2 都从自己的 IP 地址池中取出一个 IP 地址(IP1 和 IP2),提供 Offer 给主机 H1。
- 主机 H1 接收到 DHCP 服务器 S1 提供的 IP1 的 Offer 和 DHCP 服务器 S2 提供的 IP2 的 Offer 。它会选择自己感兴趣的地址,如 IP1,发送请求该 IP 地址 的消息。
- DHCP Request: 主机 H1 选择接收 DHCP 服务器 S1 提供的 IP1 的 Offer。它将会在网络广播对 IP1 的 DHCPREQUEST 请求。
- DHCP Acknowledgement:当 DHCP 服务器 S2 接收到主机 H1 接收 服务器 S1 的提供的 IP1 的 DHCPREQUEST 消息时,将自己提供的 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 位。当前网络数据链路层的协议类型, 实际指定了硬件地址类型。如,以太网的 HTYPE 是
1
。 - 硬件地址长度(HLEN): 8 位。硬件地址的长度(单位: 八位字节(Octets))。以太网的 HLEN 是
6
。 - 跳数(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 位。可选。服务器在发送 DHCPOFFER 或 DHCPACK 消息时,可以将自己的名字填入 SNAME 中。
- 引导文件名(FILE): 128 位。可选。客户端可以选择在 DHCPDISCOVER 消息中请求特定类型的引导文件。
- 选项(VEND): 可变。DHCP 选项格式如下图。DHCP 选项包括 DHCPDISCOVER(1),DHCPOFFER(2) 等。具体内容可查看 Summary Of DHCP Options / BOOTP Vendor Information Fields。
参考文献
- Dynamic Host Configuration Protocol- Wikipedia
- DHCP Message Format - The TCP/IP Guide
- W.Richard Stevens等著,《TCP/IP 详解(卷一: 协议)》
TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式的更多相关文章
- DHCP (Dynamic Host Configuration Protocol )协议的探讨与分析
DHCP (Dynamic Host Configuration Protocol )协议的探讨与分析 问题背景 最近在工作中遇到了连接外网的交换机在IPv6地址条件下从运营商自动获取的DNS地址与本 ...
- TCP/IP(七)之玩转HTTP协议
前言 前面一篇的博文简单的介绍了一下属于应用层的HTTP协议,这一篇我将详细的学习HTTP协议,这也是做Web开发中一定要用到的协议.虽然我是做大数据的,但是多学习一点肯定是 没有坏处的.国庆放假7天 ...
- TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议
原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...
- TCP/IP 笔记 - ICMPv4和ICMPv6 : Internet控制报文协议
ICMP是一种面向无连接的协议,负责传递可能需要注意的差错和控制报文,差错指示通信网络是否存在错误(如目的主机无法到达.IP路由器无法正常传输数据包等.注意,路由器缓冲区溢出导致的丢包不包括在ICMP ...
- TCP/IP 笔记 6 netstat -s 命令查看每个协议统计数据
netstat -s 命令,查看每个协议统计数据的常用方法 lenovo-myc@lenovomyc-Lenovo-Product:~$ netstat -s Ip: total packets re ...
- 以太网接口TCP/IP协议介绍,说的很容易懂了
以太网接口TCP/IP协议介绍,说的很容易懂了 TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列. TCP/IP协议栈(按TCP/IP参考模型划分) 应用层 FTP SMTP HTT ...
- TCP/IP笔记(五)IP协议相关技术
IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP时无法实现通信的.必须还要又能够解析主机名称和MACdivide功能,以技术包在发送过程中异常情况处理的功能. 这篇主要介绍下DNS.ARP ...
- # 图解TCP/IP读书笔记(五)
第五章.IP协议相关技术 IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP是无法实现通信的,因此还有需要作为为IP的辅助的各种协议支持. 协议 作用 特点 DNS(Domain Name ...
- 浅谈OSI七层网络模型和TCP/IP四层模型
OSI七层网络模型 OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系. OSI七层模型 功能 ...
- 网络知识(1)TCP/IP五层结构
图1 数据流向图 1,网络基础 1.1 发展 古代:①烽火狼烟最为原始的0-1单bit信息传递:②飞鸽传书.驰道快马通信,多字节通信: 近代:①轮船信号灯:②无线电报[摩尔斯码]: 现代:①有线模拟通 ...
随机推荐
- Vue使用Element表单校验错误Cannot read property ‘validate’ of undefined
在做注册用户的页面使用表单校验一直提示Cannot read property 'validate' of undefined错误,其实这个错误的提示根据有多种情况,比较常见的就是 ref 的名字不一 ...
- JS基础笔记合集(1-3)
JavaScript合集 1. JS入门基础 2. JS数据类型 3. JS运算符 4. JS流程控制 5. JS对象 6. JS函数 7. JS面向对象 8. JS数组 9. JS内置对象 我追求理 ...
- Python3.9.5安装
参考教程1:https://www.cnblogs.com/xiaoyanhuo/p/16362875.html 参考教程2:https://www.cnblogs.com/feng18/p/5854 ...
- 谈谈我的「数字文具盒」 - NextCloud
接下来两篇主要谈论 Nextcloud 和 Obsidian,因为篇幅较长,所以单出罗列出来.本文主要介绍 Nextcloud 以及使用中的技巧和心得体会. Nextcloud Nextcloud 是 ...
- Isaac SDK & Sim 环境
Isaac 是 NVIDIA 开放的机器人平台.其 Isaac SDK 包括以下内容: Isaac Apps: 各种机器人应用示例,突出 Engine 特性或专注 GEM 功能 Isaac Engin ...
- 浅谈promise对象
背景: 最近项目在做小程序的开发,涉及设计一个统一的登录公共方法,当实现时涉及到多个异步请求,那么问题来了,如何让多个异步请求先后同步进行呢?很多人会想到使用多层嵌套套来实现,就像这样: functi ...
- 2022年7月13日,第四组 周鹏 JAVA认识的第一天,附加一个用JS写的计算器代码
心情:╭(╯^╰)╮ ╮(╯﹏╰)╭ (╯﹏╰)b 罒ω罒 |*´Å`)ノ ( Ĭ ^ Ĭ ) (ㄒoㄒ) o(╥﹏╥)o /(ㄒoㄒ)/~~ (〒︿〒) ┭┮﹏┭┮ ε(┬┬﹏┬┬)3 ε(┬┬﹏┬ ...
- Django简介以及基本使用
目录 Django简介以及基本使用 一.django简介 1.web框架的本质是什么 ? 2.python主流web框架有那些 ? 3.web框架的推导过程 二.基本使用 1.运行django注意事项 ...
- 一、tcp三次握手
(1)首先客户端向服务器端发送一段tcp报文,其中标志位为SYN,表示"请求创建新连接"序列号为sqe=x,随后进入SYN_SEND状态 (2)服务器端接受到客户端发送的tcp报文 ...
- flutter报错The type of the function literal can't be inferred because the literal has a block as its body.A value of type 'String?' can't be assigned to a variable of type 'String'.
flutter有一些报错如下 The type of the function literal can't be inferred because the literal has a block as ...