協議森林16 小美的桌號(DHCP協議)

2022-02-16 16:44:44 字數 3158 閱讀 5168

dhcp協議用於動態的配置電腦的網路相關引數,如主機的ip位址,路由器出口位址、dns網域名稱伺服器位址等。一台電腦只要接上網,就可以通過dhcp協議獲得相關配置,從而順利的暢遊網路。

電腦剛剛接上網路時,像乙個走入一家新餐廳的食客,不免會有很多疑惑:

「我該坐在**?」

「我怎麼點菜?」

「我該如何結賬?」

初入大飯店

如果顧客的問題長時間得不到解答,那麼餐廳很可能失去這位客人。於是,餐廳往往會僱一些服務員。他們可以把客人引導到空閒的座位,並告訴顧客如何點餐、如何結賬等。同樣,在網路通訊中,一台電腦需要設定自己的ip位址等網路引數。可對於電腦使用者來說,這些設定太過複雜。幸好,dhcp協議可以解決這一讓人頭痛的問題。

dhcp協議全稱為「動態主機設定協議」(dynamic host configuration protocol)。通常來說,普通電腦中都內建有dhcp客戶端模組。電腦接上網路後,dhcp客戶端發現新連通的網路,會在該網路上找dhcp伺服器。dhcp伺服器將給電腦提供合理的網路配置,並把設定資訊傳回本機。所謂的dhcp伺服器,其實就是一些執行有dhcp伺服器端軟體的特殊電腦。他們像等候在網路上的服務員,為新來的顧客排憂解難。本機和dhcp伺服器之間的通訊,都是通過dhcp協議進行的。

其實在網路誕生初期,就有了用一台伺服器為網路上的電腦配置引數的做法。最早的乙個協議叫bootp(bootstrap protocol),主要用於開機配置。計算機開機時需要很多配置引數。對於沒有磁碟的計算機來說,它無法獲得這些引數,但可以通過bootp從網路上的其他裝置上獲得。dhcp大體上繼承了bootp的工作方式,但在細節上進行了改進。我們將在以後看到。

位址合法,即對應該區域網的ip位址和子網掩碼。

位址空閒,同一網路下沒有其他裝置使用該位址。

dhcp伺服器上存有乙個位址池,裡面是可用的ip位址,相當於服務員手中的空閒桌號列表。當新客人出現時,dhcp伺服器就會從位址池中取出乙個ip位址分配給客人。此外,伺服器還會說明ip位址的占用時間,也就是租期:

「先生,請注意您的用餐時間為1個小時」

有了動態分配,dhcp伺服器不但簡化了網路配置過程,還可以有效利用ip位址資源。例如乙個咖啡館的wifi路由允許200臺裝置接入。咖啡館每天進出的客人很多。如果每個客人都要求乙個不一樣的ip位址的話,所需位址會遠遠超過200臺。而通過動態的方式,200個ip位址不斷**使用,完全可以滿足客人的需要。有時,dhcp伺服器會預留一些位址給特定mac位址的裝置使用。這就好像餐廳給貴賓預留座位,不允許其他客人坐。這樣的位址通常會分配給印表機、傳真機等特殊裝置。由於ip位址固定,使用者可以方便的通過ip位址找到它們。

dhcp協議的底層是udp協議。我們知道,網路上的點對點溝通需要有ip位址。但新接入網路的客戶機正是想通過dhcp通訊來獲得ip位址。這簡直成了「雞生蛋、蛋生雞」的死胡同。幸好,除了點對點通訊,udp協議還允許廣播通訊。把udp資料報傳送到網路的廣播位址,網路上的每個裝置都能收到。因此,dhcp通訊主要靠這種廣播的形式進行。

dhcp通訊分為四步:

discovery:客戶機發廣播,搜尋dhcp伺服器。

acknowledge:dhcp伺服器確認,並提供其他配置引數。

每一步的通訊內容都放在乙個符合dhcp格式的資料報中。資料報中可以包括客戶機ip位址、伺服器ip位址、客戶的硬體mac編號等字段,還能附加多條網路設定引數。當某些資訊未知時,如客戶機的ip位址,相應的字段可以填成0。

我們可以再次用餐廳來模擬通訊過程:

客人老張大喊:「服務員,我是老張,給我找張桌子唄?」

服務員小美回喊:「我是服務員小美。老張你坐3號桌行嗎?」

老張覺得3號桌不錯,又喊了一嗓子,「這桌子行,老張我就坐在這裡了啊。」

小美回覆,「成啊。記得用餐時間是乙個小時喲。」

服務員小美

經過這一系列的dhcp通訊,客戶機獲得了自己的ip位址,也記下了租期時間。為了防止dhcp伺服器不靠譜,客戶機通常還會探測一下網路,以免該ip已經被其他裝置占用。除了租期,dhcp伺服器最終確認中,還可能加上其他網路配置資訊,如dns伺服器位址、網路出口位址等。客戶機可以選擇接受,也可以拒絕dhcp伺服器的「好意」,自行設定這些引數。

一定程度上說,dhcp伺服器是個活雷鋒,為網路上的其他裝置提供公共服務,免得裝置之間私自打架。人們也越來越信賴這個活雷鋒,只管接上網線、連上wifi,讓dhcp伺服器處理配置之類的雜事。無形中,dhcp伺服器掌握了很大的公共權力。一些黑客攻擊手法開始瞄準dhcp伺服器。

針對dhcp的一種攻擊辦法是從伺服器那裡騙ip位址。攻擊者的電腦可以不斷發出dhcp請求,冒充成新入網的客戶機。於是,dhcp伺服器的位址池被耗乾,無法分配位址給後來的使用者。後來的使用者再也沒法使用網路服務。攻擊者很可能會繼續下連環套。攻擊者占有了大量ip位址,可以裝扮成新的dhcp伺服器,把自己騙來的ip位址分配給網路上的新使用者。

等等,好像有什麼不對攻擊者搞癱一台dhcp伺服器,就為了過一下cosplay的癮?

假扮小美,很容易被外表迷惑

當然不是。dhcp伺服器還能提供其他網路設定引數。攻擊者可以讓自己成為dns伺服器或者網路出口。於是,客戶機的網域名稱解析和外網通訊,必須經過攻擊者的電腦。這個時候,攻擊者的許可權就很大了。他可以偷聽通訊、偽裝成客戶機、假扮成某個網域名稱的**。比如說,攻擊者就可以篡改網域名稱解析,讓你在訪問www.cnblogs.com/vamei時,實際上訪問的是攻擊者提供的乙個網頁。當你在這個網頁上輸入使用者名稱和密碼時,你的資訊就完全洩露給了攻擊者。

dhcp攻擊讓人防不勝防。dhcp協議在設計中並沒有考慮到安全性的問題,所以很難從軟體上杜絕dhcp攻擊。某些品牌的交換機上,可以指定特定埠給合法的dhcp伺服器,以免其他人偽裝。當然,最重要的保護方式,還是防止攻擊者連入區域網。

dhcp伺服器可以動態的分配ip位址,還可以提供其他網路設定引數。客戶機和伺服器經過四步來完成dhcp通訊。

網路 協議森林

網際網路是為了通訊,通訊又依賴於協議。我們交談時,要符合語法和用語規範。機器之間的通話也要符合協議。否則,雞同鴨講,無法相互理解。協議森林 是我的一系列關於網路協議的文章,總結了多個網路協議。網路協議屬於技術,但深受政策與歷史的影響。ethernet,ip,udp,tcp,http,dns.這些協議...

協議森林13 9527 DNS協議

在周星馳的電影 唐伯虎點秋香 中,周星馳飾演的主角一進入華府,就被強制增加了乙個代號9527。從此,華府的人開始稱呼主角為9527,而不是他的姓名。網域名稱 domain name 是ip位址的代號。網域名稱通常是由字元構成的。對於人類來說,字元構成的網域名稱,比如www.yahoo.com,要比純...

協議森林07 傀儡 UDP協議

我們已經講解了物理層 連線層和網路層。最開始的連線層協議種類繁多 ethernet wifi arp等等 到了網路層,我們只剩下乙個ip協議 ipv4和ipv6是替代關係 進入到傳輸層 transport layer 協議的種類又開始繁多起來 比如tcp udp sctp等 這就好像下面的大樹,根部...