摘要:DHCP 是 Dynamic Host Configuration Protocol 的缩写,动态主机配置协议,它是一个用于局域网内自动分配 IP 地址和配置信息的网络协议,位于 OSI 七层网络模型里的应用层,须借助传输层的 UDP 协议(通过67和68端口
每日分享一个有趣的计算机小知识,今日话题:DHCP
DHCP 是 Dynamic Host Configuration Protocol 的缩写,动态主机配置协议,它是一个用于局域网内自动分配 IP 地址和配置信息的网络协议,位于 OSI 七层网络模型里的应用层,须借助传输层的 UDP 协议(通过67和68端口)来发送和接收数据。
DHCP 用一台或一组 DHCP 服务器来自动为客户端设备分配和管理以下网络配置参数:
IP 地址(IPv4 或 IPv6)子网掩码(Subnet Mask)默认网关(Default Gateway)DNS服务器地址等就是当我们用手机或电脑连接网络时,DHCP 服务器(像家里一般就是路由器)会自动为我们完成下面3件比较关键的事情:
#技术分享给我们的设备分配一个唯一标识的IP地址,如:192.168.1.300,确保我们的设备能在网络中被唯一识别。提供子网掩码、默认网关(即路由器地址)这些配置信息,好让设备知道怎么与局域网内以及外网通信。下发DNS服务器的地址,让设备可以通过域名找到对应的IP地址。DHCP 收发消息都是 基于 UDP 协议(需快速分配 IP,本身也有重试机制,所以不用担心网络丢包), DHCP 服务器固定使用67 端口 接收客户端请求并发送响应,DHCP 客户端固定使用68 端口 发送请求并接收响应。
DHCP 服务器分配 IP 地址过程的四次握手:
发现 -> 提供 -> 请求 -> 确认
Discover当客户端设备接入网络并设置为自动获取 IP 时,它并不知道 DHCP 服务器在哪里,所以客户端会广播一个 Discover 消息来询问 DHCP 服务器。
Offer当网络中的 DHCP 服务器(如路由器)收到这个广播消息后,会从预先配置好的 IP 池中选一个可用的 IP 地址,然后再通过广播方式(此时客户端还无 IP,无法单播)回复一个 Offer 消息,告诉客户端可用的 IP 地址,如果有多台 DHCP 服务器,客户端则会收到多个 Offer 消息。
Request客户端会选择收到的第一个 Offer 消息,然后再广播发送一个 Request 消息,未被选中的 DHCP 服务器收到消息后则会自动回收之前发出的 IP 地址。
ACK被选中的 DHCP 服务器收到客户端发来的 Request 消息后,会再发送一个单播(此时已经知道客户端选了自己给的 IP 地址)ACK 消息进行确认,消息中包含 IP 地址的有效租约和其他配置信息。当客户端收到这个 ACK 消息时,就会用选择的 IP 地址和配置参数来配置自己的网络。
DHCP 的核心作用其实就是减少人工配置和高效管理利用 IP 地址,在没有 DHCP 之前,想要上网需要通过下面2种方式:自己手动配置静态 IP 地址或使用 PPPoE 拨号。
第一种需要在计算机的网络设置中手动指定 IP 地址、子网掩码、默认网关以及 DNS 服务器等信息,现在我们的电脑中依然可以这样设置,但是很容易配置重复 IP 导致设备无法联网。第二种则每次上网前需要先拨号,然后运营商的服务器会为你的设备分配一个动态的 IP 地址。
1993年10月,互联网工程任务组 IETF 负责动态主机配置开发设计的工作组发布了 RFC 1531,正式定义 DHCP 协议,其前身为 BOOTP(Bootstrap Protocol)引导协议。由于 RFC 1531中存在编辑错误,同月又发布了修正的 RFC 1541,成为 DHCP 协议的首个标准规范。
1997年3月,IETF 发布了 RFC 2131和 RFC 2132,正式确立 DHCPv4 为 IPv4 网络的标准协议。随着 IPv4地址枯竭,2003年 IETF 发布了 RFC 3315,正式定义了专为 IPv6设计的 DHCPv6。
来源:墨码行者一点号