https://tools.ietf.org/html/rfc2131
动态主机配置协议
本备忘录的状态
本文档为以下内容指定了Internet标准跟踪协议:互联网社区,并要求讨论和提出建议改进。请参考最新版的“互联网标准化状态的官方协议标准”(STD1)协议的状态。该备忘录的分发是无限的。
摘要
动态主机配置协议(DHCP)提供了一个框架,用于将配置信息传递到TCPIP网络上的主机。DHCP基于引导协议(BOOTP),添加了自动分配可重用网络地址的功能以及其他配置选项。DHCP捕获行为BOOTP中继代理,和DHCP参与者可以互操作与BOOTP参与者。
1.简介
动态主机配置协议(DHCP)向Internet主机提供配置参数。DHCP由两个部分组成:一种用于将特定主机的配置参数从DHCP服务器传送到主机的协议,以及一种将网络地址分配给主机的机制。
dhcp建立在客户机-服务器模型上,在该模型中,指定的dhcp服务器主机分配网络地址并将配置参数传递给动态配置的主机。在本文档的其余部分中,“服务器”一词是指通过dhcp提供初始化参数的主机,“客户端”一词是指从dhcp服务器请求初始化参数的主机。
除非由系统管理员明确配置,否则主机不应充当DHCP服务器。如果允许随机主机响应dhcp请求,将妨碍本网络中不同的硬件和协议实现可靠的操作。例如,IP需要在协议实现(工具)软件中设置许多参数。因为IP可以在许多不同类型的网络硬件上使用,所以不能猜测或假设这些参数的值具有正确的默认值。此外,已分配地址分配方案依赖于轮询/防御机制来发现已使用的地址。IP主机并不总能保护其网络地址,因此像这一个已分配地址,发布机无法保证避免分配重复的网络地址。
DHCP支持三种IP地址分配机制:在“自动分配”中,dhcp为客户端分配一个永久ip地址;在“动态分配”中,dhcp在一段有限的时间内为客户端分配一个ip地址(或直到客户端明确放弃地址);在“手动分配”中,客户端的IP地址由网络管理员分配,而DHCP仅用于将分配的地址传递给客户端。根据网络管理员的策略,特定网络将使用这些机制中的一个或多个。
动态分配是三种机制中唯一允许自动重用被分配地址的客户端不再需要的地址的机制。因此,动态分配对于将地址分配给仅暂时连接到网络的客户机或对于在不需要永久ip地址的客户机组之间共享有限的ip地址池特别有用。动态分配也可以是将ip地址分配给永久连接到ip地址足够稀少的网络的新客户机的好选择,当旧客户机退役时,回收它们非常重要。手动分配允许使用dhcp来消除在需要在dhcp机制之外管理ip地址分配的环境中(无论出于何种原因)使用ip地址手动配置主机的易出错过程。
动态分配是三种机制中唯一允许自动重用被分配地址的客户端不再需要的地址的机制。因此,动态分配对于将地址分配给仅暂时连接到网络的客户机或对于在不需要永久ip地址的客户机组之间共享有限的ip地址池特别有用。动态分配也可以是将ip地址分配给永久连接到ip地址少量的网络的新客户机的好选择,当旧客户机退出网络时,回收它们非常重要。在管理ip地址分配的环境中(无论出于何种原因)手动分配允许使用dhcp来消除在需要在dhcp机制之外,手动配置ip地址主机的容易出错过程。
dhcp消息的格式基于bootp消息的格式,以捕获bootp规范中描述的bootp中继代理行为,并允许现有bootp客户端与dhcp服务器的互操作性。使用bootp中继代理可以有效消除在每个物理网络上都有dhcp服务器。
对于新初始化的客户端,并非所有这些参数都是必需的。客户机和服务器可以协商只传输客户机要求的或特定于特定子网的参数。
dhcp允许但不要求配置与ip协议不直接相关的客户端参数。DHCP也不处理新配置的客户端在域中的注册
DHCP不用于配置路由器。
在本文件中,用于定义特定需求重要性的词语均加粗。这些话是:
“必须”
该词或形容词“必需”是指该项目是本规范的绝对要求。
“不得”
这句话的意思是这个项目是绝对禁止本规范。
“应该”
这个词或形容词“推荐”的意思是,在特定情况下有正当理由可以忽略这一项,但在选择不同的情景之前,应理解其全部含义并仔细权衡情景。
“不应该”
这句话的意思是,当所列行为是可接受的,甚至是有用的,在特定情况下可能存在正当理由,但是,在实现用这个标签描述的任何行为之前,应该理解其全部含义并仔细权衡案例。
“可以”
这个词或形容词“可选”意味着这个项目是真正可选的。
本文件使用以下术语:
"DHCP client"
DHCP客户端是使用DHCP获取配置参数(如网络地址)的Internet主机。
"DHCP server"
DHCP服务器是向DHCP客户端返回配置参数的Internet主机。
BOOTP relay agent
bootp中继代理或中继代理是在dhcp客户端和dhcp服务器之间传递dhcp消息的internet主机或路由器。dhcp被设计为使用bootp协议规范中指定的相同中继代理行为。
binding
绑定是配置参数的集合,至少包括与DHCP客户端关联或“绑定到”DHCP客户端的IP地址。绑定由DHCP服务器管理。
给出了dhcp的一般设计目标。
dhcp应该是一种机制,而不是策略。DHCP必须允许本地系统管理员在需要时控制配置参数;例如,本地系统管理员应该能够在需要时强制执行有关分配和访问本地资源的本地策略。
客户端不需要手动配置。每个客户机都应该能够在不需要用户干预的情况下发现适当的本地配置参数,并将这些参数合并到自己的配置中。
网络中不需要为单个客户端进行手动配置。在正常情况下,网络管理员不必输入任何单一客户端配置参数。
DHCP不需要在每个子网上的都有服务器。为了实现规模和经济性,dhcp必须跨路由器或通过bootp中继代理进行干预。
DHCP客户端必须准备好接收对配置参数请求的多个响应。一些安装可能包括多个重叠的dhcp服务器,以提高可靠性和性能。
dhcp必须与静态配置的非参与主机和现有的网络协议实现共存。
dhcp必须与rfc 951和rfc 1542所描述的bootp中继代理行为互操作
DHCP必须为现有的BOOTP客户端提供服务。
给出了特定于网络层参数传输的设计目标。DHCP必须:
保证任何特定的网络地址不会被多个dhcp客户端使用
在dhcp客户端重新启动时保留dhcp客户端配置。在可能的情况下,dhcp客户端响应每个请求应该使用 被分配相同的配置参数(例如,网络地址)
在服务器重新启动时保留dhcp客户端配置,并且在可能的情况下,尽管dhcp机制重新启动,仍应为dhcp客户端分配相同的配置参数
允许自动将配置参数分配给新客户机,以避免手动配置新客户机
支持将配置参数固定或永久分配给特定客户端。
2。协议摘要
从客户端的角度来看,dhcp是bootp机制的扩展。此行为允许现有的bootp客户端与dhcp服务器互操作,不需要对客户端的初始化软件进行任何更改。RFC1542[2]详细说明了BOOTP与DHCP客户端和服务器之间的交互[9]。有一些新的可选事务优化了dhcp客户端和服务器之间的交互,如第3节所述,图1给出了dhcp消息的格式,表1描述了dhcp消息中的每个字段。括号中的数字表示每个字段的大小(八位字节)。图中给出的字段的名称将在整个文档中用于引用dhcp消息中的字段。
dhcp和bootp有两个主要区别。首先,dhcp定义了一些机制,通过这些机制可以为客户端分配一个有限租约的网络地址,从而允许将网络地址串行重新分配给不同的客户端。其次,dhcp为客户端提供了一种机制,使其能够获取运行所需的所有ip配置参数。
dhcp在术语上引入了一个小的变化,旨在澄清其中一个字段的含义。bootp中的“vendor extensions”字段被重新命名为dhcp中的“options”字段。类似地,在bootp“vendor extensions”字段中使用的标记数据项(以前称为“vendor extensions”)现在只被称为“options”。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| op (1) | htype (1) | hlen (1) | hops (1) |
|报文的操作类型 |客的MAC地址类型|客的MAC地址长度|报文经中继数目 |
+---------------+---------------+---------------+---------------+
| xid (4) |
|客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数 |
+-------------------------------+-------------------------------+
| secs (2) | flags (2) |
|续约过程开始到现在所消耗的时间 |标识DHCP服务器应答报文是采用单播还是广播发送
+-------------------------------+-------------------------------+
| ciaddr (4) |
| DHCP客户端的IP地址 |
+---------------------------------------------------------------+
| yiaddr (4) |
| DHCP服务器分配给客户端的IP地址 |
+---------------------------------------------------------------+
| siaddr (4) |
| 下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址 |
+---------------------------------------------------------------+
| giaddr (4) |
| DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址 |
+---------------------------------------------------------------+
| chaddr (16) |
| DHCP客户端的MAC地址 |
+---------------------------------------------------------------+
| sname (64) |
| 为DHCP客户端分配IP地址的DHCP服务器名称 |
+---------------------------------------------------------------+