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信息传递:②飞鸽传书.驰道快马通信,多字节通信: 近代:①轮船信号灯:②无线电报[摩尔斯码]: 现代:①有线模拟通 ...
随机推荐
- 【终极解决办法】pyinstaller打包exe没有错误,运行exe提示Failed to execute script 'mainlmageWindows' due tounhandled exception: No module named 'docx'
一.通过pyinstaller打包exe可执行文件,由于我的py是多个,所以要先生成spec文件,代码如下: pyi-makespec mainImageWindows.py 此时生产了一个mainI ...
- 一文教会你如何在内网搭建一套属于自己小组的在线 API 文档?
Hello,大家好,我是阿粉,对接文档是每个开发人员不可避免都要写的,友好的文档可以大大的提升工作效率. 阿粉最近将项目的文档基于 Gitbook 和 Gitlab 的 Webhook 功能的在内网部 ...
- Kafka教程(一)基础入门:基本概念、安装部署、运维监控、命令行使用
Kafka教程(一)基础入门 1.基本概念 背景 领英->Apache 分布式.消息发布订阅系统 角色 存储系统 消息系统 流处理平台-Kafka Streami ...
- 详解redis网络IO模型
前言 "redis是单线程的" 这句话我们耳熟能详.但它有一定的前提,redis整个服务不可能只用到一个线程完成所有工作,它还有持久化.key过期删除.集群管理等其它模块,redi ...
- Mybatis源码解析之执行SQL语句
作者:郑志杰 mybatis 操作数据库的过程 // 第一步:读取mybatis-config.xml配置文件 InputStream inputStream = Resources.getResou ...
- 常用的渗透测试工具——SQLMap安装
SQLMap是一个自动化的SQL注入工具,其主要功能是扫描.发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL.Qracle.PostgreSQL.Microsoft ...
- week_Last
Andrew Ng 机器学习笔记 总结! 注:等下用xmind做一个树状图! 来回忆知识! 所以...树状图待补.... 最后,谢谢吴恩达老师!! 感谢吴恩达老师的无私付出!!
- 基于.NetCore开发博客项目 StarBlog - (25) 图片接口与文件上传
前言 上传文件的接口设计有两种风格,一种是整个项目只设置一个接口用来上传,然后其他需要用到文件的地方,都只存一个引用ID:另一种是每个需要文件的地方单独管理各自的文件.这俩各有优劣吧,本项目中选择的是 ...
- Linux基础守护进程、高级IO、进程间通信
守护进程(Daemon) 前言 Linux常用于服务器,程序通常不运行在前台.运行于前台的进程和终端关联,一旦终端关闭,进程也随之退出.因为守护进程不和终端关联,因此它的标准输出和标准输入也无法工作, ...
- Ynoi 数据结构题选做
Ynoi 数据结构题选做 前言 我将成为数据结构之神!坚持 lxl 党的领导,紧随 nzhtl1477(女装灰太狼1477)的脚步.无论过去.现在还是未来,分块始终是实现 data structure ...