标签:需要 状态 芯片 发送 一个 boot 广播 安装 能力
DHCP是什么,指的是Dynamic Host Configuration Protocol,他的前生叫bootp,就是boot Protocol。bootp是什么?很简单的道理,各位有没有听说过叫无盘工作站的。像早期的计算机网络中的主机,是有一台服务器在这工作着,服务器上有一个硬盘,这个硬盘空间可能稍微会比较大一点,然后讷,有很多客户机,像早期网吧都是这样子,这每一台客户机都有CPU内存键盘鼠标显示器还有主板等等就是没有硬盘,注意他没硬盘,没硬盘的话操作系统装哪儿去啊,没有操作系统我们不可能开机真正用的对不对,所以对用户来讲操作系统是一个人机交互的非常重要的通用软件层,但现在我们没有硬盘,怎么装操作系统?你不能告诉我装U盘对吧,内核U盘什么概念还搞不清讷,怎么办?但是硬盘还是非常昂贵的资源,所以不可能在每一个主机上配一个硬盘,而且也没必要,当时的计算机性能还很差,玩的游戏恐怕都是你现在看到那种很小很小的游戏,模拟器上的游戏,那由此就意味着,每一个主机的操作系统都是装在服务器的硬盘当中的,那现在的问题是,那这就意味着有一个问题了,主机要想启动起来要想加载操作系统,就必要要能更我们的服务器通信,并且把自己所需要的文件都读进来对不对,那在通信之前要干什么,双方要想通信,要能够建立通信我们说过很多次现在用的tcp/ip协议,那就意味着双方是不是得有ip地址啊,但是我们知道你的ip地址配在哪了?ip地址是不是配置在操作系统上的,那你操作系统又没装怎么办,你看我们要想跟对方通信得有ip地址,IP地址是通过操作系统配置的,操作系统又没有硬盘装,你说怎么办于是在这种主机上我们需要一种独特的网卡,注意 需要一种独特的网卡,这个网卡在启动的时候,网卡自身他有ROM,这不需要装操作系统网卡自身就有一些控制芯片,这个芯片中有些指令,这个指令就能够完成一些独立的操作能理解这意思吧,好 这个芯片是干什么,启动的时候他就向网络发送广播通告,说 我自己有一个MAC地址,现在比较穷又没有操作系统,谁能够给我一个ip地址先拿来用用啊~。大概就是这个意思。这儿我们有一个服务器他讷能够接受这种请求并且他有一堆地址可以用,理解吧,也就是有个地址列表,这个地址列表通常我们把他称作地址池,于是讷我们的服务器就从这个地址列表当中找一个空闲列表分配给他使用了,既然给他了那就不能再给其它主机了是不是,还有要注意的是,这个地址一旦分配给这个主机以后,就永远的属于这个主机了,在刚开始的时候 主机开机的时候请求时动态的,但一旦他开机以后这个地址就永远属于他,怎么永远的讷,一关机他是不是任然没有了。永远指的时我们的服务器会标记这个地址,以后就永远属于这个家伙了,那怎么标记永远,他有MAC地址,跟MAC地址建立关联关系,一旦分配出去以后就建立关联关系了,以后只有同一个MAC来申请,那这个地址就会给他使用,所以这个地址就保留给这个主机,永久使用了。
好了既然有了ip地址,接下来他俩是不就可以通信了,能够通信之后,那么网卡他就能够自动的实现,注意这个网卡自己时智能的,跟平时我们现在用的网卡不一样哈,这种特殊的网卡他能自动的实现将这样一个应用程序加载进本地的内存并且启动起来从而操作系统就启动起来了,像这种我们的ip地址是不是动态获得的,但是动态获得的有一个缺陷,一旦获得以后以后再申请就一定还是这一个地址了,而且这一个地址也只能归这一台主机使用,因为他要靠这个地址来引导这个操作系统,并且标记属于这个主机的操作系统所安装的位置的。这一种能够实现地址的动态分配,但也仅仅是第一次动态分配而已,为了引导主机启动的,所以我们叫bootp,但是后来随着我们计算机的发展,每一个客户机都有自己的硬盘了,那这就意味着每一个主机都可以自己装操作系统了,而且我们没有IP地址也照样能启动了,没有IP地址也照样能运行操作系统了,但是尽管如此,我们局域网内部的客户主机非常的多,我们又期望这些主机之间彼此都能够进行通信,那因此每个主机是不是照样得有个ip地址啊,怎么去给这些主机配置ip地址呢,假如你是一个网络管理员,我们公司有一台服务器,有50台客户端,现在我们需要配置这50台客户端彼此之间能够通信而且能够跟服务器进行通信那怎么配置ip地址啊?规划好一个主机上配置一个是不是就ok了,过两天又来了一个新主机,又来了十个新主机,是不是要照样往里边配置地址啊,再过一段时间又走了5个主机,过一段时间又来了5个再过一段时间又走了5个又来了7个又走了3个又来了20个....,你会发现过一段时间到底哪个主机用的哪个地址你已经各种凌乱了,搞不清哪个主机时哪个主机了是不是这样子啊。过两天,又来了个新主机开始配置地址,配置完了你发现冲突,有人在用,再配置,冲突,有人在用。怎么办,空闲的到底是谁也不知道了,所以就非常非常困难,因此bootp协议能够分配地址,但是过两天我们说过这个主机走了,他压根从此以后不来了, 这个地址分配给他以后再也不能分配给其它主机使用了,是不是永远处于浪费状态啊,所以说,bootp已经不能再应付这种现状了,于是有了bootp的增强版就是DHCP
DHCP引进了bootp所没有的一个概念叫做“租约”(lease),这个地址我们给你以后你可以用但是不是永久使用,而是只有70年产权,能明白这意思吧。而是只有有限的使用期限,看上去是永久属于你的是吧,但不是的,那因此当你一关机怎么办呢,当这个主机一关机这个地址就会被释放掉,这个地址平时可以分配给你使用,但一旦你一关机这个地址就释放就从新把他放到可用地址列表中,其它主机启动需要地址我这个地址就可以分配给其它主机使用了,所以就像租房子一样,你租进来可以使用一段时间,你退了,那房子我照样还能租给其它房客,这就叫租约,DHCP的概念他真正实现了动态,需要就分配,不需要就回收,ok。好那现在就有个问题了,我们租给他之后我们实现约定好你这里只能使用一年对吧,这个房子只租给你一年,但一年以后你继续想使用怎么办,我们是不是可以续租啊,什么时候去续租呢。房子今天就到期了你今天才去续租你看人家要不要租给你,我们显然不能到期了再去续租的,现实生活中也是这么回事,那什么时候去续租啊,提前,提前多久,那可能不同的房东有不同的要求对吧,那一般而言,对于DHCP来讲,他的续租时间都要求得比较相当靠前,一般当你的租期到达一半得时候你就要绝对是不是要续租了,比如说这个ip地址给你使用两个小时,那因此当你得时间走过1个小时得时候就开始向服务器发起续租请求,一续租不当紧,这一个小时变成多少了,不会是三个小时,是两个小时,注意我们的最长的租约期限,比如说我定义就是两个小时,默认就给你两个小时,到一个小时我们就续租,现在我们又延长到2个小时,但是我们刚才说过过一半还要再续租是这样子吧,那于是再走过一小时,再次续租,续租以后呢又变成两个小时,他是这样子的一种循环做法懂了吧
2H,1H -> 2H -> 1H -> 2H
是不是一次续租延长了多少啊,是不是只延长了一个小时,ok一次只延长了一半的时间,好了假如说你租的房子本来我们约定好的是一年是吧,但是房东说了你要打算续租要提前半年给我说,好了半年期限到了你去找房东,电话打不通人也找不到怎么办,你说这房子就不租了吗,不合适是吧,那房东联系不上不是我的事对不对,我已经去续租了那怎么办,那自己就继续往下住下去对不对,我去敲房东的门各种方式都想办法了,我找一次再找一次再找一次重试了好几次都联系不上房东那没办法,我继续住吧,那继续住住多长时间呢,剩下一半时间还有多少一个小时是不是,剩下一半的再一半,刚才说过按道理来讲哦我们只有一个小时了对不对,又过了一半到0.5小时的时候再去找房东,续租,这儿一找房东在了直接续租为多少?两个小时,OK这就搞定了
1H -> 0.5H -> 2H
要是房东还是不在呢,你还是找不着怎么办,那这个时候我们只剩下0.5个小时了对吧,那继续等,我们找不着房东要多试几次的,任然联系不上那就再走一半,那就是0.25小时,还剩0.25个小时,那继续找房东还是找不到怎么办,在找不着那房租可就要到期了那怎么办呢,那假如说明天你的房子就到期了房东突然出现了告诉你我不租了,你说怎么办,你是不是就完全陷入被动的境况了,临时找房子可能来不及,那没办法你找不着就换房呗。我不能到时候完全被动,反正我找你找不着我们就认为合同终止了可以这样理解吧,比方说我找了你三次,0.5是不是找了三次了,大不了我再找你一次到0.125,0.125的时候我们找了你四次,那还找不着那没办法,干什么啊,这房子我也不租了剩下的钱我也不要了自己找个新的搬出去得了。这就是DHCP的做法。的确如此,这也的确是DHCP的做法,当到达最后一个时间段任然找不到的时候,我们也不要了干脆释放得了,从新开始找新的房东,谁能提供给我新地址得,再去重新去找。
0.5H -> 0.25H -> 0.15H
但你有没有想象过我们平时找房子怎么找的?你知不知道谁家有空房可以租给你啊,不知道,那就一家一家得去找对吧,这个方式叫广播得对不对,ok这就是广播的,一家一家挨个去找,好了假如说你找了三家人家都有空房子给你,你说你到底租哪一个呢,你不可能一人租三个对吧,这也不现实,资源浪费对不对,租哪一个呢,那谁加的条件好又便宜,我们是不是就应该租谁的,那DHCP来讲他应该接受谁的呢,那一般来讲我有两个服务器都可以提供地址,那你说到底接谁的呢。前端时间看一个生物学的书说杜鹃鸟在接受求偶的时候一般来讲哪个公鸟带过来的虫子大,带个虫子过来求偶,他就跟谁,是吧这就是谁有钱就跟谁,当然了为什么要选择有钱的,因为跟有钱的人我们存活的几率比较大所以这是人的生物本性。跟道德没有关系,所以你要是不挣钱的话那就意味着你没有办法满足别人的生物本性,你连别人养活都养活不好,你就泵怪别人爱钱。ok啊开个玩笑,事实上的确是如此的,好吧开玩笑,好由此可见,我们DHCP服务器跟人一样应该选择生存能力比较强的跟着谁将来过得比较好的这才是最重要的,这是第一个条件,因此DHCP客户端应该选择谁呢,谁响应的速度快我们就认为服务器离我们最近,他中间的带宽我们将来续租的时候也方便,那因此一般他接受第一个响应的。好了这就是我们DHCP的基本工作过程
标签:需要 状态 芯片 发送 一个 boot 广播 安装 能力
原文地址:https://blog.51cto.com/14224061/2360864