当我们重新启动电脑时,IP地址总是变动的。这是为什么呢?为什么每次开机自己的电脑都能被配置一个唯一的IP地址呢?我们的电脑是如何获得IP地址的呢?这其实完全是应用层的DHCP协议起作用的。
DHCP是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,也能自动收到新的IP地址。DHCP最大的亮点就是能够动态分配IP地址,当 DHCP客户端第一次从 DHCP服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新租约,再次续租这个IP地址或是租用其它的 IP 地址。通过较短的租期,动态分配显然比手动分配更加灵活,尤其是在计算机比IP地址多的环境中。当然 ,对于类似web服务器这些需要永久性IP地址的,DHCP同样能够为其分配静态地址。
那么DHCP是如何请求IP地址的呢?我们可以划分为以下几个阶段:
寻找Server
当 DHCP客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会以广播的方式向网络发出一个 DHCP DISCOVER封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为 255.255.255.255 ,然后再附上 DHCP discover 的信息,向网络进行广播。如果DHCP服务器不再本网段,可以用DHCP Relay将此报文向其他网段广播。
提供IP租用地址
当DHCP服务器监听到客户端的DHCP DISCOVER报文后,从IP地址池中选择一个尚未分配的IP地址广播给客户端。向该客户端发送包含租借的IP地址和其他配置信息的DHCPOFFER包。
选择IP租用地址
当客户端收到一个IP租约提供时,它必须告诉所有其他的DHCP服务器它已经接受了一个租约提供。因此,该客户会以广播形式向各DHCP服务器回应一个DHCPREQUEST包,其中包含提供租约的服务器的IP。当其他DHCP服务器收到了该消息后,它们会收回已提供给客户的IP。然后它们把曾经给客户保留的那个地址重新放回到可用地址池中,这样,它们就可以为其他计算机分配这个地址。其实,在客户端回应DHCPREQUEST包的同时,客户端还会向网络发送一个 ARP封包,查询网络上面有没有其它机器使用该 IP 地址。如果发现该 IP 已经被占用,客户端则会送出一个DHCPDECLINE封包给 DHCP服务器,拒绝接受它的 DHCP OFEFR ,并重新发送 DHCP DISCOVER 报文。
IP租用地址确认
当DHCP服务器接收到DHCP客户端回答的DHCPREQUEST包后,便会向客户端发送包含它所提供的IP地址及其他配置信息的DHCPACK确认包。这时IP租约正式生效,客户端开始使用这个IP地址。
我们了解了DHCP请求IP地址的过程,那么,在具体的传输过程中,DHCP是怎样传送数据封包的呢?下面以4个表格详细介绍寻找Server,提供IP租用地址,选择IP租用地址,IP租用地址确认的数据封包传输过程。
图 1 DHCP Discover
图 2 DHCP Offer |
图3 DHCP Request
图 4 DHCP Ack
当然,一旦 DHCP客户端成功地从服务器那里取得 DHCP 租约之后,在租约未失效之前,就无需一次次的发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前的 DHCP服务器发出 DHCP request 信息。当客户机重新启动或者是租期到达50%时,就需要重新更新租约,客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有地址租约。如果DHCP服务器收到请求,它将发送DHCP确认信息给客户机,更新租约。如果客户机无法联系到服务器,客户机仍然可以使用原来的IP地址,一直等到租期到达87.5%时,它将向网络中的所有DHCP服务器广播DHCP Request包,以更新现有租约。如果服务器仍然无法更新租约并且租约到期,客户机将放弃正在使用的IP地址,开始新的请求IP地址租约的过程。如果客户端在正常使用租期内的IP地址时不想使用了怎么办呢?只需向DHCP服务器发送DHCPRELEASE包就可释放此IP地址,同时将IP地址设为0.0.0.0。
通过对DHCP的简单了解,你一定清楚了DHCP是怎么分配IP的了,正是DHCP的完美运行,才确保我们在如此巨大的IP库中能够找到唯一的、适合自己电脑TCP/IP设定的IP地址。
感谢阅读!
更多信息与我们交流:
WIZnet邮箱:wiznetbj@wiznet.co.kr
WIZnet主页:http://www.wiznet.co.kr
WIZnet企业微博:http://e.weibo.com/wiznet2012
用户1315892 2013-9-2 11:20
用户1315892 2013-9-2 10:57
用户1647523 2013-8-26 11:02