HCIA的DHCP原理

1.什么是DHCP?

DHCP动态主机配置协议(Dynamic Host Conf iguration Protocol)是一个局域网的网络协议,使用UDP协议工作。

功能

1.给内部网络或网络服务供应商“自动”分配IP地址。

2.给用户或内部网络管理员作为对所有计算机作中央管理的手段。

好处:

减少管理员的工作量。

避免配置IP输入错误的可能。

避免IP地址冲突。

为更改IP地址段时,不需要重新配置每个用户的IP地址。

提高了IP地址的利用率。

方便客户端的配置。

DHCP的典型应用模式如下:在网络中假设一台专用的DHCP服务器,负责集中分配各种网络地址参数(主要包括IP地址、子网掩码、广播地址、默认网关地址、DNS服务器地址);其他主机作为DHCP的客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自动配置过程。

DHCP协议采用UDP作为传输协议,主机发送请求信息到DHCP服务器67号端口,DHCP服务器回应应答信息给客户端68端口。

2.DHCP工作原理

1.DHCP discover:DHCP发现报文

客户端找服务器端口67的DHCP服务器,要求分配地址

这时的封装的报文内容:

传输层端口号:自己的端口号为68,请求的目标端口号是67

网络层IP地址:源IP地址是0.0.0.0( 此时客户端没有IP地址,用0.0.0.0占位),目标IP地址是255.255.255.255(广播,不知道到谁是DHCP服务器)

数据链路层MAC地址:源MAC地址是自己的MAC地址,目标MAC地址是ff:ff:ff:ff:ff:ff(此时不知道到服务器的MAC地址,使用全f) 

这时,PC2,PC3,AR1都会收到这个报文,它们会从第一层开始解封装,将第一层bit流转换成第二层frame数据帧,在第二层,查看MAC地址,发现是全f,选择继续解封装,到了第三层,发现是广播地址,继续解封装,到了第四层,PC2,PC3发现目标端口号是67,选择丢弃,而AR1作为DHCP服务器,会继续,发现是Discover报文,就会进行下一步DHCP offer,回应客户端。

2.DHCP offer:DHCP应答

此时AR1会从它自己的地址池里面捞一个IP地址和配套的相关信息(网关,掩码,DNS等等),发给客户端。

四层端口号:源端口67(AR1自己),目标端口68.

三层网络层:源IP200.1.1.1,目标IP255.255.255.255(此时客户端的IP是广播地址,而不是0.0.0.0,因为0.0.0.0是无效的,在discover报文里是起一个占位的作用)

二层MAC地址:源MAC地址,AR1自己的MAC地址,目标MAC地址是全f(按理来说,这时AR1从discover里面已经知道了PC1的MAC地址,这里的目标MAC地址理应是PC1的,但在抓包过程中,确实全f,这里我的理解是数据的封装是由上往下封装,但第三层的目标IP地址是255.255.255.255,所以第二层的MAC地址就是IP255.255.255.255的MAC,4个255对应的MAC就是全f),这时又有个问题了,下面的主机在收到offer时,怎么知道哪个offer才是自己的offer呢?那就是在offer报文里面,除了有给客户端分发的IP地址以外,还包含了客户端的MAC地址,这个MAC地址就意味着这个IP地址是给哪个MAC地址客户端分的。

3.DHCP request:DHCP请求(上面到offer是预分配,还没有真正的分配)

一般DHCP服务器不止一个,多个DHCP服务器可以保证一个DHCP服务器宕机了后,还有其他的DHCP继续工作,保证网络的可用,但这就导致了在DHCP discover时,有多个DHCP服务器响应,发来offer,这时客户端选择用哪一个DHCP服务器发来的IP地址,就是先接收到那个DHCP服务器的offer就先用谁的。

四层端口号:源端口号68,目标端口67

三层IP地址:源IP地址0.0.0.0(此时的IP是预分配,但还没有分配,还得用0.0.0.0占位),目标IP地址255.255.255.255。

二层MAC地址:源MAC地址客户端自己,目标MAC全f。

此时,所有的DHCP服务器都收到了这个request,这时,只有客户端准备使用哪个DHCP的IP地址时,那个DHCP才会给客户端做下一步的回复,其它的DHCP服务器就不会回复客户端了,收回IP地址。

4.DHCP ACK:DHCP确认(隐式确认)

就相当于DHCP说,你可以用这个IP地址了,只有当客户端收到这个ACK确认包时,才能使用这个IP地址。

四层端口号:源端口67,目标端口68.

三层IP地址:源IP是DHCP自己的IP地址,目标IP地址广播(还在确认中,客户端依旧还不能使用IP地址)

二层MAC地址:源MAC是DHCP自己的MAC地址,目标MAC还是全f。

综上所诉,四个包全是广播,但在华为和华三不是这样说的,华为的第二个包,在应答上,目标IP居然是已经给主机分配了的那个IP地址,此时主机还不知道自己是这个IP,但华为把这个给强行置成了一个单播位,IP地址不重要,只要MAC地址对,就得接收;在第三个包里,主机的IP却还是0.0.0.0,第四个和第二个包也一样。二四包是单播。

在现实中DHCP不止4个数据包(网络环境发生变化时):

        1.客户机在本网段内广播DHCPDISCOVER报文已发现网络中的DHCP服务器,DHCP Relay可以将此报文广播到其它的网段。

        2.服务器向客户机回应请求,并给出一个可用的IP地址(用来测试)。此地址并非真的被分配。但在给出地址之前,应当用ICMP ECHO REQUEST报文进行检查。

        3.如果收到多个DHCP OFFER报文,DHCP客户机会根据报文的内容从中选择一个给予相应。如果客户机之前曾经获得过一个IP地址,它会将此地址写在DHCP REQUEST 报文的OPTIONS(选项)域的“REQUESTID IP ADDRESS”中发给服务器(就是说,我之前用过这个IP地址,现在我要用,你可以继续给我分配这个IP地址,我接着用),如果这个IP地址已经被分配了,那么就重新分配一个IP地址。

        4.当收到DHCP REQUEST报文后,服务器将客户机的网络的(网络地址,硬件地址)同分配的IP地址绑定,在将IP地址发送给客户机。

        5.当收到DHCP REQUEST报文后,如果发现其申请的地址无法被分配,则用DHCP NAK报文回应。

        6.客户机收到DHCP ACK报文后,在对所有的参数进行一次最后的检查,如果发现有地址冲突的存在,则使用DHCP DECLINE报文回复服务器。

        7.如果客户机放弃使用现在的IP地址,则它使用DHCP RELEASE报文通知服务器,服务器将此地址收回以备下次使用。(例如自己使用手动配置的IP地址)

        8.当客户机的地址达到50%租用期(T1)时,客户机进入RENEW状态,使用DHCP REQUEST报文续约;

当客户机的地址达到87.5%(T2)时,客户机进入REBINDING状态,使用DHCP REQUEST报文续约;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值