DHCP的前世与今生
1、你知道BOOTP吗? 说起BOOTP,大家知道的应该不多,但是说起DHCP,大家肯定知道,BOOT其实就是DHCP的前身。首先,有必要介绍一下BOOTP是做啥的,唁昼囫缍这个不要求理解,知道就行。BOOTP应用于无盘主机连接的网络,因为无盘连接从BOOT ROM启动而并非磁盘,因此需要借助BOOTP来自动设置网络,。但是BOOTP必须知道主机的MAC地址才能静态的得到IP地址,也就是说一对一,一个IP永远分配给了一个主机,这就造成了IP的浪费,并且也不灵活,因此,它就被淘汰了,DHCP也因此产生。 这个补充一下RARP也可以实现无盘工作站的引导,但是存在两个问题 1.只能获取IP地址 2.RARP是数据链路层协议,因此不会被路由器转发,因此每个网络都要设置一个RARP服务器
2、DHCP是第几层路由协议? 好多人看到,DHCP频繁的提到67.68(UDP)端口,以为DHCP是个四层的协议,其实DHCP是七层的
3、DHCP有几种分配机制? 1.自动分配:DHCP分配一个永久的IP给主机 2.动态分配:把一个IP地址在有限的期限内分给主机,当时间过半的时候续约 3.手工分配:由管理员分配固定的IP地址给主机
4、DHCP有什么优点和缺点 优点:方便(这个足够概括了) 缺点:客户端是主动方,所以不安全。当出现多个DHCP服务器的时候会造成冲突。
5、DHCP具体是如何工作的? 1.当一个cl坡纠课柩ient接入网络的时候,没有有效的IP地址,为了参与通信,于是它发出DHC霸烹钟爷P discover数据包进行请求。因为它不知道自己属于哪一个网络,所以只能把源IP字段置为0.0.0.0,同时他也不知道谁是DHCP服务器,所以把目标IP置为255.255.255.255。从数据链路层的封装来看,client是知道自己的MAC地址的,所以在源MAC字段,填写的是自己的MAC地址,由于不知道DHCP服务器的MAC地址,所以置为全f,进行泛洪。这里需要注意的是,client使用的UDP端口号是68,server使用的UDP端口号是67,因此源端口号是68,目标端口号是67。当DHCP discover发出去之后,如果在1s之内没有收到响应,然后发送第二个DHCP discover,如果间隔9s还是没有收到的话,则发送第三个DHCP discover,如果间隔13s的话还没有收到DHCPdiscover,则发送第四个DHCP discover,如果16s之内还没有收到回应,则宣告没有找到DHCP服务器(后三个间隔都会加上1-1000ms的随机时延),于是从169.254.0.0/16这个网段获取一个安慰地址(总不能忙活了半天啥都没拿到)。但是,client还不死心,间隔5分钟依然会发送一次DHCP discover,一直持续到获得有效地址或者关机。 2.当DHCP服务器收到DHCP discover的时候,会检查自己的IP地址池,如果有可分配的IP,则把分配出来的ip地址和一些配置信息(比如租约,子网掩码,网关一类的东西)通过DHCP offer广播出去。这里二层和三层的目标地址仍然都使用的是广播地址,源地址使用的DHCP server自己的MAC地址和IP地址,这样做的原因是通知域内的所有client这个ip地址将被分配。 3.如果有多个DHCP offer进行了响应,则client会选择最先收到的那个,并且会向网络发送一个DHCP request,来表明自己使用的是哪个DHCP服务器提供的IP,因此,这次也是广播。目标三层地址使用广播地址,二层地址使用的是全F地址,源地址使用自己的MAC地址和0.0.0.0地址。在发送DHCP request的同时,客户端还会发送一个ARP包,来探测网络中是否已经有客户端使用了这个IP,如果已被占用,则发送一个DHCP decline包拒绝接受其DHCP offer,并且重新发送DHCP discover。 4.当DHCP服务器收到DHCP request之后,则广播一个DHCP ack进行确认,目标三层地址使用的是广播地址,目标二层地址使用的是全F地址,之所以用广播的原因是,一方面是确认信息,一方面向外界宣告这个IP已经被使用了。(Windows2000以后的版本,DHCP客户端还会连发三次arp以确认这个IP未被使用,如果被使用,在发送DHCP decline信息,拒绝此ack,然后重新进入DHCP discover阶段) 5.以后client重新连接网络的时候,就不需要发送DHCP discover信息了,而是直接发送DHCP request,当DHCP服务器收到之后,尝试为它分配原来的IP地址,并回复一个DHCP ACK,如果原来的ip已经被分配,则DHCP服务器回复一个否认的DHCP ACK,当client收到之后必须从DHCP discover重新开始。 6.当IP的租期过半,则client需要需要向server发DHCP request信息进行续约,如果收到了来自于server的DHCP ACK消息,则续约成功,否则,到87.5%的时候继续进行续约请求,如果还没收到,持续到100%,IP失效,这时候必须放弃这个IP地址。
6、DHCP在现实生活中的应用还是非常有用的,所以掌握它十分的重要。