【RL-TCPnet网络教程】第25章 DHCP动态主机配置协议基础知识
第25章 DHCP动态主机配置协议基础知识
本章节为大家讲解DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),通过前面章节对TCP和UDP的学习,需要大家对DHCP也有个基础的认识。
(本章的知识点主要整理自网络)
25.1 初学者重要提示
25.2 DHCP基础知识参考资料
25.3 DHCP基础知识点
25.4 DHCP函数
25.5 总结
25.1 初学者重要提示
通过前面几个章节对TCP和UDP的学习,需要初学者对DHCP的基础知识点也有个认识。
25.2 DHCP基础知识参考资料
为了对TCP和UDP有更全面的认识,需要对DHCP协议的一些基础知识有个了解。大家可以从以下地址获得DHCP协议基础知识:
- RFC2131地址 :ftp://ftp.rfc-editor.org/in-notes/rfc2131.txt 。
- wiki百科中文版:地址链接(这个是超链接)
- wiki百科英文版:地址链接(这个是超链接)
- 百度百科:地址链接(这个是超链接)
对于初学者来说,学习上面四个参考资料就够了。如果大家有网络方面的书籍,比如《TCP/IP详解》,也可以直接看书籍。
25.3 DHCP基础知识点
(这里的知识点整理自上面的参考资料地址)
教程这里也对DHCP的基础知识点做个介绍,方便大家先有个大概的认识。
25.3.1 DHCP简要说明
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议。使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址;给用户或者内部网络管理员对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做“双机热备”的。
25.3.2 DHCP功能
DHCP通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP协议采用客户端/服务器模型,主机地址的动态分配任务由网络主机驱动。当DHCP服务器接收到来自网络主机申请地址的信息时,才会向网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:
- 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
- DHCP应当可以给用户分配永久固定的IP地址。
- DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)。
- DHCP服务器应当向现有的BOOTP客户端提供服务。
-
DHCP有三种机制分配IP地址:
- 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
- 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
- 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,这就要求设备具有BOOTP中继代理的功能,并能够与BOOTP客户端和DHCP服务器实现交互。BOOTP中继代理的功能,使得没有必要在每个物理网络都部署一个DHCP服务器。RFC 951和RFC 1542对BOOTP协议进行了详细描述。
25.3.3 DHCP类别
主要分为DHCP服务器,DHCP客户端和DHCP中继。
1、DHCP客户端
在支持DHCP功能的网络设备上将指定的端口作为DHCP Client,通过DHCP协议从DHCP Server动态获取IP地址等信息,来实现设备的集中管理。一般应用于网络设备的网络管理接口上。DHCP客户端可以带来如下好处:
- 降低了配置和部署设备时间。
- 降低了发生配置错误的可能性。
- 可以集中化管理设备的IP地址分配。
2、DHCP服务器
DHCP服务器指的是由服务器控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
3、DHCP中继代理
DHCPRelay(DHCPR)DHCP中继,也叫做DHCP中继代理。DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去。
在DHCP客户端看来,DHCP中继代理就像DHCP服务器;在DHCP服务器看来,DHCP中继代理就像DHCP客户端。
25.3.4 DHCP报文格式
DHCP的报文格式如下:
- Op
消息操作代码,既可以是引导请求(BOOTREQUEST)也可以是引导答复(BOOTREPLY)。若是客户端送给服务器的封包,设为1,反向为2。
- Htype
硬件类别,Ethernet为1。
- Hlen
硬件地址长度,Ethernet为6。
- Hops
若封包需经过路由传送,每站加1,若在同一网内,为0。
- Xid:
DHCP REQUEST时产生的数值,以作DHCPREPLY时的依据。
- Secs:
从获取到IP地址或者续约过程开始到现在所消耗的时间。
- Flags:
从0到15共16 bits,最左一bit为1时表示服务器将以广播方式传送封包给客户端,其余尚未使用。
- Ciaddr:
要是客户端想继续使用之前取得的IP地址,则填写到此选项中。
- Yiaddr:
从服务器送回客户端的DHCP OFFER 与DHCPACK封包中,此栏填写分配给客户端的IP地址。
- Siaddr:
若客户端需要透过网络开机,从服务器发出的DHCP OFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在服务器的地址。
- Giaddr:
若需跨网域进行DHCP发放,此栏为relay agent 的地址,否则为0。
- Chaddr:
Client的硬件地址。
- Sname:
服务器名称字符串,以0x00结尾。
- File:
若客户端需要透过网络开机,此栏将指出开机程序名称,稍后以TFTP传送。
- Options:
可选参数字段,允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS等等)。其长度可变,同时可携带多个选项,每一选项的第一个字节为信息代码,其后一个字节为该项数据长度,最后为项目内容。
25.3.5 DHCP工作原理
DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用UDP67,客户端使用UDP68。DHCP运行分为四个基本过程,分别为请求IP租约、提供IP租约、选择IP租约和确认IP租约。客户在获得了一个IP地址以后,就可以发送一个ARP请求来避免由于DHCP服务器地址池重叠而引发的IP冲突。
- 第1步:DHCP Discovery
客户在物理子网上发送广播来寻找可用的服务器。网络管理员可以配置一个本地路由来转发DHCP包给另一个子网上的DHCP服务器。该客户实现生成一个目的地址为255.255.255.255或者一个子网广播地址的UDP包。
客户也可以申请他使用的最后一个IP地址。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。
- 第2步:DHCP Offer
当DHCP服务器收到一个来自客户的IP租约请求时,它会提供一个IP租约。DHCP为客户保留一个IP地址,然后通过网络单播一个DHCPOFFER消息给客户。该消息包含客户的MAC地址、服务器提供的IP地址、子网掩码、租期以及提供IP的DHCP服务器的IP。
- 第3步:DHCP Request
当客户PC收到一个IP租约提供时,它必须告诉所有其他的DHCP服务器它已经接受了一个租约提供。因此,该客户会发送一个DHCPREQUEST消息,其中包含提供租约的服务器IP。当其他DHCP服务器收到了该消息后,它们会收回所有可能已提供给客户的租约。然后它们把曾经给客户保留的那个地址重新放回到可用地址池中,这样,它们就可以为其他计算机分配这个地址。任意数量的DHCP服务器都可以响应同一个IP租约请求,但是每一个客户网卡只能接受一个租约提供。
- 第4步:DHCP Acknowledge
当DHCP服务器收到来自客户的REQUEST消息后,它就开始了配置过程的最后阶段。这个响应阶段包括发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息。这时候,TCP/IP配置过程就完成了。该服务器响应请求并发送响应给客户。整个系统期望客户根据选项来配置其网卡。
25.4 总结
本章节就为大家讲解这么多,更多DHCP的相关知识需要大家查阅相关书籍进行学习,或者网上搜索相关资料进行学习。