在计算机网络的日常管理中,IP地址的配置、更改和归档等工作是不可避免的。随着网络规模的日益扩大,该项工作越来越繁琐。稍一疏忽就会出现错误,甚至引起IP地址的冲突。想象一下如果您管理的网络,在配置中的子网掩码、默认网关、DNS、WINS等参数发生变化时,您的工作量将是多么惊人!更不幸的是如果您同时管理多个不同配置的网络,那么您是不是痛不欲生了呢?哈哈,不要着急,DHCP会把您从这些令人讨厌的工作中解救出来。
(一)什么是 DHCP?
DHCP 是 Dynamic Host Configuration Protocol 之缩写,它的前身是 BOOTP(BOOT Strap Protocol)。BOOTP 原本是用于无盘主机连接的网络上面的,网络主机使用 BOOT ROM 而不是硬盘启动并连接上网络,BOOTP可以自动地为那些主机设定TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前必须事先获得客户端的网卡MAC地址,而且与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏“动态性”,若在有限的 IP 资源环境中,BOOTP的一对一对应会造成非常可观的浪费。DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,另一个是客户端。所有的 IP地址等配置都由DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP配置。比较起 BOOTP,DHCP 通过 “租约” 的概念,有效且动态的分配客户端的 TCP/IP 设定。
(二)DHCP 的分配形式
DHCP支持两种类型的地址分配:
l 自动分配方式(Automatic Allocation):DHCP服务器给主机指定一个永久的IP地址。
2 动态分配方式(Dynamic Allocation):DHCP服务器给主机指定一个有时间限制(租约)的IP地址,到租约(Lease)或主机明确表示放弃(Release)这个地址时,这个地址可以被其他的主机使用。当然,客户端可以比其它主机更优先的延续(renew)租约,或是租用其它的 IP 地址。
在这两种方式中,只有动态分配的方式可以对已经分配给主机但现在此主机已经不用的IP地址重新加以利用。这样,在给一台临时连入网络的主机分配地址或者在一组不需要永久的IP地址的主机中共享一组有限的IP地址时,动态分配显得特别有用。当一台新主机要永久的接入一个网络时,而网络的IP地址非常有限,为了将来这台主机被淘汰时能回收IP地址,这种情况下动态分配也是一个很好的选择。
DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照网卡MAC码来固定分配 IP 地址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定 Router、Netmask、DNS Server、WINS Server、等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。
(三)地址获得过程
1、寻找 Server。当 DHCP 客户端第一次连接上网络的时候,也就是客户发现本机上没有任何 IP 配置时,它会向网络上发出一个 DHCP Discover数据包。因为客户端还不知道自己属于哪一个网络,所以数据包的源地址为 0.0.0.0 ,目的地址为 255.255.255.255 ,然后再附上DHCP Discover的信息,向网络进行广播。 在 Windows 的预设情形下,DHCP Discover的等待时间预设为 1 秒,也就是当客户端将第一个 DHCP Discover数据包送出去之后,在 1 秒内没有得到回应的话,就会进行第二次DHCP Discover 广播。若一直得不到回应,客户端一共会有四次DHCP Discover 广播,除了第一次会等待 1 秒外,其余三次的等待时间分别是 9、13、16 秒。
2、 提供 IP地址。当 DHCP服务器监听到客户端发出的 DHCP Discover广播后,它会从那些还没有租出的地址范围内,选择最前面的空闲 IP ,连同其它 TCP/IP 设定,回应给客户端一个DHCP Offer数据包。 由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP Discover数据包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该数据包,DHCP 服务器回应的DHCP Offer数据包,会根据这些资料传递给请求地址的客户。根据服务器端的设定,DHCP Offer数据包包含一个租约的信息。
3、接受 IP 地址。如果客户端收到网络上多台 DHCP 服务器的回应,只会挑选其中一个 DHCP Offer数据包(通常是最先抵达的那个),并且向网络上发送一个DHCP Request广播包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP地址。 同时,客户端还会向网路发送一个 ARP 数据包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCP Decline 数据包给 DHCP服务器,拒绝接受其DHCP Offer ,并重新发送 DHCP Discover 信息。 事实上,并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 Offer ,尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用DHCP Request向服务器提出 DHCP 选择,而这些选择会以不同的号码填写在 DHCP Option Field 里面。换一句话说,在 DHCP 服务器上面的设定,未必是客户端全都接受,客户端可以保留自己的一些 TCP/IP 设定。而主动权永远在客户端这边。
4、租约确认。当 DHCP 服务器接收到客户端的DHCP Request 之后,向客户端发出一个 DHCP ACK 回应,确认 IP 租约正式生效,同时结束了一个完整的 DHCP 工作过程。
5、续租。一旦 DHCP 客户端成功地从服务器那里获得 DHCP 租约之后﹐除非其租约已经失效并且 IP 地址被重新设定回 0.0.0.0,否则就不需要再发送 DHCP Discover数据包了,而是直接使用已经获得到的 IP 地址,向以前DHCP 服务器发出DHCP Request信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接回应 DHCP ACK来确认。如果该地址已经被其它机器使用了,服务器会回应一个 DHCP NACK 数据包给客户端,要求其从新执行DHCP Discover。
6、跨网段的 DHCP。需要在路由器相应以太网端口上启用DHCP 中继。
-----------------------------------------------------
今天我们就来讲讲 DHCP的工作原理。DHCP的工作流程分为四步:
一、客户机请求 IP(DHCPdiscover)
二、服务器响应(DHCPoffer)
三、客户机选择 IP(DHCPrequest)
四、服务器确认 IP租约(DHCPack/DHCPnak)
下面我们就来分别讲一下:
一、客户机请求 IP(DHCPdiscover)
当客户机设置使用 DHCP协议获取 IP时,客户机将使用 0.0.0.0作为源地址,使用255.255.255.255作为目标地址来广播请求 IP地址的信息。广播信息中包含 DHCP客户机的MAC地址和计算机名。(这里的 MAC地址可不是 FFFF.FFFF.FFFF的 MAC 广播哦~)
二、服务器响应(DHCPoffer)
由于是广播所以同一网段内的计算机都会“听”到!DHCP服务器当然也不例外。DHCP服务器“听”到后,它首先会针对该次请求的信息所携带的 MAC地址与 DHCP主机本身的设置值进行对比。如果 DHCP主机的设置中有针对该 MAC 提供的静态 IP(每次都给一个固定 IP),则提供给客户机相关的固定 IP与相关的网络参数;如果该信息的 MAC并不在 DHCP主机的设置中,则 DHCP主机会选取当前网段内没有使用的IP给客户机使用!当然这里的响应,服务器也是采用 255.255.255.255的广播,因为此时客户机还没 IP哦~
这里有几个要注意的地方:
1、如果同一网段内有多台 DHCP服务器,那么客户机是看谁先响应,谁先响应就选择谁。
2、在 DHCP主机发给客户端的信息中,会附带一个“租约期限”信息,用来告诉客户机这个 IP能用多久!
三、客户机选择 IP(DHCPrequest)
当客户机接收到响应的信息之后,首先会以 ARP在网段内广播(ARP使用全 1的广播 MAC地址),以确定来自 DHCP服务器的 IP没被占用!如果该 IP被占用,那么客户机对于这次的 DHCP信息将不接受,而是再次发送 DHCP请求。若该 IP没有被占用,客户机则接受 DHCP服务器所给的网络参数。同时,客户机发出一个广播,通知所挑选的 DHCP服务器(有多台 DHCP服务器存在时),当然此时也是通知其它的 DHCP服务器,让这些 DHCP服务器将本预分配给客户机的 IP释放掉!(这里的概念一定要弄清楚!)注意,这一步客户机并还没有应用从 DHCP服务器获取到 IP哦!所以这一步源地址还是0.0.0.0,目标地址是 255.255.255.255。
四、服务器确认 IP租约(DHCPack/DHCPnak)
终于到最后一步了,DHCP服务器收到客户机选择 IP的广播后,则以 DHCPack消息的形式向客户机广播成功的确认。DHCPack包含:IP、掩码、网关、DNS等。当然上面还有一个 DHCPnak,一看就知道是不成功的意思!那么,哪些情况才会有这种广播呢?
例如,IP地址已无效或这个地址已被其它的客户机使用了!
此时,当客户机收到 DHCP服务器的 DHCPack消息后,客户机便使用了 DHCP服务器所给的网络参数!这里的四个步骤可都是用的广播哦,不知道大家有没有注意!呵呵~到此,我们的 DHCP原理就讲完了,下面我还给补充了点东东,希望对大家有用:
1、当我们的客户机无法找到 DHCP服务器时,它将从 TCP/IP的 B类网段 169.254.0.0中挑选一个 IP地址作为自己的 IP地址,而继续每隔 5分钟尝试与 DHCP服务器进行通信。(这里的这个 B类地址被称为 APIPA,即自动分配私有 IP地址!)
2、IP租约的更新,当客户机重新启动或租期达 50%时,客户机不会从第一步(DHCPdiscover)开始重新申请 IP,而是从第三步(DHCPrequest)开始哦~只有当租期达 87.5%时,它才从第一步(DHCPdiscover)开始重新申请!
3、客户机这里还有两条命令,希望大家给记住:
ipconfig/release : 是用来 IP租约的释放。使用 DHCPrelease消息!
ipconfig/renew : 是用来 IP租约的更新。使用 DHCPdiscover消息!
4、客户机必须要经过四步的情况:
(1)第一次扮演 DHCP客户机角色。
(2)IP被 DHCP服务器收回。
(3)客户机自己释放了 IP,并重租一个 IP时。
(4)客户机更换网卡了。
(5)客户机转移到另一网段时。
阅读(596) | 评论(0) | 转发(0) |