每日一个计算机小知识:DHCP

每日分享一个有趣的计算机小知识,今日话题:DHCP

DHCP是 Dynamic Host Configuration Protocol 的缩写,动态主机配置协议,它是一个用于局域网内自动分配IP地址和配置信息的网络协议,位于OSI七层网络模型里的应用层,须借助传输层的UDP协议(通过67和68端口)来发送和接收数据。

DHCP用一台或一组DHCP服务器来自动为客户端设备分配和管理以下网络配置参数:

  • IP 地址(IPv4 或 IPv6)
  • 子网掩码(Subnet Mask)
  • 默认网关(Default Gateway)
  • DNS服务器地址等

就是当我们用手机或电脑连接网络时,DHCP服务器(像家里一般就是路由器)会自动为我们完成下面3件比较关键的事情:

  1. 给我们的设备分配一个唯一标识的IP地址,如:192.168.1.300,确保我们的设备能在网络中被唯一识别。
  2. 提供子网掩码、默认网关(即路由器地址)这些配置信息,好让设备知道怎么与局域网内以及外网通信。
  3. 下发DNS服务器的地址,让设备可以通过域名找到对应的IP地址。

DHCP 收发消息都是基于UDP协议(需快速分配IP,本身也有重试机制,所以不用担心网络丢包), DHCP 服务器固定使用67端口 接收客户端请求并发送响应,DHCP 客户端固定使用68端口发送请求并接收响应。

DHCP服务器分配IP地址过程的四次握手:

发现 -> 提供 -> 请求 -> 确认

  1. Discover

当客户端设备接入网络并设置为自动获取IP时,它并不知道DHCP服务器在哪里,所以客户端会广播一个Discover消息来询问DHCP服务器。

  1. Offer

当网络中的DHCP服务器(如路由器)收到这个广播消息后,会从预先配置好的IP池中选一个可用的IP地址,然后再通过广播方式(此时客户端还无 IP,无法单播)回复一个Offer消息,告诉客户端可用的IP地址,如果有多台DHCP服务器,客户端则会收到多个Offer消息。

  1. Request

客户端会选择收到的第一个Offer消息,然后再广播发送一个Request消息,未被选中的DHCP服务器收到消息后则会自动回收之前发出的IP地址。

  1. ACK

被选中的DHCP服务器收到客户端发来的Request消息后,会再发送一个单播(此时已经知道客户端选了自己给的IP地址)ACK消息进行确认,消息中包含IP地址的有效租约和其他配置信息。当客户端收到这个ACK消息时,就会用选择的IP地址和配置参数来配置自己的网络。

没有DHCP时怎么上网?

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。

相关推荐
咖啡教室5 小时前
每日一个计算机小知识:ARP协议
后端·网络协议
JavaTree20176 小时前
【Spring Boot】Spring Boot解决循环依赖
java·spring boot·后端
cj6341181506 小时前
SpringBoot配置Redis
java·后端
Lisonseekpan7 小时前
Java Stream 流式编程
java·后端
程序员小假7 小时前
运行时有出现过什么异常?
java·后端
凤山老林7 小时前
还在用JDK8?JDK8升级JDK11:一次价值千万的升级指南
java·开发语言·jvm·spring boot·后端·jdk
Java之路行者8 小时前
Spring Boot防重复提交实战:让接口安全提升200%!
spring boot·后端·安全
陈随易8 小时前
改变世界的编程语言MoonBit:配置系统介绍(下)
前端·后端·程序员
知其然亦知其所以然8 小时前
SpringAI + ONNX:打造不花钱、不联网的向量引擎!
后端·spring·aigc