DHCP协议原理及应用
来源:互联网 发布:c语言char怎么输出 编辑:程序博客网 时间:2024/06/05 18:54
DHCP: 动态主机配置协议
TCP/IP协议想要运行正常的话,网络中的主机和路由器不可避免地需要配置一些信息(如接口的IP地址等)。有了这些配置信息主机/路由器才能提供/使用特定的网络服务。
主机信息的必要元素有:IP地址、子网掩码、DNS服务器IP地址
TCP/IP协议配置主机信息主要有三种方法:
1. 手动配置
2. 动态获取
3. 根据特定算法计算。
在网络中,我们把主机分为两大类,服务器主机和客户端主机,
+ 服务器主机: 一般采用手动配置
+ 客户端主机: 一般采用动态获取
服务器一般采用手动配置,而客户端一般动态获取。主要基于以下原因:
1. 客户主机比服务主机移动更频繁
2. 服务主机需要提供更可靠的服务,其配置信息应该减少对其他系统/主机的依赖
3. 客户主机比服务主机的数量要多得多。
4. 客户主机使用者的网络配置知识比服务主机的使用者低
DHCP有Bootp协议发展而来。Bootp协议提供了有限的主机信息配置,且主机信息已经配置就很难被修改。DHCP提供 几乎所有的主机信息的配置,且引入了租约等概念,使得主机信息能够动态发生变化。 DHCP向后兼容Bootp。
DHCP基于UDP/IP传输。DHCP服务器使用端口号67,DHCP 客户端使用端口号68.
DHCP 协议内容
DHCP 主要分为两部分: 地址的管理 和 配置信息的传递
+ 地址管理: 地址管理处理IP‘地址的动态分配、向客户端提供地址租约
+ 配置信息的传递: 包含DHCP报文格式、状态机
DHCP 地址管理
地址池 与 地址租约
在IP地址的动态分配中,DHCP客户端想DHCP服务器发送IP地址请求。DHCP服务器会维护一个 IP地址池,DHCP从地址池从取出一个IP回应给DHCP客户端。在地址分配时,DHCP服务器也会指定回应给DHCP客户端的IP地址的租约期,该地址只有在该租约期内可用,不过DHCP客户端可用在租约期内请求延长租约(更新租约期)。
- DHCP Client以广播的方式发出DHCP Discover报文。
- 所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
- DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
- DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
- DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
- DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。
DHCP 报文
Op: 报文类型,分为 两大类: Request(1) 和 Reply(2)
HW Type: 硬件类型,一般是以太网:1
HW Len: 硬件地址长度,单位字节。对应以太网:6(mac地址长度为6字节48bit)
Transaction ID:事务ID,随机数,有客户端生成,服务器Reply时,会把Request中的Transaction拷贝到Reply报文中。
Secs: 距离第一次发射IP请求或Renew请求过去的秒数
Flags:标志位,目前仅第一个bit有使用,置1 标明广播
Client IP Address:当前客户端的IP地址,如果当前客户端没有IP地址,则置0
Your IP Address: 服务器想客户端提供IP地址时,会把IP地址填入本字段
(Next)Server IP Address:客户端引导时需要的另一个服务器的IP地址
Gateway (Relay) IP Address: 网关(中继)IP地址,有DHCP 中继器在转发DHCP报文的时候填入
Server Name: Server名字,有64bytes,一般不使用,填充为0
Boot File name: boot file的路径,128bytes, 一般不使用,填充为0
Option: 选项,不定长度。 DHCP报文中比较重要的字段,后面会有比较详细的介绍。
DHCP Option
DHCP从Bootp拓展而来,DHCP报文也是有Bootp报文发展而来。但是DHCP在Bootp之上添加了许多功能,其报文也需要有一定的拓展。如果Bootp报文不能满足的内容,就以Option的形式存在于DHCP报文中。
DHCP协议其实就是携带许多Option的Bootp
DHCP有许多类型的Option,长度不一(但都是整数字节)。Option遵循以下格式
+ 如果Option没有值,则只有标志位之类的内容,则以一个字节表示
+ 如果Opiton有值,即Opiton是以下name-value对,则Opiton需要多个字节表示,其中第一个字节表示 option的名字,第二字节表示value的长度,第三个字节开始表示value。
DHCP支持大量的Option(Bootp也支持其中的部分),下面列举一些常用的
上面是常用的Option,DHCP报文与Option 255标识报文的结束。
在DHCP Option中,我们着重看下DHCP Message Type(53),DHCP Message Type标识DHCP消息类型,主要有一下类型
DHCP 协议 操作流程
主机新加入网络时,获取IP的流程
1. 新的client加入网络时,会使用0.0.0.0作为源地址,发送discover广播报文,查询网络上有哪些DHCP server,以及这些DHCP server 能Offer哪些IP地址
2. DHCP服务器接收到DHCP Discover报文后,回应Offer报文,提供IP地址(可能包含DNS等其他信息)给client
3. client 根据收到的Offer报文,选择一个DHCP server,并选择它提供的IP地址。然后广播Request报文,想DHCP Server请求该IP地址,同时想本地网络(尤其是其他DHCP Server)公告自己已经选择了某个DHCP Server的某个IP地址。
4. DHCP Server 回应ACK报文,将IP地址分配给Client端 (特殊情况:DHCP Server在发送Offer报文和接收到Request的短暂时间内把IP分配给了其他主机)
5. DHCP Client 收到ACK报文后,会针对获得的IP地址发送ARP Request,进行IP地址冲突检测。
6. 如果IP地址已经被其他主机使用,则Client放弃该IP地址,想Server发送DHCP DECLINE报文告诉Server该地址不能使用。然后一段时间后(一般10s)再此尝试获取该IP地址
7. 如果Client仍然无法使用该IP地址,则发送DHCP RELEASE报文,放弃该地址。
主机已经有IP地址,只想更新租约
1. 此时可以跳过DHCP Discover报文和DHCP Offer报文
2. Client发送携带当前IP地址的Request报文
3. 如果Server同意Client续约,则发送DHCP ACK报文。如果拒绝续约,则发送DHCPNAK报文。
* 主机只想更新IP地址以外的信息*
用DHCPINFORM 取代 DHCP Request报文。
1. 抓包分析:
(1)DHCP discover阶段:
(2)DHCP offer阶段:
(3)DHCP request阶段:
(4)DHCP ack阶段:
2. 总结:
阶段
源MAC
目标MAC
源IP
目标IP
Discover
PC机的MAC
全FF
0.0.0.0
255.255.255.255
Offer
Dhcp服务器或者中继器路由的MAC
Dhcp客户机的MAC
Dhcp服务器或者中继路由器的IP地址
准备分配的IP地址
Request
PC机的MAC
全FF
0.0.0.0
255.255.255.255
Ack
Dhcp服务器或者中继器路由的MAC
Dhcp客户机的MAC
Dhcp服务器或者中继路由器的IP地址
准备分配的IP地址
3.DHCPTransaction ID是由客户机产生一个随机数获得,不同MAC地址产生的Transaction ID不同,Transaction ID是区分不同DHCP请求的标识
- DHCP协议原理及应用
- DHCP协议原理及抓包分析
- DHCP协议原理基础
- radius协议原理及应用
- dhcp 协议原理与说明
- DHCP中继原理及配置
- DHCP原理及报文格式
- DHCP工作原理及实例
- ARP 地址解析协议原理及应用
- DHCP协议原理及其实现流程
- DHCP协议原理及其实现流程
- DHCP协议原理及其实现流程
- DHCP协议原理及其实现流程
- DHCP协议原理及其实现流程
- DHCP协议原理及其实现流程
- DHCP协议原理及其实现流程
- 四 应用层(三)DHCP协议
- DHCP协议的有限状态机及相关问题
- 第二次复习(11.29)
- redis 有序集合 sorted set
- 风险投资
- 11.2
- [Keyword]关键字
- DHCP协议原理及应用
- HDU2570-迷瘴
- vb.net 教程 8-3 数据库操作9-2
- 225. Implement Stack using Queues
- JAVA学习笔记22——SpingMVC框架第二章
- codeforces 208A Dubstep
- 状态模式的简单使用
- 使用git搭建简单代码服务器
- github上传项目(接上一篇创建新项目)