<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 12.1 DHCP 運作的原理 ## 12.1 DHCP 運作的原理 在正式的進入 DHCP (Dynamic Host Configuration Protocol) 服務器設定之前,我們先來認識一下 DHCP 這個協議吧!還有,需要了解的是,我們是否『一定』得設定 DHCP 這個服務器呢?這里都需要厘清一下概念喔! - - - - - - ### 12.1.1 DHCP 服務器的用途 在開始 DHCP 的說明之前,我們先來復習一下之前在[第二章網絡基礎](http://linux.vbird.org/linux_server/0110network_basic.php)里面提到的幾個網絡參數吧! 要設定好一個網絡的環境,使計算機可以順利的連上 Internet ,那么你的計算機里面一定要有底下幾個網絡的參數才行,分別是: - IP, netmask, network, broadcast, gateway, DNS IP 其中,那個 IP, netmask, network, broadcast 與 gateway 都可以在 /etc/sysconfig/network-scripts/ifcfg-eth\[0-n\] 這檔案里面設定,DNS 服務器的地址則是在 /etc/resolv.conf 里頭設定。只要這幾個項目設定正確,那么計算機應該就沒問題的可以上網了! 所以說,你家里面的 3, 4 部計算機,你都可以手動的來設定好你所需要的網絡參數, 然后利用 [NAT 服務器](http://linux.vbird.org/linux_server/0250simple_firewall.php#nat)的功能,就可以大搖大擺的[連上 Internet](http://linux.vbird.org/linux_server/0130internet_connect.php) 了!真是不錯 ^\_^,不是嗎? 好了,現在讓我們換一個大一些些的場景吧!假設你是學校宿舍的網絡管理員,所管理的學生計算機大概有 100 部好了,那么你怎么設定好這 100 部的計算機呢? 1. 直接每一部計算機都讓你登門拜訪手動的去設定好? 2. 將所有的學生都集合起來,然后精神訓話.....喔不!是直接教導一下怎么設定?還是 3. 藉由一部主機來自動的分配所有的網絡參數給宿舍內的任何一部計算機? 這三種解決方案所需要的時間都不相同,如果你選擇的是(1),那么鳥哥個人認為,你不是工作狂就是瘋掉了, 因為所要花費的時間與你所得的薪水與付出的心力是完全不成比例的。如果選擇是(2),那么很可能你會被掛上獨裁者、 沒良心的管理員的稱號!如果是選擇(3)呢?恭喜你!這個方案的管理時間花費最短,也是最不麻煩的作法啦! 呵呵!知道鳥哥要說些什么了嗎?是的!這個 DHCP (Dynamic Host Configuration Protocol) 服務器最主要的工作,就是在進行上面的第三個方案,也就是自動的將網絡參數正確的分配給網域中的每部計算機, 讓客戶端的計算機可以在開機的時候就立即自動的設定好網絡的參數值,這些參數值可以包括了 IP、netmask、network、gateway 與 DNS 的地址等等。如此一來,身為管理員的你,只要注意到這一部提供網絡參數的主機有沒有掛掉就好了, 其他同學們的個人計算機,哈!你想都不必想要怎么去幫忙!因為 DHCP 主機已經完全都幫你搞定啦! ^\_^! 阿!當管理員最大的幸福就是可以喝喝茶、聊聊天就能控管好一切的網絡問題呢! - - - - - - ### 12.1.2 DHCP 協議的運作方式 你必需要知道的是,DHCP 通常是用于局域網絡內的一個通訊協議,他主要藉由客戶端傳送廣播封包給整個物理網段內的所有主機, 若局域網絡內有 DHCP 服務器時,才會響應客戶端的 IP 參數要求。所以啰,DHCP 服務器與客戶端是應該要在同一個物理網段內的。 至于整個 DHCP 封包在服務器與客戶端的來來回回情況有點像底下這樣:([注1](#ps1)) ![](https://box.kancloud.cn/2016-05-13_5735da709c04b.gif) 圖 12.1-1、 戶端取得 IP 參數的程序可以簡化如下: 1. 客戶端:利用廣播封包發送搜索 DHCP 服務器的封包: 若客戶端網絡設定使用 DHCP 協議取得 IP (在 Windows 內為『自動取得 IP』),則當客戶端開機或者是重新啟動網絡卡時, 客戶端主機會發送出搜尋 DHCP 服務器的 UDP 封包給所有物理網段內的計算機。此封包的目標 IP 會是 255.255.255.255, 所以一般主機接收到這個封包后會直接予以丟棄,但若局域網絡內有 DHCP 服務器時,則會開始進行后續行為。 2. 服務器端:提供客戶端網絡相關的租約以供選擇: DHCP 服務器在接收到這個客戶端的要求后,會針對這個客戶端的[硬件地址 (MAC)](http://linux.vbird.org/linux_server/0110network_basic.php#tcpip_link_mac) 與本身的設定數據來進行下列工作: - 到服務器的登錄文件中尋找該用戶之前是否曾經用過某個 IP ,若有且該 IP 目前無人使用,則提供此 IP 給客戶端; - 若配置文件針對該 MAC 提供額外的固定 IP (static IP) 時,則提供該固定 IP 給客戶端; - 若不符合上述兩個條件,則隨機取用目前沒有被使用的 IP 參數給客戶端,并記錄下來。 總之,服務器端會針對客戶端的要求提供一組網絡參數租約給客戶端選擇,由于此時客戶端尚未有 IP ,因此服務器端響應的封包信息中, 主要是針對客戶端的 MAC 來給予回應。此時服務器端會保留這個租約然后開始等待客戶端的回應。 3. 客戶端:決定選擇的 DHCP 服務器提供的網絡參數租約并回報服務器: 由于局域網絡內可能并非僅有一部 DHCP 服務器,但客戶端僅能接受一組網絡參數的租約。 因此客戶端必需要選擇是否要認可該服務器提供的相關網絡參數的租約。當決定好使用此服務器的網絡參數租約后, 客戶端便開始使用這組網絡參數來設定自己的網絡環境。此外,客戶端也會發送一個廣播封包給所有物理網段內的主機, 告知已經接受該服務器的租約。此時若有第二臺以上的 DHCP 服務器,則這些沒有被接受的服務器會收回該 IP 租約。至于被接受的 DHCP 服務器會繼續進行底下的動作。 4. 服務器端:記錄該次租約行為并回報客戶端已確認的響應封包信息: 當服務器端收到客戶端的確認選擇后,服務器會回傳確認的響應封包,并且告知客戶端這個網絡參數租約的期限, 并且開始租約計時喔!那么該次租約何時會到期而被解約 (真可怕的字眼) ?你可以這樣想: - 客戶端脫機:不論是關閉網絡接口 (ifdown)、重新啟動 (reboot)、關機 (shutdown) 等行為,皆算是脫機狀態,這個時候 Server 端就會將該 IP 回收,并放到 Server 自己的備用區中,等待未來的使用; - 客戶端租約到期:前面提到 DHCP server 端發放的 IP 有使用的期限,客戶端使用這個 IP 到達期限規定的時間,而且沒有重新提出 DHCP 的申請時,就需要將 IP 繳回去!這個時候就會造成斷線。但用戶也可以再向 DHCP 服務器要求再次分配 IP 啰。 以上就是 DHCP 這個協議在 Server 端與 Client 端的運作狀態,由上面這個運作狀態來看,我們可以曉得,只要 Server 端設定沒有問題,加上 Server 與 Client 在硬件聯機上面確定是 OK 的,那么 Client 就可以直接藉由 Server 來取得上網的網絡參數,當然啦,只要我們這些管理員能夠好好的、正確的管理好我們的 DHCP 服務器, 嘿嘿!那么上網的設定自然就變成一件很簡單的事情啦!不過,關于上述的流程還是有一些需要額外說明的啦: - DHCP 服務器給予客戶端的 IP 參數為固定或動態: 在上面的步驟里面,注意到第二步驟了嗎?就是服務器會去比較客戶端的 MAC 硬件地址,并判斷該 MAC 是否需要給予一個固定的 IP 呢!所以啦,我們可以設定 DHCP 服務器給予客戶端的 IP 參數主要有兩種: - 固定 (Static) IP: 只要那個客戶端計算機的網絡卡不換掉,那么 MAC 肯定就不會改變,由于 DHCP 可以根據 MAC 來給予固定的 IP 參數租約,所以該計算機每次都能以一個固定的 IP 連上 Internet !呵呵! 這種情況比較適合當這部客戶端計算機需要用來做為提供區域內的一些網絡服務的主機之用 (所以 IP 要固定)。那么如何在 Linux 上面知道網絡卡的 MAC 呢?很簡單啦!有很多的方式,最簡單的方式就是使用 ifconfig 及 arp 來進行: ``` # 1\. 觀察自己的 MAC 可用 ifconfig: [root@www ~]# ifconfig | grep HW eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD eth1 Link encap:Ethernet HWaddr 08:00:27:2A:30:14 # 因為鳥哥有兩張網卡,所以有兩個硬件地址喔! # 2\. 觀察別人的 MAC 可用 ping 配合 arp [root@www ~]# ping -c 3 192.168.1.254 [root@www ~]# arp -n Address HWtype HWaddress Flags Mask Iface 192.168.1.254 ether 00:0c:6e:85:d5:69 C eth0 ``` - 動態 (dynamic) IP: Client 端每次連上 DHCP 服務器所取得的 IP 都不是固定的!都直接經由 DHCP 所隨機由尚未被使用的 IP 中提供! 除非你的局域網絡內的計算機有可能用來做為主機之用,所以必需要設定成為固定 IP ,否則使用動態 IP 的設定比較簡單,而且使用上面具有較佳的彈性。怎么說呢?假如你是一個 ISP 好了,而你只申請到 150 個 IP 來做為你的客戶聯機之用。那么你是否真的只能邀集到 150 的使用者?呵呵!當然不啰!我可以邀集 200 個使用者以上呢! 為什么?這樣想好了,我今天開了一家餐館,里面只有 20 個座位,那么是否我一餐只能賣給 20 個人呢?當然不是啦!因為客人是人來人往的,有人先吃有人后吃,所以同樣是 20 個座位,但是可以有 40 個人來吃我的簡餐,因為來的時間不一樣嘛!了解了嗎?呵呵!對啦!你這個 ISP 雖然只有 150 個 IP 可以發放,但是因為你的使用者并非 24 小時都掛在在線的,所以你可以將這 150 個 IP 做良好的分配,讓 200 個人來『輪流使用』這 150 個 IP 哩! **Tips:** 其實 IP 只有 Public IP 與 Private IP 兩種,中文翻譯成『公共 IP』與『私有 IP』這兩個, 至于其他所謂的『靜態 IP』、『實體 IP』、『虛擬 IP』、『浮動式 IP』等等,都是藉由一些 IP 取得的方式來分類的, 關于 IP 的種類我們在[網絡基礎](http://linux.vbird.org/linux_server/0110network_basic.php#tcpip_network_type)中談過了, 記得再好好的厘清一下觀念喔! ![](https://box.kancloud.cn/2016-05-13_5735736501917.gif) 事實上現在主流的 ADSL 寬帶撥接上網也有使用到『靜態 IP 』與『固定 IP 』之類的概念喔! 舉例來說好了,hinet/seed net 等主要 ISP 都有提供所謂的:『一個固定 IP 搭配 7~8 個浮動 IP 』的 ADSL 撥接功能,也就是說同樣透過一條電話線撥接到 ISP ,但是其中一個撥接是可以取得固定的 IP 呢! 而其他的則是非固定的 IP ,DHCP 的 static/dynamic 跟這個玩意兒有點類似啦! ^\_^ - 關于租約所造成的問題與租約期限: 怪了!如果我們觀察上面 DHCP 運作模式的第四個步驟,你會發現最后 DHCP 服務器還會給予一個租約期限! 干嘛還要這樣的一個期限呢?其實設定期限還是有個優點啦!最大的優點就是可以避免 IP 被某些使用者一直占用著,但該使用者卻是 Idle (發呆) 的狀態! 舉個例子來說,我們剛剛不是說到,我有 150 個 IP ,但是偏偏我有 200 個用戶嗎?我們以 2010 年的世界杯足球賽來說明好了。假設每個使用者都急著上網知道世足賽的消息, 那么某些熱門對戰時段網絡將可能達到使用尖峰!也就是說,這 200 個人同時要來使用這 150 個 IP ,有可能嗎?當然不可能!肯定會有 50 個人無法聯機,因為『很抱歉!目前系統正在忙線中,請你稍后再撥!』 那怎么辦?這個時候租約到期的方式就很有用處啦!那幾個已經聯機進來很久的人, 就會因為租約到期而被迫脫機,這個時候該 IP 就會被釋放出來,哈哈!大家趕快搶呀!先搶到先贏喔! 所以,那 50 個人 (包括被迫脫機的那個朋友) 只好繼續的、努力的、加油的來進行 DHCP 的要求啰! ^\_^"" 雖然說是優點,但是其實如果站在使用者的角度來看,還是可能會造成公憤的!憑什么大家一起交錢, 我先聯機進來就需要先被踢出去?~呵呵!所以啰,如果要當 ISP ,還是得要先規劃好服務的方針才行呦! 這樣你可以了解租約到期的行為了嗎?! ^\_^ 既然有租約時間,那么是否代表我用 DHCP 取得的 IP 就得要『手動』的在某個時間點去重新取得新的 IP 呢?不需要的啦!因為目前的 DHCP 客戶端程序大多會主動的依據租約時間去重新申請 IP (renew) 的!也就是說在租約到期前你的 DHCP 客戶端程序就已經又重新申請更新租約時間了。所以除非 DHCP 主機掛點, 否則你所取得的 IP 應該是可以一直使用下去的! **Tips:** 一般來說,假設租約期限是 T 小時,那么客戶端在 0.5T 會主動向 DHCP 服務器發出重新要求網絡參數的封包。 如果這次封包要求沒有成功,那么在 0.875T 后還會再次的發送封包一次。正因如此,所以<u>服務器端會啟動 port 67 監聽用戶要求,而用戶會啟動 port 68 主動向服務器要求</u>哩!鳥哥覺得這是很特殊的一件事呢! ![](https://box.kancloud.cn/2016-05-13_5735736501917.gif) - 多部 DHCP 服務器在同一物理網段的情況 或許你曾經發現過一件事情,那就是當我的網域里面有兩部以上的 DHCP 服務器時, 到底哪一部服務器會提供我的這部客戶端計算機所發出的 DHCP 要求?呵呵!很抱歉,俺也不曉得! 因為在網絡上面,很多時候都是『先搶先贏』的, DHCP 的回應也是如此!當 Server1 先響應時,你使用的就是 Server1 所提供的網絡參數內容,如果是 Server2 先響應,你就是使用 Server2 的參數來設定你的客戶端 PC !不過,前提之下當然是這些計算機的『物理聯機』都是在一起的啊! 因為這個特色的關系,所以當你在練習 DHCP 服務器的設定之前, 不要在已經正常運作的區網下測試,否則會很慘。舉個鳥哥的例子來說好了,某一次其他系的研究生在測試網絡安全時, 在原有的區網上面放了一部 IP 分享器,結果你猜怎么著?整棟大樓的網絡都不通了!因為那時整棟大樓的網絡是串接在一起的, 而我們學校是使用 DHCP 讓客戶端上網。由于 IP 分享器的設定并不能連上 Internet ,哇!大家都無法上網了啦! 那你曉得了嗎?不要隨便測試啦這個 DHCP 服務器! - - - - - - ### 12.1.3 何時需要架設 DHCP 服務器 既然 DHCP 的好處是『免客戶端設定』,而且對于行動裝置的上網方面非常的方便!那么是否代表你就得要架設一部 DHCP 呢?那可不一定!接下來要告知大家的是幾個概念性的問題, 你倒不一定『必需』遵守底下的一些概念呢!反正,自己的網域自己『爽』就好啦! - 使用 DHCP 的幾個時機 在某些情況之下,倒是強烈的建議架設 DHCP 主機的!什么情況呢?例如: - 具有相當多行動裝置的場合: 例如你的公司內部很多筆記本電腦使用的場合!因為這種筆電本身就是移動性的裝置, 如果每到一個地方都要去問人家『喂!你這邊的網絡參數是什么?』還得要擔心是否會跟人家的 IP 相沖突等等的問題!這個時候,DHCP 可就是你的救星啰! - 區域內計算機數量相當的多時: 另外一個情況就是你所負責的網域內計算機數量相當龐大時, 大到你沒有辦法一個一個的進行說明來設定他們自己的網絡參數,這個時候為了省麻煩,還是架設 DHCP 來的方便吶!況且,維護一部你熟悉的 DHCP 主機,要比造訪幾十個不懂計算機的人要簡單的多哩!^\_^ - 不建議使用 DHCP 主機的時機 雖然 DHCP 有很多好處,但是你有沒有發現一個步驟怪怪的呀!回頭看一下那個[步驟一](#theory_dhcpwork), 客戶端在開機的時候會主動的發送訊息給網域上的所有機器,這個時候,如果網域上就是沒有 DHCP 主機呢?很抱歉,那么你的這部客戶端計算機,『仍然會持續的發送訊息!』 真正的時間與次數不曉得會有多久,不過,肯定會超過 30 秒以上, 甚至可以達到一分鐘以上!哇!那么這段時間你能干嘛?呵呵!除了等、還是等! 所以啰,如果計算機數不多,還是使用手動的方式來設定一下就好了!方便嘛! - 在你網域內的計算機,有很多機器其實是做為主機的用途,很少用戶需求,那么似乎就沒有必要架設 DHCP ; - 更極端的情況是,像一般家里,只有 3 ~ 4 部計算機,這個時候,架設 DHCP 只能拿來練練功力,事實上,并沒有多大的效益; - 當你管理的網域當中,大多網絡卡都屬于老舊的型號,并不支持 DHCP 的協議時; - 很多用戶的信息知識都很高,那么也沒有需要架設 DHCP 啦。 - - \* 如前所述,上面的都是概念性的說法,事實上,一件事情的解決之道是有很多的方案的, 沒有所謂的『完全正確』的方案,只有『相對可行、并且符合經濟效益與功能』的方案! 所以啰,架設任何網站之前,請先多評估評估吶! - - - - - -
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看