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信息传递:②飞鸽传书.驰道快马通信,多字节通信: 近代:①轮船信号灯:②无线电报[摩尔斯码]: 现代:①有线模拟通 ...
随机推荐
- hashlib/subprocess/logging模块
内容概要 hashlib加密模块 subprocess模块 logging日志模块 软件开发主要流程 加密详情 1.加密的意义: 加密是指将明文数据转化程密文数据>>>>为了保 ...
- CopyOnWriteArrayList 是如何保证线程安全的?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 在上一篇文章里,我们聊到了ArrayList 的线程安全问题,其中提到了 Copy ...
- Devexpress控件searchLookUpEdit获得选中行的其他列数据
使用searchLookUpEdit控件获得选中行的其他列的数据.比如有一列代码列和一列描述.那么我们选中一行后想获得选中的代码和描述.可以在searchLookUpEdit1_EditValueCh ...
- C温故补缺(三):存储类声明符(auto,register,extern,static)
auto,register,extern,static 四个存储类声明符,用于定义变量/函数的作用域和声明周期 ① auto:自动变量,即普通变量,在平时定义变量时会自动赋予其auto类型 被auto ...
- vscode分级文件夹
如果vscode不小心设置成文件独立展开,一堆文件看着很乱 这样设置 首选项-设置-功能-资源管理器-compack folders 就可以折叠文件夹了
- 【每日一题】【回溯backtrace】N皇后
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案. 每一种解法包含一个不同的 n 皇后问 ...
- 单节锂电池充电管理芯片,IC电路图
PW4054 是一款性能优异的单节锂离子电池恒流/恒压线性充电器.PW4054 适合给 USB 电源以及适配器电源供电.基于特殊的内部 MOSFET 架构以及防倒充电路, PW4054 不需要外接检测 ...
- SpringBoot内置tomcat启动过程及原理
作者:李岩科 1 背景 SpringBoot 是一个框架,一种全新的编程规范,他的产生简化了框架的使用,同时也提供了很多便捷的功能,比如内置 tomcat 就是其中一项,他让我们省去了搭建 tomca ...
- Graph Neural Network——图神经网络
本文是跟着李沐老师的论文精度系列进行GNN的学习的,详细链接请见:零基础多图详解图神经网络(GNN/GCN)[论文精读] 该论文的标题为<A Gentle Introduction to Gra ...
- 如何在路由绑定中使用 IParsable
IParsable 是 .Net 7 中新增的接口,它可以将字符串转换为对应的实体.在 Controller 的 Route 绑定中可以使用 IParsable 来绑定复杂的实体. 实验背景 假设有一 ...