1. 程式人生 > >DHCP基本工作過程

DHCP基本工作過程

約定 應付 跟著 方便 dhcp服務器 小時 pro ip協議 條件

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的基本工作過程

DHCP基本工作過程