DHCP网络原理.docx
- 文档编号:9018011
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:19
- 大小:95.65KB
DHCP网络原理.docx
《DHCP网络原理.docx》由会员分享,可在线阅读,更多相关《DHCP网络原理.docx(19页珍藏版)》请在冰豆网上搜索。
DHCP网络原理
网络DHCP解释及原理
运作模式:
DHCP是怎么运作的?
假设多部计算机在同一个网域当中,也就是说,DHCPServer与他的Clients都在同一个网段之内,可以透过软件广播的方式来达到相互沟通的状态。
那么Client藉由DHCPServer得到IP的程序为:
①若Client端计算机设定使用DHCP协议以取得网络参数时,则Client端计算机在开机的时候,或者是重新启动网络卡的时候,会自动的发出DHCPClient的需求给网域内的每部计算机:
这个时候,由于发出的讯息希望每部计算机都可以接受,所以该讯息除了网络卡的硬件地址(MAC)无法改变外,需要将该讯息的来源软件地址设定为0.0.0.0,而目的地址则为255.255.255.255(Linux会自动设定,无须考虑这个问题!
)。
网域内的其它没有提供DHCP服务的计算机,收到这个封包之后会自动的将该封包丢弃而不回应;
②DHCP主机响应讯息:
如果是DHCP主机收到这个Client的DHCP需求时,那么DHCP主机首先会针对该次需求的讯息所携带的MAC与DHCP主机本身的设定值去比对,如果DHCP主机的设定有针对该MAC做静态IP(每次都给予一个固定的IP)的提供时,则提供Client端相关的固定IP与相关的网络参数;而如果该讯息的MAC并不在DHCP主机的设定之内时,则DHCP主机会选取目前网域内没有使用的IP(这个IP与设定值有关)来发放给client端使用!
此外,需要特别留意的是,在DHCP主机发放给Client端的讯息当中,会附带一个『租约期限』的讯息,以告诉Client端,IP可以使用的期限有多长!
③Client端接受来自DHCP主机的网络参数,并设定Client自己的网络环境:
当Client端接受响应的讯息之后,首先会以ARP封包在网域内发出讯息,以确定来自DHCP主机发放的IP并没有被占用!
如果该IP已经被占用了,那么Client对于这次的DHCP信息将不接受,而将再次向网域内发出DHCP的需求广播封包;若该IP没有被占用,则client可以接受DHCP主机所给的网络的参数,那么这些参数将会被使用于client端的网络设定当中,同时,Client端也会对DHCP主机发出确认封包,告诉Server这次的需求已经确认!
而Server也会将该信息记录下来;
④Client端结束该IP的使用权:
当Client开始使用这个DHCP发放的IP之后,有几个情况下他可能会失去这个IP的使用权:
Client端离线:
不论是关闭网络接口(ifdown)、重新开机(reboot)、关机(shutdown)等行为,皆算是离线状态,这个时候Server端就会将该IP回收,并放到Server自己的备用区中,等待未来的使用;
Client端租约到期:
前面提到DHCPserver端发放的IP有使用的期限,Client使用这个IP到达期限规定的时间,就需要将IP缴回去!
这个时候就会造成断线,而Client也可以再向DHCP主机要求再次分配IP!
以上就是DHCP这个协议在Server端与Client端的运作状态,由上面这个运作状态来看,可以明白,只要Server端设定没有问题,加上Server与Client在硬件联机上面确定是OK的,那么Client就可以直接藉由Server来取得上网的网络参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的DHCP。
IP取得的方法:
在上面的步骤中,注意第二步。
就是DHCP会去比较MAC这个硬件地址,并判断该MAC是否需要给予一个固定的IP呢!
呵呵!
所以啦,我们在Client端由DHCP主机取得的IP主要有两种方式:
①静态(Static)IP:
只要那个client端计算机的网络卡不换掉,那么MAC肯定就不会改变,由于DHCP可以根据MAC来给予固定的IP,所以该计算机每次都能以一个固定的IP连上Internet!
呵呵!
这种情况比较适合当这部计算机需要用来做为提供区域内的一些网络服务的主机之用。
那么如何在Linux上面知道您的MAC呢?
很简单啦!
有很多的方式,最简单的方式就是使用ifconfig及arp来进行(以下针对LINUX):
[root@testroot]#ifconfigeth0
ifconfig
eth0Linkencap:
EthernetHWaddr00:
50:
FC:
22:
9C:
57
inetaddr:
192.168.1.2Bcast:
192.168.1.255Mask:
255.255.255.0
UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
RXpackets:
333678errors:
0dropped:
0overruns:
0frame:
0
TXpackets:
377219errors:
0dropped:
0overruns:
0carrier:
0
collisions:
195txqueuelen:
100
RXbytes:
42243563(40.2Mb)TXbytes:
278373316(265.4Mb)
Interrupt:
10Baseaddress:
0x6100[root@testroot]#arp
AddressHWtypeHWaddressFlagsMaskIface
test.Xether00:
50:
FC:
22:
9C:
57Ceth0
192.168.1.100ether00:
02:
44:
19:
A6:
ADCeth0
②动态(dynamic)IP:
Client端每次连上DHCP所取得的IP都不是固定的!
都直接经由DHCP所随机由尚未被使用的IP中提供!
关于租约的行为:
观察上面DHCP运作模式的第二个步骤,会发现最后面还有一个租约期限!
最大的优点就是可以避免该IP被某些使用者一直占用着,但该使用者却是Idle(发呆)的状态!
关于DHCP主机个数:
当网域里面有两部以上的DHCP主机时,到底哪一部主机会设定我的这部Client端计算机?
很多时候是『先抢先赢』,同样,DHCP的回应也是如此!
当Server1先响应时,使用的就是Server1所提供的网络参数内容,如果是Server2先响应,就是使用Server2的参数来设定PC!
不过,前提之下当然是这些计算机的『物理联机』都是在一起的。
编辑本段DHCP需求说明
Ⅰ什么时候最好使用DHCP?
在某些情况之下,倒是强烈的建议架设DHCP主机的!
例如:
公司内部很多Notebook计算机使用的场合!
因为Notebook在使用上,当设定为DHCPclient的时候,那么只要他连接上的网域里面有一部可以动作的DHCP,那部notebook就可以连接上Internet了!
网域内计算机数量相当的多时:
另外一个情况就是网域内计算机数量相当庞大时,大到您没有办法一个一个的进行说明来设定他们自己的网络参数,这个时候为了省麻烦,还是架设DHCP来的方便。
Ⅱ什么情况下不建议使用DHCP主机?
虽然DHCP有很多好处,但是有一个步骤怪怪的。
回头看一下那个步骤一,Client在开机的时候会主动的发送讯息给网域上的所有机器,这个时候,如果网域上就是没有DHCP主机呢?
很抱歉,那么这部Client端计算机,『仍然会持续的发送讯息!
』真正的时间与次数我不晓得会有多久,不过,肯定会超过30秒以上,甚至可以达到一分钟以上!
在网域内的计算机,有很多机器其实是做为主机的用途,很少Client需求,那么似乎就没有必要架设DHCP。
编辑本段Linux套件安装与设置
套件安装:
在Linux上面DHCP简单,无需Tarball!
直接拿出原版光盘,mount,并且找到dhcp字样的套件,使用RPM安装好就好了!
以mandrake9.0及RedHat9为例的话,您需要的DHCP套件为:
#在Mandrake9.0当中:
[root@testroot]#rpm-qa|grepdhcp
dhcp-server-3.0-1rc9.2mdk
dhcp-common-3.0-1rc9.2mdk
dhcp-client-3.0-1rc9.2mdk
#在RedHat9当中:
[root@testroot]#rpm-qa|grepdhcp
dhcp-3.0pl1-23
dhcp-devel-3.0pl1-23
如果是Mandrake系列的话,DHCP套件档案总数会有三个!
如果没有安装的话,请拿出原板光盘(不论是那个Linuxdistribution,应该都是这三个套件名称!
只是后面的版本可能不一样。
但是,需要注意,在RedHat上面,这三个套件被整合成为一个,亦即是dhcp-xxxx.rpm的档案。
),先挂载上去,然后就以rpm安装!
另外,如果在系统当中没有找到dhcp套件的话,还可以使用apt-get或者是urpmi都是很好的安装方式
设置DHCPServer:
DHCP套件结构
在DHCP的套件结构当中,也是仅有一个设置文件。
这个文件不见得会存在,需要手动来建立:
/etc/dhcpd.conf:
主要配置文件。
这个档案不见得会存在,请手动来建立喔!
另外,其实每个dhcp套件在释出的时候,都会附上一个范例档案,您可以使用rpm-qlgrepdhcp来查询到dhcpd.conf.sample这个档案呐!
然后将该档案复制成为/etc/dhcpd.conf后,在手动去修改/etc/dhcpd.conf即可,这样设定比较容易咯!
(注:
这个设定档在不同的Linuxdistribution当中会有不一样的放置目录!
例如在openlinux底下,这个设定档预设需要放置在/etc/dhcpd/dhcpd.conf)
/usr/sbin/dhcpd:
这个就是DHCP的daemon执行档
/var/lib/dhcp/dhcpd.leases:
整个DHCP的设定档与检查的档案就是这几个而已
编辑本段工作原理
根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。
第一次登录的时候:
寻找Server
当DHCP客户端第一次登录网络的时候,也就是客户发现本机上没有任何IP数据设定,它会向网络发出一个DHCPDISCOVER封包。
因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255,然后再附上DHCPdiscover的信息,向网络进行广播。
在Windows的预设情形下,DHCPdiscover的等待时间预设为1秒,也就是当客户端将第一个DHCPdiscover封包送出去之后,在1秒之内没有得到响应的话,就会进行第二次DHCPdiscover广播。
若一直得不到响应的情况下,客户端一共会有四次DHCPdiscover广播(包括第一次在内),除了第一次会等待1秒之外,其余三次的等待时间分别是9、13、16秒。
如果都没有得到D
相关图片
HCP服务器的响应,客户端则会显示错误信息,宣告DHCPdiscover的失败。
之后,基于使用者的选择,系统会继续在5分钟之后再重复一次DHCPdiscover的过程。
提供IP租用地址
当DHCP服务器监听到客户端发出的DHCPdiscover广播后,它会从那些还没有租出的地址范围内,选择最前面的空置IP,连同其它TCP/IP设定,响应给客户端一个DHCPOFFER封包。
由于客户端在开始的时候还没有IP地址,所以在其DHCPdiscover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP服务器响应的DHCPoffer封包则会根据这些资料传递给要求租约的客户。
根据服务器端的设定,DHCPoffer封包会包含一个租约期限的信息。
接受IP租约
如果客户端收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCPoffer而已(通常是最先抵达的那个),并且会向网络发送一个DHCPrequest广播封包,告诉所有DHCP服务器它将指定接受哪一台服务器提供的IP地址。
同时,客户端还会向网络发送一个ARP封包,查询网络上面有没有其它机器使用该IP地址;如果发现该IP已经被占用,客户端则会送出一个DHCPDECLIENT封包给DHCP服务器,拒绝接受其DHCPoffer,并重新发送DHCPdiscover信息。
事实上,并不是所有DHCP客户端都会无条件接受DHCP服务器的offer,尤其这些主机安装有其它TCP/IP相关的客户软件。
客户端也可以用DHCPrequest向服务器提出DHCP选择,而这些选择会以不同的号码填写在DHCPOptionField里面。
换一句话说,在DHCP服务器上面的设定,未必是客户端全都接受。
客户端可以保留自己的一些TCP/IP设定,并且主动权永远在客户端这边。
租约确认
当DHCP服务器接收到客户端的DHCPrequest之后,会向客户端发出一个
相关图片
DHCPACK响应,以确认IP租约的正式生效,也就结束了一个完整的DHCP工作过程。
DHCP发放流程第一次登录之后:
一旦DHCP客户端成功地从服务器那里取得DHCP租约之后,除非其租约已经失效并且IP地址也重新设定回0.0.0.0,否则就无需再发送DHCPdiscover信息了,而会直接使用已经租用到的IP地址向之前的DHCP服务器发出DHCPrequest信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没问题的话,直接响应DHCPack来确认则可。
如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个DHCPNACK封包给客户端,要求其重新执行DHCPdiscover。
至于IP的租约期限却是非常考究的,并非如我们租房子那样简单,以NT为例子:
DHCP客户端除了在开机的时候发出DHCPrequest请求之外,在租约期限一半的时候也会发出DHCPrequest,如果此时得不到DHCP服务器的确认的话,客户端还可以继续使用该IP;当租约期过了87.5%时,如果客户端仍然无法与当初的DHCP服务器联系上,它将与其它DHCP服务器通信。
如果网络上再没有任何DHCP服务器在运行时,该客户端必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开始,再一次重复整个过程。
要是您想退租,可以随时送出DHCPRELEASE命令解约,就算您的租约在前一秒钟才获得的。
跨网络的DHCP运作从前面描述的过程中,我们不难发现:
DHCPDISCOVER是以广播方式进行的,其情形只能在同一网络之内进行,因为router是不会将广播传送出去的。
但如果DHCP服务器安设在其它的网络上面呢?
由于DHCP客户端还没有IP环境设定,所以也不知道Router地址,而且有些Router也不会将DHCP广播封包传递出去,因此这情形下DHCPDISCOVER是永远没办法抵达DHCP服务器那端的,当然也不会发生OFFER及其它动作了。
要解决这个问题,我们可以用DHCPAgent(或DHCPProxy)主机来接管客户的DHCP请求,然后将此请求传递给真正的DHCP服务器,然后将服务器的回复传给客户。
这里,Proxy主机必须自己具有路由能力,且能将双方的封包互传对方。
若不使用Proxy,您也可以在每一个网络之中安装DHCP服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。
当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。
视您的实际情况而定了。
编辑本段DHCP的责任
1.保证任何IP地址在同一时刻只能由一台DHCP客户机所使用。
2.DHCP应当可以给用户分配永久固定的IP地址。
3.DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
4.DHCP服务器应当向现有的BOOTP客户端提供服务。
编辑本段授权操作
出于对网络安全管理的考虑,并不是在Windows2000Server中安装了DHCP功能后就能直接使用,还必须进行授权操作,XX操作的服务器无法提供DHCP服务。
对DHCP服务器授权操作的过程如下:
1.依次点击“开始→程序→管理工具→DHCP”,打开DHCP控制台窗口。
2.在控制台窗口中,用鼠标左键点击选中服务器名,然后单击右键,在快捷菜单中选中“授权”,此时需要几分钟的等待时间。
注意:
如果系统长时间没有反应,可以按F5键或选择菜单工具中的“操作”下的“刷新”进行屏幕刷新,或先关闭DHCP控制台,在服务器名上用鼠标右键点击。
如果快捷菜单中的“授权”已经变为“撤消授权”,则表示对DHCP服务器授权成功。
此时,最明显的标记是服务器名前面红色向上的箭头变成了绿色向下的箭头。
这样,这台被授权的DHCP服务器就有分配IP的权利了。
编辑本段封包格式
以下为各字段的简要说明:
OP
若是client送给server的封包,设为1,反向为2。
HTYPE
DHCP报文格式
硬件类别,Ethernet为1。
HLEN
硬件地址长度,Ethernet为6。
HOPS
若封包需经过router传送,每站加1,若在同一网内,为0。
TRANSACTIONID
DHCPREQUEST时产生的数值,以作DHCPREPLY时的依据。
SECONDS
Client端启动时间(秒)。
FLAGS
从0到15共16bits,最左一bit为1时表示server将以广播方式传送封包给client,其余尚未使用。
ciaddr
要是client端想继续使用之前取得之IP地址,则列于这里。
yiaddr
从server送回client之DHCPOFFER与DHCPACK封包中,此栏填写分配给client的IP地址。
siaddr
若client需要透过网络开机,从server送出之DHCPOFFER、DHCPACK、DHCPNACK封包中,此栏填写开机程序代码所在server之地址。
giaddr
若需跨网域进行DHCP发放,此栏为relayagent的地址,否则为0。
chaddr
Client之硬件地址。
sname
Server之名称字符串,以0x00结尾。
file
若client需要透过网络开机,此栏将指出开机程序名称,稍后以TFTP传送。
options
允许厂商定议选项(Vendor-SpecificArea),以提供更多的设定信息(如
相关图片
:
Netmask、Gateway、DNS、等等)。
其长度可变,同时可携带多个选项,每一选项之第一个byte为信息代码,其后一个byte为该项数据长度,最后为项目内容。
CODELENVALUE此字段完全兼容BOOTP,同时扩充了更多选项。
其中,DHCP封包可利用编码为0x53之选项来设定封包类别:
项值类别
1DHCPDISCOVER
2DHCPOFFER
3DHCPREQUEST
4DHCPDECLINE
5DHCPACK
6DHCPNACK
7DHCPRELEASE
DHCP的选项非常多,有空请查阅RFC或相关文献,并好好理解,这里不再叙述了。
编辑本段DHCP协议
RFC-951、RFC-1084、RFC-1123、RFC-1533、RFC-1534、RFC-1497、RFC-1541RFC-2131
DHCP是可自动将IP位址指派给登入TCP/IP网络的用户端的一种软件,(此种IP位址称为「动态IP位址」)。
这种软件通常是在路由器及其他网络设备上执行的。
依照预先设定,您的GateLock路由器设定为使用DHCP,因此就无须手动指派永久IP位址给网络上的每个设备。
建议不要改变这个设置,这样您的个人电脑就可以被分辨为DHCP服务器。
1dhcpdiscover:
此为client开始DHCP过程中的第一个请求报文
2dhcpoffer:
此为server对dhcpdiscover报文的响应
3dhcprequst:
此为client对dhcpoffer报文的响应
4dhcpdeclient:
当client发现server分配给它的IP地址无法使用,如IP地址发生冲突时,将发出此报文让server禁止使用这次分配的IP地址。
5dhcpack:
server对dhcprequst报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。
6dhcpnack:
此报文是server对client的dhcprequst报文的拒绝响应,client收到此报文后,一般会重新开始DHCP过程。
7dhcprelease:
此报文是client主动释放IP地址,当server收到此报文后就可以收回IP地址分配给其他的client.
DHCP是BOOTP的扩展,是基于C/S模式的,它提供了一种动态指定
相关图片
IP地址和配置参数的机制。
这主要用于大型网络环境和配置比较困难的地方。
DHCP服务器自动为客户机指定IP地址,指定的配置参数有些和IP协议并不相关,但这必没有关系,它的配置参数使得网络上的计算机通信变得方便而容易实现了。
DHCP使IP地址的可以租用,对于许多拥有许多台计算机的大型网络来说,每台计算机拥有一个IP地址有时候可能是不必要的。
租期从1分钟到100年不定,当租期到了的时候,服务器可以把这个IP地址分配给别的机器使用。
客户也可以请求使用自己喜欢的网
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DHCP 网络 原理
![提示](https://static.bdocx.com/images/bang_tan.gif)