DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个网络协议,用于在IP网络中自动分配IP地址和其他网络配置信息给主机。它简化了网络管理员的工作,并避免了手动配置IP地址可能导致的错误和冲突。
一、DHCP的基本概念
1.1 作用
DHCP 的主要功能是自动为网络设备分配:
-
IP地址
-
子网掩码
-
默认网关
-
DNS服务器
-
其他选项(如NTP服务器、WINS服务器等)
1.2 工作模式
DHCP 的通信采用客户端-服务器模式:
-
DHCP客户端:如计算机、手机、打印机等请求网络配置的设备。
-
DHCP服务器:提供并管理IP地址池、处理请求并响应的服务器。
二、DHCP的工作过程(DORA过程)
DHCP 分配IP地址的过程可简记为 DORA 四步:
-
Discover(发现):
-
客户端广播发送 DHCP Discover 报文,寻找可用的DHCP服务器。
-
-
Offer(提供):
-
所有收到 Discover 的DHCP服务器响应 DHCP Offer 报文,提供一个可用IP和配置信息。
-
-
Request(请求):
-
客户端从中选择一个Offer,并广播发送 DHCP Request 报文,表明接受该配置。
-
-
Acknowledge(确认):
-
服务器收到 Request 后,发送 DHCP ACK 报文,确认分配,客户端完成配置。
-
注意:如果服务器认为请求有误,也可能返回 DHCP NAK(拒绝)。
三、DHCP 报文格式(基于UDP)
-
使用端口:
-
客户端:UDP 68
-
服务器:UDP 67
-
DHCP 报文字段(简略):
-
op
:操作码(1 = 请求,2 = 应答) -
xid
:事务ID -
yiaddr
:“你的”IP地址 -
siaddr
:服务器IP -
chaddr
:客户端MAC地址 -
options
:DHCP特有的扩展字段,如消息类型、租期、网关、DNS等
四、IP租约(Lease)
DHCP 不是永久分配IP,而是临时租用。每个IP分配都有一个租期(lease time)。租约到期后,客户端可以向服务器发送 DHCP Request 请求续租。
如果客户端关机或离网,服务器可将该IP回收并重新分配。
五、DHCP的类型
5.1 动态分配(Dynamic Allocation)
服务器动态从地址池中选择一个IP分配,适用于大部分设备。
5.2 自动分配(Automatic Allocation)
客户端第一次请求后,服务器记录分配结果,以后每次都分配同一个IP。
5.3 手动分配(Static Assignment,MAC绑定)
管理员为某个MAC地址静态绑定一个IP地址。常用于服务器、打印机等固定设备。
六、DHCP常见安全问题
-
IP地址欺骗:恶意用户伪造DHCP服务器,诱导用户获取错误配置。
-
地址耗尽攻击:攻击者发送大量DHCP请求,耗尽地址池。
解决方案
-
使用DHCP Snooping(交换机层面)
-
对可信设备使用MAC绑定
-
网络访问控制(如802.1X)
七、DHCP 与 DNS 的协同
DHCP 可以与 DNS 联动,在分配IP地址的同时动态更新DNS记录,实现主机名与IP的同步。
八、应用场景
-
企业局域网
-
家庭网络
-
大型公共Wi-Fi
-
数据中心虚拟网络环境
热门日志
分类
- Django(4)
- ssdb(1)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- about(1)
- git(9)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(18)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(37)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(73)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Php(102)
- Windows(8)
- Message(48)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)
最新日志
- DHCP(Dynamic Host Configuration Protocol) 动态主机配置协议
- 从技术专家到战略领袖:成就技术总监的路径与思维
- python 如何读取超大的文件
- python requests 模块
- 如何给自己充电?
- 告别2024,迎接2025:深耕梦想,向前而行
- linux 的 dns 缓存,NSCD 服务
- The following untracked working tree files would be overwritten by checkout
- insecure connection not allowed,产生原因及如何解决
- 逆境乐观,顺境警醒:生活的智慧与力量