1 DHCP协议
1.1 DHCP协议理解
定义:
DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是一个用于局域网的网络协议,位于OSI模型的应用层,使用UDP协议工作,主要有两个用途:
- 用于内部网或网络服务供应商自动分配IP地址给用户
- 用于内部网管理员对所有电脑作中央管理
作用:
动态分配IP地址,过程自动化,终端无需一一手工配置,配置信息统一管理(DNS,网关),IP地址有限、需要大量配置IP地址、经常移动终端。
适用性:
DHCP用一台或一组DHCP服务器来管理网络参数的分配,这种方案具有容错性。甚至对于那些很少改变地址的服务器来说,DHCP仍然被建议用来设置它们的地址。如果服务器需要被重新分配地址(RFC 2071)的时候,就尽可能不去做更改。对于一些设备,如路由器和防火墙,则不应使用DHCP。把TFTP或SSH服务器放在同一台运行DHCP的机器上也是有用的,目的是为了集中管理。
DHCP也可用于直接为服务器和桌面计算机分配地址,并且透过一个PPP代理,也可为拨接及宽带的主机,以及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。
历史:
DHCP于1993年10月成为标准协议,其前身是BOOTP协议。当前的DHCP定义可以在RFC 2131中找到,而基于IPv6的建议标准(DHCPv6)可以在RFC 3315中找到。
原理:
动态主机设置协议(DHCP)是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。
DHCP使用了租约的概念,或称为计算机IP地址的有效期。租用时间是不定的,主要取决于用户在某地连接Internet需要多久,这对于教育行业和其它用户频繁改变的环境是很实用的。透过较短的租期,DHCP能够在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP支持为计算机分配静态地址,如需要永久性IP地址的Web服务器。
DHCP和另一个网络IP管理协议BOOTP类似。当前两种配置管理协议都得到了普遍使用,其中DHCP更为先进。某些操作系统,如Windows NT/2000,都带有DHCP服务器。DHCP或BOOTP客户端是装在计算机中的一个程序,这样就可以对其进行配置操作。
分配IP地址方式:
(1)手工配置方式:通过网络管理员手工配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将手动配置的IP地址分配给客户端。。
(2)自动配置方式:当DHCP客户端第一次想服务端租用到第一个IP地址后,就将这个IP地址永久分配给客户端使用。
(3)动态配置方式:服务器暂时分配一个IP地址给客户端,根据租约到期或者续约租期的方式来管理分配的IP地址。
1.2 DHCP报文格式
链路层头 |
IP头 20bytes |
UDP头 |
DHCP报文 |
表-1是整个报文的封装格式,包括链路层头、IP头、UDP头和DHCP报文,其中dhcp主要的数据都封装在dhcp报文中。
8 bits | 16 bits | 24 bits | 32 bits |
Op | Htype | Hlen | Hops |
Xid(4 bytes) | |||
Secs(2 bytes) | Flags(2 bytes) | ||
Ciaddr(4 bytes) | |||
Yiaddr(4 bytes) | |||
Siaddr(4 bytes) | |||
Giaddr(4 bytes) | |||
Chaddr (16 bytes) | |||
Sname (64 bytes) | |||
File (128 bytes) | |||
Option (variable) |
表-2 是DHCP报文的格式,各字段的说明如下:
- Op:消息操作代码,1byte,既可以是引导请求(BOOTREQUEST)也可以是引导答复(BOOTREPLY),1为请求报文;2为响应报文。具体的报文类型在option字段中标识。
- Htype:硬件地址类型,1byte,表示client硬件地址的类型,1表示以太网类型。
- Hlen:硬件地址长度,1byte,以太网的硬件地址长度为6bytes。
- Xid:处理ID,1byte,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。
- Secs:从获取到IP地址或者续约过程开始到现在所消耗的时间,2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。
- Flags:标记,2bytes,16bit中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0.
- Ciaddr:客户机IP地址,4bytes,可以是client自己的IP地址,也可以是server分配给client的IP地址。
- Yiaddr:“你的”(客户机)IP地址,4bytes,是server分配给client的IP地址。
- Siaddr:在bootstrap中使用的下一台服务器的IP地址,4bytes,是client端获取IP地址等信息的server端的地址。
- Giaddr:用于导入的接替代理IP地址,4bytes,是client发出请求报文后经过的第一个中继的IP地址。
- Chaddr:客户机硬件,16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。
- Sname:任意服务器主机名称,空终止符,64bytes,是client端获取IP地址等信息的服务器名称。
- File:DHCP发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名,
- Options:可选参数字段。这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息。这个字段的结构采用“CLV”结构,如图-4:
1.3 技术细节
DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用67/udp,客户端使用68/udp。
DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。
客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。
这里列出了如下的四个例子
UDP Src=0.0.0.0 sPort=68 | |||
Dest=255.255.255.255 dPort=67 | |||
OP | HTYPE | HLEN | HOPS |
0x01 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR | |||
0x00000000 | |||
YIADDR | |||
0x00000000 | |||
SIADDR | |||
0x00000000 | |||
GIADDR | |||
0x00000000 | |||
CHADDR | |||
0x00053C04 | |||
0x8D590000 | |||
0x00000000 | |||
0x00000000 | |||
192 octets of 0’s. BOOTP legacy | |||
Magic Cookie | |||
0x63825363 | |||
DHCP Options | |||
DHCP option 53: DHCP Discover | |||
DHCP option 50: 192.168.1.100 requested |
DHCP发现(DISCOVER)
client在物理子网上发送广播来寻找可用的服务器。网络管理员可以配置一个本地路由来转发DHCP包给另一个子网上的DHCP服务器。该client实现生成一个目的地址为255.255.255.255或者一个子网广播地址的UDP包。
客户也可以申请它使用的最后一个IP地址(在下面的例子里为192.168.1.100)。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。
UDP Src=192.168.1.1 | |||
sPort=67 Dest=255.255.255.255 dPort=68 | |||
OP | HTYPE | HLEN | HOPS |
0x02 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR | |||
0x00000000 | |||
YIADDR | |||
0xC0A80164 | |||
SIADDR | |||
0x00000000 | |||
GIADDR | |||
0x00000000 | |||
CHADDR | |||
0x00053C04 | |||
0x8D590000 | |||
0x00000000 | |||
0x00000000 | |||
192 octets of 0’s. BOOTP legacy | |||
Magic Cookie | |||
0x63825363 | |||
DHCP Options | |||
DHCP option 53: DHCP Offer | |||
DHCP option 1: 255.255.255.0 subnet mask | |||
DHCP option 3: 192.168.1.1 router | |||
DHCP option 51: 1 day IP lease time | |||
DHCP option 54: 192.168.1.1 DHCP server |
DHCP提供(OFFER)
当DHCP服务器收到一个来自客户的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络单播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。
服务器基于在CHADDR字段指定的客户硬件地址来检查配置。这里的服务器,192.168.1.1,将IP地址指定于YIADDR字段。
UDP Src=0.0.0.0 | |||
sPort=68 | |||
Dest=255.255.255.255 | |||
dPort=67 | |||
OP | HTYPE | HLEN | HOPS |
0x01 | 0x01 | 0x06 | 0x00 |
XID | |||
0x3903F326 | |||
SECS | FLAGS | ||
0x0000 | 0x0000 | ||
CIADDR | |||
0x00000000 | |||
今天的文章dhcp协议详解_DHCP协议的主要功能为「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/77959.html