Download presentation
Presentation is loading. Please wait.
1
第9章 DHCP协议 任课教师 卢豫开
2
第9章 DHCP协议 学 习 要 点 BOOTP协议 DHCP系统 DHCP报文分析(重点) DHCP选项 DHCP运行机制(重点)
3
9.1 DHCP概述(P190) DHCP(Dynamic Host Configuration Protocol)是TCP/IP协议的应用层协议,用来实现IP地址自动分配和TCP/IP参数自动配置。 DHCP主要在RFC2131“Dynamic Host Configuration Protocol”1997中定义,并在RFC2939“Procedures and IANA Guidelines for Definition of New DHCP Options and Message Types ”2000中更新。 DHCP是从早期的BOOTP(Bootstrap Protocol,引导协议)发展而来。 RFC3315“Dynamic Host Configuration Protocol for IPv6”2003用于IPv6网络。
4
9.1.1 BOOTP协议(P190) DHCP的前身是早期为无盘工作站设计的BOOTP,由RFC951“BOOTSTRAP Protocol”1985定义。 BOOTP突破RARP的客户端和服务器必须在同一物理网络的局限性,除了提供IP地址外,还能提供子网掩码、默认网关(路由器)IP地址、DNS服务器的IP地址。 BOOTP是一种基于客户端/服务器模式的应用层协议,客户端和服务器可位于不同网段。 BOOTP客户端和服务器基于UDP协议进行进程间通信。
5
BOOTP协议 BOOTP工作过程: (1)BOOTP服务器在UDP端口67发出被动打开命令,等待客户端请求。
(2)BOOTP客户端在UDP端口68发出主动打开命令。将请求报文封装成UDP数据报,其目的端口是67而源端口是68。由于客户端此时没有IP地址,使用的是IP广播。 (3)BOOTP服务器将应答报文回送给客户端,其目的端口号68而源端口是67。
6
BOOTP协议 BOOTP不足: BOOTP是一种静态配置协议。BOOTP服务器需要提前获取客户端的物理地址,手动建立IP地址与物理地址映射表。 当主机调整到其他网络,需要手工调整。 IP地址分配缺乏动态性,对于有限的地址空间会造成地址浪费。 不提供检测、防止或者补救IP地址冲突的措施。 现在BOOTP已经被DHCP取代了。
7
9.1.2 DHCP的主要功能(P191) 1. IP地址分配的3种方式
手动分配:与BOOTP相同,根据客户端物理地址预先配置对应的IP地址和其他设置,对应DHCP客户端请求传递给相匹配的客户端主机。 自动分配:无需进行任何的IP地址手动分配,当DHCP客户端首次向DHCP服务器租用到IP地址后,该地址就永久地分配给该DHCP客户端,不会再分配给其他客户端。 动态分配:DHCP客户端首次向DHCP服务器租用到IP地址后,并非永久性地使用该地址,只要租约到期,客户端就得释放这个地址,以供其他主机使用。
8
DHCP的主要功能 2. DHCP配置TCP/IP参数
DHCP能够为客户端配置多种TCP/IP相关设置参数,主要包括子网掩码、默认网关(路由器)、DNS服务器、域名等 客户端除了启用DHCP功能之外,几乎无需做任何的TCP/IP环境设置。
9
9.1.3 DHCP系统组成(P191) 服务器用UDP端口67 客户端用UDP端口68 服务器上的DHCP数据库中有:
网络上所有客户端的有效配置参数。 为客户端定义的地址池中维护的有效IP地址,以及用于手动分配的保留地址。 服务器提供的租约持续时间(租期)。
10
DHCP系统组成----DHCP中继代理
当DHCP服务器与客户端位于不同网段,路由器隔断了广播,就要用DHCP中继代理,将DCHP请求从一个网段传到另一个网段。DHCP中继代理会像DHCP服务器一样接收广播,并向另一网段发出单播请求,进而获得IP地址。
11
9.2 DHCP报文分析(P192) DHCP客户机与服务器位于应用层,它们之间传输的数据包称为DHCP报文(DHCP message)。
DHCP报文封装在UDP数据报,然后封装在IP数据报中,最后封装成数据链路层中的帧。
13
9.1.2 DHCP报文格式(P193)
14
DHCP报文格式 1. 操作码(Opcode)1byte,又称报文类型(Message type),0x01表示DHCP请求,0x02表示DHCP应答。 2. 硬件类型(Hardware address type) 1byte,标识硬件地址类型,与ARP报文硬件地址类型相同,见P73表3-5。 3. 硬件地址长度( Hardware address length) 1byte,如以太网硬件地址长度为6字节。 4. 跳数(HOPS) 1byte ,DHCP报文的最大路由器跳数。 5. 事务(Transaction ID) 4bytes,由客户端选择的随机数,用于匹配客户端与服务器之间的请求和应答。 6. 秒数(Seconds) 2bytes,指明客户端请求新地址或更新地址以来已经过去的时间。 7. 标志(Flags) 2bytes,第1位置1时,客户端只接受服务器广播应答。
15
DHCP报文格式 8. 客户端IP地址(Client IP address) 4bytes,客户端首次引导时其值为0.0.0.0
9. 你的IP地址(your IP address ) 4bytes,服务器拟提供给客户端的IP地址。 10. 服务器IP地址(Server IP address)4bytes。 11. 网关IP地址(Gateway IP address)4bytes,如果跨网段使用DHCP中级代理,此字段放中级代理的IP地址。 12. 客户端硬件地址(Client hardware address) 16bytes 13. 服务器主机名称(Server host name ) 64bytes 14. 引导文件名(Boot file name)128bytes 15. 选项(Option) 长度可变,最多312bytes
17
9.2.2 验证分析DHCP报文格式(P194) 用ipconfig/renew强制更新,用Wireshark抓取DHCP客户端与服务器之间的数据包。 由于DHCP源自于BOOTP, Wireshark在解码窗口中仍沿用术语Bootstrap Protocol来表示DHCP协议,在封装的UDP数据报中使用Bootpc和Bootps分别表示DHCP客户端和服务器。 封装的UDP首部包含了源端口68和目的端口67。 “Transaction ID”是客户端随机产生的一个32位数,用于关联DHCP相关报文,交互过程中的DHCP的 “Transaction ID”相同。
18
验证分析DHCP报文格式
19
9.2.3 DHCP选项分析(P194) 除了分配IP地址,还可通过DHCP选项提供更多的TCP/IP参数,如默认网关、DNS服务器。DHCP选项主要由RFC2132“DHCP Options and BOOTP Vendor Extendion”定义。 1. DHCP选项格式 选项可以是固定长度或可变长度,都以1个8bit代码标记开始,这个标记唯一识别该选项。 不带数据的固定长度选项就只由一个标记构成,而且只有选项0和255是固定长度
20
DHCP选项分析 填充(Pad)选项标记为0,长度是1字节,用来保证后续字段按边界对其。结束(End)是最后1个选项,标记为255,标志DHCP选项的结束。 其他选项都是可变长度的,包括3个部分:标记(1字节)、长度(1字节)和选项值(可变长度) 示例(子网掩码选项)
21
DHCP选项分析 2. DHCP选项列表 DHCP的选项非常多,完整的列表可以在IANA的网站
查看。 P195的表9-1列出了其中主要的DHCP选项。 3. DHCP选项53(DHCP报文类型) 各种DHCP请求和应道报文的类型定义在DHCP选项53,选项标记53,数据长度8bit。 RFC2132规定了常见的8种报文类型。
22
DHCP选项53(8种报文类型) 选项值 报文类型 说明 1 客户端广播以定位可用的DHCP服务器 2
DHCPDISCOVER 客户端广播以定位可用的DHCP服务器 2 DHCPOFFER 服务器发送给客户端,提供配置参数以应答DHCPDISCOVER 3 DHCPREQUEST 客户端发送给服务器,可能的用途有:① 请求由一个服务器提供的参数,拒绝其他服务器提供参数;② 确认原来分配IP地址的正当性(例如系统重新启动之后);③ 对一个特定IP地址的租约延期 4 DHCPDECLINE 客户端发送给服务器指明IP已经被占用 5 DHCPACK 服务器发送给客户端,带有配置参数,包括所请求的IP地址 6 DHCPNAK 服务器发送给客户端,指明客户端的IP地址不正确(如客户端已经移到新的子网)或者租约已过期 7 DHCPRELEASE 客户端发送给服务器让出IP地址并取消该地址相应的租约 8 DHCPINFORM 客户端发送给服务器,仅请求局域网配置参数,客户端已经配置有IP地址
23
DHCP选项分析 4. 验证分析DHCP选项 DHCP报文中的选项
24
DHCP选项分析 4. 验证分析DHCP选项 DHCP报文解码分析
26
9.3 DHCP运行机制(P199) DHCP基于客户/服务器模式,客户端与服务器之间需要不断的进行交互,获取新的租约,更新租约或延长现有租约。 DHCP客户端请求并获得租约要经历一个与DHCP服务器的协商过程,包括发现、提供、选择、确认4个阶段。 请求租约的过程
27
9.3.1 客户端与服务器交互以分配IP地址(P199) 1. 分配IP地址的客户端与服务器交互过程
符合下列情形之一,DHCP客户端就要向DHCP服务器请求新的IP地址租约: 首次以DHCP客户端身份启动。 从静态IP地址配置转向使用DHCP。 租用的IP地址已被DHCP服务器收回,并提供给其他客户端使用。 自行释放已租用的IP地址,要求使用一个新地址。
28
客户端与服务器交互以分配IP地址 发现阶段----客户端在本地子网中广播DHCPDISCOVER,寻找网络中的DHCP服务器。
提供阶段----网络中所有收到DHCPDISCOVER的DHCP服务器都会以DHCPOFFER响应客户端, DHCPOFFER提供可用的IP地址(Your IP address),及相关的TCP/IP配置参数。 选择阶段----客户端从多个DHCP服务器中选择一个,再向这台服务器广播DHCPREQUEST,包含想要接受的IP地址及TCP/IP配置参数。 确认阶段----未被选中的DHCP服务器通过DHCPREQUEST确认被拒绝,只有那台被选中的服务器确认客户端绑定信息,然后回应一个DHCPACK。 客户端做最后检查,以确认没有地址冲突。
29
客户端与服务器交互以分配IP地址 分配IP地址的客户端与服务器交互的过程(分配新IP地址的4个过程)
客户端也可以通过DHCP服务器发送DHCPRELEASE来取消租约,让出IP地址。
30
2. 验证分析IP地址获取过程 DHCP数据包列表(获取租约),可以看到涉及两台DHCP服务器,一台IP地址 ,另一台IP地址 ,都有相同的Transaction ID,是同一个租约请求。
31
验证分析IP地址获取过程 DHCPDISCOVER报文(发现阶段)
32
验证分析IP地址获取过程 DHCPOFFER报文(提供阶段)
33
验证分析IP地址获取过程 DHCPREQUEST报文(选择阶段)
34
验证分析IP地址获取过程 DHCPACK报文(确认阶段)
35
验证分析IP地址获取过程 用于检查地址重复的ARP报文
客户端收到DHCPACK报文,启用IP地址之前还要执行最后一次检查,发送ARP请求报文检测网络中是否已有其它节点使用了这个IP地址。
36
验证分析IP地址获取过程 DHCPOFFER报文(另一服务器提供)
37
验证分析IP地址获取过程 DHCPNAK报文(另一服务器确认)
38
9.3.2客户端与服务器交互以重用原来分配的地址(P205)
请求重用IP地址的客户端与服务器交互过程 已经获得IP地址的客户端每次启动直接发送包含原有IP地址的DHCPREQUEST,请求续租原来的IP地址。
39
客户端与服务器交互以重用原来分配的地址 (1)客户端广播DHCPREQUEST,在“请求的IP地址”选项中包括原来的IP地址。
(2)DHCP服务器确认客户端信息后,回应一个DHCPACK,如果此地址无效,服务器回应一个DHCPNAK。 (3)客户端收到带有配置参数的DHCPACK后,对参数进行检查。如果客户端收到DHCPNAK,就不能再使用此IP地址了。如果客户端检测到地址冲突,则发送DHCPDECLINE通知服务器,并从新开始申请IP地址的四个阶段。 (4)客户端可以用DHCPRELEASE取消IP地址租约。注意:客户端正常关机不会让出租用的IP地址。
40
2. 验证分析请求重用IP地址过程 DHCP数据包列表(重用原来的IP地址)
41
DHCPREQUEST报文(客户端请求重用原来的IP地址)
42
DHCPACK报文(服务器同意重用原来的IP地址)
43
9.3.3 DHCP租约更新(P207) 1. 租约期限与更新时间
当租用时间达到租约期限的一半时,DHCP客户端将向DHCP服务器发送一条DHCPREQUEST报文自动尝试续订租约。如果服务器没有任何回应,则客户端还可继续使用当前的租约。 当租用时间达到租约期限的87.5%时,DHCP客户端再次广播DHCPREQUEST,向网络中的服务器请求租约。此时DHCP客户端会接受由任何DHCP服务器提供的租约。 租约期限与更新时间
44
2. 租约更新过程 当到达T1(更新时间)时,客户端转入更新状态(RENEWING),通过单播方式给服务器发送一个DHCPREQUEST报文以延长租约。 如果DHCPACK报文中的事务ID与客户端的DHCPREQUEST报文中的事务ID不匹配,该DHCPACK报文将被放弃。客户端收到来自服务器的DHCPACK时,计算租约过期时间,合计客户端发送DHCPREQUEST的时间和DHCPACK报文中租约过期时间。已成功获得IP地址的客户端进入绑定状态,继续网络处理。 在到达T2(重新绑定)时间之前如果没有收到DHCPACK报文,客户端转入重新绑定状态(REBINDING),通过广播方式发送DHCPREQUEST报文以延长租约。
45
租约更新过程 客户端可以在到达T1之前更新或延长租约。服务器可根据管理员的设置延长租期。服务器应当返回T1和T2,它们的值应当从原始值调整,以计算租期剩下的时间。 在更新或重新绑定状态下,如果客户端未收到对于其DHCPREQUEST报文的应答,应当等候当时到T2之前剩余时间的一半(在更新状态)和剩余租期的一半(在重新绑定状态),最少60秒之后再重发DHCPREQUEST报文。 客户端收到DHCPACK之前租约过期,则进入初始化状态(INIT),必须立即停止任何网络处理,像客户端未初始化一样请求网络初始化参数。
46
3. 验证分析租约更新过程 DHCP选项配置租约期限与T1、T2时间
47
验证分析租约更新过程 DHCP数据包列表(更新租约)
48
DHCPREQUEST报文(更新租约)
49
DHCPACK报文(更新租约)
52
9.3.5 DHCP租约释放 如果客户端不再需要使用已分配的IP地址,可以向服务器发送一个DHCPRELEASE报文。
可以用命令ipconfig/release 强制DHCP客户端释放由服务器分配的IP地址。
53
验证分析DHCRELEASE报文(释放租约)
54
9.3.6 DHCP客户端状态及其转换
55
9.3.7 构造和发送DHCP报文(P212) DHCP客户端和服务器都通过向报文中固定格式部分填充字段,并在选项区域附加带有标记的数据项来构造DHCP报文 “服务器标识符”字段用在DHCP报文中识别DHCP服务器,也用做客户端发送给服务器的目标地址。 客户端在获得IP地址之前,它广播的DHCP报文的IP首部中的源地址应该设置为0。 如果来自客户端的DHCP报文中的“giaddr”(网关IP地址)字段值不为0,服务器将返回的报文发送给拥有该字段指示地址的BOOTP中继代理。如果“giaddr”字段值为0,而“ciaddr”(客户端IP地址)字段值不为0,服务器将DHCPOFFER和DHCPACK发给“ciaddr”字段指示的地址。如果这两个字段值都为0,而“标志”字段中的广播位(broadcast bit)置位(最高位设置为1),服务器将DHCPOFFER和DHCPACK广播到0xffffffff。
56
构造和发送DHCP报文 如果广播位未置位(最高位设置为0),而“giaddr”和“ciaddr”值都为0,服务器将DHCPOFFER和DHCPACK单播到客户端硬件地址和“yiaddr”(你的IP地址)字段所指示的IP地址。 正常情况下,DHCP服务器和BOOTP中继代理试图使用单播方式将DHCPOFFER、DHCPACK和DHCPNAK报文直接发送到客户端。 将报文直接发送或转发给DHCP客户端的DHCP服务器或BOOTP中继代理(不是在“giaddr”字段中定义的中继代理)应当检查“标志”字段中的广播位。
57
9.3.8 DHCP中继代理(P213) 如果DHCP服务器与客户端位于不同的网段,路由器本身会阻断LAN广播,这就需要配置DHCP中继代理,使DHCP请求能够从一个网段传递到另一个网段。 DHCP中继代理服务器可以直接由路由器或交换机(支持DHCP/BOOTP中继代理功能)实现,也可通过DHCP中继代理软件来实现。
58
DHCP中继代理 客户端通过中继代理获得IP地址租约的过程
(1)子网2中的客户端广播DHCPDISCOVER报文。要使该报文被DHCP中继代理转发,必须将其中的“跳数”(HOPS)字段值设置为0。 (2)DHCP中继代理服务器接收到这个报文后,检查包含在这个报文中的网关IP地址。如果该网关IP地址为0,则用中继代理的IP地址替换它,然后将其转发到DHCP服务器所在的子网1中。 DHCP报文中的“网关IP地址”字段表示中继代理的IP地址,该字段用在通过中继代理启动时指定中继代理服务器的IP地址。
59
DHCP中继代理 (3)子网1中的DHCP服务器收到这个报文后,开始检查该报文中的网关IP地址是否包含在DHCP服务器所负责的地址范围(DHCP作用域)内。如果DHCP服务器管理多个DHCP地址范围,则报文中的网关IP地址用来确定从哪个DHCP地址范围中挑选IP地址并提供给客户。 (4)DHCP服务器将它所提供的IP地址租约放入DHCPOFFER报文,直接发送到中继代理。 (5)中继代理将这个报文利用广播方式转发给DHCP客户端。 (6)接下来的DHCP客户端与服务器交互与上述过程类似。
Similar presentations