§2.1 应用层协议之动态主机配置协议DHCP

前言

提到应用层的协议,我首先把DHCP(Dynamic Host Configuration Protocol)协议作为了首选,为什么呢?因为我觉得这是上网的第一步。生活在这个时代人,大家或多或少的听说过ip地址。了解的更多一点的人,他们应该知道上网都是通过IP地址,以及IP地址分为IPv4和IPv6。但是我相信大部分人应该还是没有配置过IP地址的。一方面这要求人们对基本的计算机网络知识有一点点了解,另一方面是比较麻烦。试想,开机之后先配个地址,再配个掩码,配个网关,配个dns的地址。一般人他不知道这些是什么,也比较繁琐,在网络刚刚出现的时候,对于非专业人士来说,他们可能面对这个就会知难而退。

面对这个问题有两种方案:
1、要么计算机等网络设备出厂时就同一设置好IP地址,那样用户就不需要设置了,很方便。但是这种情况很显然是不现实的,首先IPv4地址不一定够(广大的朋友知道不够就行了,后来到网络层我会解释一下),其次他们不知道你所在的地方的dns,如果都设置成根(这里可以理解为dns服务器中几乎全知全能的一台服务器)的地址那么如果根服务器离你的很远,那么你想上网,可能会有一定的延迟。大家知道这么个情况就行了,我会在后文解释。最重要的是各大厂家不是一家的,那个年代他们并没有达成共识,也没有同一的组织。

2、有一个软件,自动的根据本地的网络情况,为主机自动的分配地址DHCP协议横空出世,软件自动的帮助人们配置好一系列基本操作,极大的极高了便利性。显然这种情况比上一种情况好了很多。只要各大操作系统的厂家支持这种软件就行了。于是就变成了DHCP协议。

根据前面的描述,DHCP出现的使命就是它要极大的方便去上网。省去那些繁琐的掩码、网关(或者是默认路由器的 IP 地址)、域名服务器以及传说中的IP地址的配置。总的来说它提供了一种即插即用连网机制。这样一来计算机加入一个网络,会通过软件自行获取,极大的简化了使用者的操作。后来各个厂商们把DHCP协议集成到BIOS系统里,电脑开机就开始调用这个协议,进而电脑开机完毕,地址等信息已经拿到手了。同时呢,地址赋予的方式是采取租用的方式,服务器会给你一个临时的地址,你一直在使用。你电脑关机了,那么它就会知道这个地址不用了,就收回来。服务器维持一个DHCP地址池,里面放着可用的DHCP地址。就像是现实中去饭店吃饭一样,你去吃饭,饭店会给你安排个座位,你吃好了,座位就释放了,你的饭吃完了,理论上来说你该走了,但是你没吃饱,那么就再续一段时间。

下面说一下DHCP协议:
首先是它的工作模式:根据前文提到的,应用层的工作模式有两种:C/S模式和P2P模式。
这里呢,客户机需要向DHCP服务器请求IP地址,那么双方基本上就是不对等的了。使用的是C/S模式。
下面的分析中:所有的报文都可以理解为服务器端或者是客户机端说的“话”,话的意思可以从名字中看出来。

工作方式:
情况1:请求IP地址。

1、最最一开始,DHCP服务器启动,被动的打开了UDP67号口。不断地监听这个端口,等待客户机发送请求。

2、然后电脑启动时,需要使用IP地址的主机会向DHCP服务器广播发现报文(DHCPDISCOVE)。(注:广播:就是向所有人都发送;发现报文:可以理解为一种消息。参考现实中的一句话:“谁是DHCP服务器?请告诉我,我的地址的0.0.0.0”)这个时候,主机就是DHCP客户机了。

这个时候有两个操作,一方面是主机在进行广播,所有主机都能知道。另一方面,因为主机的源地址比较特殊全为0,故而只有DHCP服务器才会对此报文进行回复。

3、DHCP服务器在收到了此报文之后,DHCP服务器首先看看这个主机的发送的发现报文里的其他信息,看看这个机子以前有没有在我这里租过IP地址(回头客),要是以前有的话,切那个IP地址没有被分配出去,那么服务器就会将这个地址放在**提供报文(DHCPOFFER)**里,发给那个主机。要是这个主机是个新客人,那么就从自己的IP地址池中找一个现在未被使用的地址,放在提供报文中,单独发送给这个主机(单播)。之后DHCP服务器会等待客户机的回应。

4、当客户机收到了DHCP提供报文之后,客户机就会明白自己找到自己要找的人了。理论上来说这个时候客户机就可以使用IP地址了。但是还有后面的阶段。因为协议的设计者考虑到,因为一开始的发现报文是广播,一个网络中有可能是存在多台DHCP服务器的,那么这个时候多个服务器都向客户机发送了提供报文,客户机怎么办呢?于是就有了这个阶段的操作,客户机会从几个DHCP服务器中选择一个,并广播DHCP请求报文,意思就是告诉所有人,我跟他走了,在一起了。其他人就不考虑了。这里的选择标准基本上是先到先得。

5、被选中的DHCP服务器收到了广播报文时,会向该客户机发送一个同意(DHCPACK)或者拒绝报文(DHCPNACK)。一般来说都是同意的。偶尔因为一些故障,无法将事先约定的IP地址进行绑定会回复拒绝报文。没有被选中的主机则会在收到报文后,将之前准备给该主机的IP记录清除,等待其他主机请求。

6、此时如果本主机收到了DHCP服务器的同意报文,则DHCP客户机和这个IP进入已绑定状态,客户机可以开始使用临时的地址。同时同意报文中包含着租用期。协议要求客户机在半个租用期和87.5%个租用期的时候发送更新租用期请求。 如果收到了NACK报文,客户机冲第一步重新来过,开始广播DHCP发现报文。

情况2:续租IP地址

7、当客户机在租用期过了一半的时候,会发送DHCPREQUEST报文即重新请求报文。

8、DHCP服务器收到该请求报文之后,会抉择是否续约,大部分情况是续的。然后再次发送DHCPACK报文。 如果服务器拒绝续约,则发送NACK报文。

9、客户机如果收到了DHCP服务器的ACK报文时,则重新计时。待到下一个租约期的一半时,再次发送重新请求报文。
若收到NACK报文时,客户机必须立即停止使用当前IP地址并将其释放,然后重新进行DHCP发现报文的广播。
若客户机一直没有收到报文时,则在87.5%个租用期时,再次发送重新请求报文。看DHCP服务器是否响应。若至地址租期到期,DHCP服务器仍未响应,则客户机发送DHCP RELEASE报文。主动向DHCP服务器释放地址.然后开始新一轮的IP地址获取.

图片源自《计算机网络》谢希仁版图中,序号和我描述的序号可能不一样

中继:
如果一个大的网络中,有一些大网络的子网络怎么办呢?每个子网络都建立一个DHCP服务器很明显不太合适,这个时候就有了DHCP服务器中继。
这个被人为指定的中继会承担分担网络流量的作用。它知道DHCP服务器的具体信息(就是他知道DHCP服务器在哪里,能找到他),如果中继收到了一个主机的广播请求,那么该代理会以单播的形式,向DHCP服务器发送此报文,等待DHCP服务器回复了之后,中继仍会以单播的形式发回给主机。大大的缓解了网络的压力。
为什么是缓解压力呢?你想想,你去要地址,肯定是要让所有人都知道。你如果在全校范围内寻找校长,肯定要买功率十分大的喇叭。但是如果你们班有代理,那么你只需要一个小喇叭在全班范围内大喊,代理听到了之后自然会把你的需求上报给校长。

图片源自网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值