路由器IP指派DHCP和BOOTP不同之处

网络 路由交换
目前路由器进行IP指派主要有DHCP和BOOTP,DHCP也就是动态主机分配协议,它的前身是BOOTP,BOOTP原本是用于无磁盘主机连接的网络上面的,以下分析这两种方式的不同之处。

目前路由器进行IP指派主要有DHCP和BOOTP,DHCP也就是动态主机分配协议,它的前身是BOOTP,BOOTP原本是用于无磁盘主机连接的网络上面的,以下分析这两种方式的不同之处。

一、DHCP可以说是BOOTP的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;

而客户端则会使用从服务器分配下来的IP环境数据。比较起BOOTP,DHCP透过"租约"的概念,有效且动态的分配客户端的TCP/IP设定,而且,作为兼容考虑,DHCP也完全照顾了BOOTP Client的需求。

二、必须至少有一台DHCP工作在网络上面,它会监听网络的DHCP请求,并与客户端搓商TCP/IP的设定环境。它提供两种IP定位方式:

1、自动分配,其情形是:一旦DHCP客户端第一次成功的从DHCP服务器端租用到IP地址之后,就永远使用这个地址。

2、动态分配,当DHCP第一次从HDCP服务器端租用到IP地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个IP地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的IP地址。

三、DHCP除了能动态的设定IP地址之外,还可以将一些IP保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配IP地址,这样可以给您更大的设计空间。

同时,DHCP还可以帮客户端指定router、netmask、DNS Server、WINS Server、等等项目,您在客户端上面,除了将DHCP选项打勾之外,几乎无需做任何的IP环境设定。

四、寻找Server,当DHCP客户端第一次登录网络的时候,也就是客户发现本机上没有任何IP数据设定,它会向网络发出一个DHCP DISCOVER封包。

因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255,然后再附上DHCP discover的信息,向网络进行广播。

五、提供IP租用地址。当DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置IP,连同其它TCP/IP设定,响应给客户端一个DHCP OFFER封包,由于客户端在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息。

六、接受IP租约。如果客户端收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCP offer而已,并且会向网络发送一个DHCP request广播封包,告诉所有DHCP服务器它将指定接受哪一台服务器提供的IP地址,客户端还会向路由器发送一个ARP封包,查询网络上面有没有其它机器使用该IP地址;

如果发现该IP已经被占用,客户端则会送出一个DHCPDECLINE封包给DHCP服务器,拒绝接受其DHCP offer,并重新发送DHCP discover信息。

七、当DHCP服务器接收到客户端的DHCP request之后,会向客户端发出一个DHCPACK响应,以确认IP租约的正式生效,也就结束了一个完整的DHCP工作过程,一旦DHCP客户端成功地从服务器哪里取得DHCP租约之后,除非其租约已经失效并且IP地址也重新设定回0.0.0.0,否则就无需再发送DHCP discover信息了,而会直接使用已经租用到的IP地址向之前之DHCP服务器发出DHCP request信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没问题的话,直接响应DHCPack来确认则可。

从前面描述的过程中,我们不难发现:DHCDISCOVER是以广播方式进行的,其情形只能在同一网络之内进行,因为router是不会将广播传送出去的。但如果DHCP服务器安设在其它的网络上面呢?

由于DHCP客户端还没有IP环境设定,所以也不知道Router地址,而且有些Router也不会将DHCP广播封包传递出去,因此这情形下DHCP DISCOVER是永远没办法抵达DHCP服务器那端的,当然也不会发生OFFER及其它动作了。

责任编辑:遗忘者 来源: 路由人
相关推荐

2010-04-02 14:37:21

家用级无线路由器

2012-12-24 09:35:41

路由器IP地址

2018-03-16 10:01:31

2018-02-07 09:27:55

2010-09-27 10:43:35

无线路由器

2017-03-14 15:46:30

AndroidiOS不同之处

2021-03-09 16:38:48

加密货币比特币货币

2009-09-25 16:13:03

Hibernate 3Hibernate2.

2023-08-10 17:23:10

LibreOfficOpenOffice

2021-11-14 22:06:48

JavaPython方式

2010-04-20 16:07:25

Oracle DRCP

2009-12-15 18:47:56

Ruby框架OG

2009-08-20 10:39:00

Java与C#的不同之

2010-01-08 14:35:24

VB.NET模块

2012-08-23 13:36:27

2012-08-31 11:21:12

云计算大数据

2010-04-26 17:24:56

Unix操作系统

2010-08-26 10:11:15

路由器DHCP

2010-09-25 13:20:22

DHCP BOOTP

2010-05-24 18:49:13

MySQL数据库
点赞
收藏

51CTO技术栈公众号