每日一个计算机小知识: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。

相关推荐
计算机毕设VX:Fegn08952 分钟前
计算机毕业设计|基于springboot + vue小区人脸识别门禁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
7ACE1 小时前
Wireshark TS | 超时重传时间不翻倍
网络协议·tcp/ip·wireshark
寒水馨1 小时前
com.github.oshi : oshi-core 中文文档(中英对照·API·接口·操作手册·全版本)以6.4.0为例,含Maven依赖、jar包、源码
java·后端
踏浪无痕1 小时前
CommitLog顺序写 —— 为什么RoceketMQ所有消息都往一个文件追加?
后端·面试·rocketmq
武子康1 小时前
大数据-200 决策树信息增益详解:信息熵、ID3 选特征与 Python 最佳切分实现
大数据·后端·机器学习
嘻哈baby1 小时前
MySQL远程连接配置与安全实战
后端
微爱帮监所写信寄信2 小时前
微爱帮监狱寄信写信工具照片高清处理技术架构
开发语言·人工智能·网络协议·微信·php
小码编匠2 小时前
工业视觉 C# + OpenCvSharp 的模板匹配实战
后端·c#·.net
To Be Clean Coder2 小时前
【Spring源码】getBean源码实战(二)
java·后端·spring
li星野2 小时前
TCP 套接字+TLS+HTTP 基本认证
网络协议·tcp/ip·http