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信息传递:②飞鸽传书.驰道快马通信,多字节通信: 近代:①轮船信号灯:②无线电报[摩尔斯码]: 现代:①有线模拟通 ...
随机推荐
- C温故补缺(十一):文件读写
文件读写 打开文件 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件 FILE *fopen( const char *filename, const char *mode ); fil ...
- Solon v1.11.0 发布,Hello Java
一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...
- typora使用CSDN图床
前言 软件下载地址 typora 是一款好用的 markdown 文档编辑器. 我之前研究过CSDN上传图片的接口,前几天发现了Typora 这个好用的软件,可以自定义图床,因为我很多文章图片资源用的 ...
- python调用程序路径中包空格,及包含特殊字符问题
解决办法 import os s = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"' print(s) os. ...
- 【终极解决办法】pyinstaller打包exe没有错误,运行exe提示Failed to execute script 'mainlmageWindows' due tounhandled exception: No module named 'docx'
一.通过pyinstaller打包exe可执行文件,由于我的py是多个,所以要先生成spec文件,代码如下: pyi-makespec mainImageWindows.py 此时生产了一个mainI ...
- GitHub上的一个笔记相关小项目
就是一个笔记屑小项目, C++编写,有想一起开发的私信 AlgorithWeaver/V-note (github.com) 项目名V-note QVQ
- 【每日一题】【奇偶分别中心扩展/动态规划】2022年2月5日-NC最长回文子串的长度
描述对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度. 方法1:奇数偶数分别从中心扩展 import java.util.*; public c ...
- 【Java SE进阶】Day12 函数式接口、函数式编程(Lambda表达式)
一.函数式接口介绍 1.概念 仅有一个抽象方法的接口 适用于函数式编程(Lambda使用的接口) 语法糖:方便但原理不变,如for-each是Iterator的语法糖 Lambda≈匿名内部类的语法糖 ...
- 一个小时,200行代码,手写Spring的IOC、DI、MVC
一.概述 配置阶段:主要是完成application.xml配置和Annotation配置. 初始化阶段:主要是加载并解析配置信息,然后,初始化IOC容器,完成容器的DI操作,已经完成HandlerM ...
- OpenAI 推出超神 ChatGPT 注册教程来了
前几天,OpenAI 推出超神 ChatGPT,非常火爆.但是呢,因为不可抗力原因,大部分人无法体验到.这里我分享一下注册的攻略. 准备 首先能能访问 Google(前置条件,不能明确说,懂得都懂) ...