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工作原理

HCIA的DHCP原理_第1张图片

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,第四个和第二个包也一样。二四包是单播。

你可能感兴趣的:(网络协议)