計算機網絡:應用層 —— 動態主機配置協議 DHCP

文章目錄

    • 什么是 DHCP?
    • DHCP 的產生背景
    • DHCP 的工作過程
      • 工作流程
      • 地址分配機制
    • DHCP 中繼代理
    • 總結

什么是 DHCP?

動態主機配置協議(DHCP,Dynamic Host Configuration Protocol)是一種網絡管理協議,用于自動分配IP地址及其他網絡配置參數(如子網掩碼、默認網關、DNS服務器地址等)給網絡中的設備。它基于客戶端/服務器架構,通過集中管理IP地址池,簡化了網絡設備的配置過程。

DHCP 協議允許網絡管理員通過中央服務器來動態分配和管理 IP 地址以及其他網絡配置參數,從而減少了網絡管理的復雜性。

在這里插入圖片描述

DHCP 的產生背景

DHCP 出現之前,網絡管理員需要手動為每臺設備配置 IP 地址,這種方式不僅繁瑣,還容易導致 IP 地址沖突和資源浪費。隨著網絡規模的擴大和設備數量的增加,這種手動配置的方式已無法滿足需求。因此,IETF 設計了 DHCP 協議,以實現動態、自動化的 IP 地址分配

DHCP 的工作過程

DHCP 使用客戶/服務器方式:

  • DHCP 服務器上運行 DHCP 服務器進程,也可簡稱為 DHCP 服務器

  • 在用戶主機上運行 DHCP 客戶進程,也可簡稱為 DHCP 客戶。

DHCP 是 TCP/IP 協議體系應用層中的協議,它使用運輸層的 UDP 所提供的服務。DHCP報文在運輸層會被封裝成為 UDP用戶數據報DHCP 服務器使用的UDP端口是67DHCP 客戶使用的UDP端口是68,這兩個 UDP 端口都是熟知端口。

封裝有 DHCP 報文的 UDP 用戶數據報,在網絡層會被封裝成 IP 數據報,然后再根據所使用的網絡接口,封裝成相應的數據鏈路層的幀進行發送,如封裝為以太網幀。

在這里插入圖片描述

工作流程

DHCP 的工作流程主要包括以下四個階段:

  1. 發現階段(DHCP Discover):客戶端以廣播方式發送 DHCP Discover 報文,尋找可用的 DHCP 服務器。

  2. 提供階段(DHCP Offer):服務器收到請求后,從地址池中選擇一個可用的IP地址,并向客戶端發送 DHCP Offer 報文。

  3. 請求階段(DHCP Request):客戶端收到 Offer 后,選擇一個服務器的 Offer,并發送 DHCP Request 報文,請求確認分配的IP地址。

  4. 確認階段(DHCP Ack):服務器確認客戶端的請求,發送 DHCP Ack 報文,正式分配IP地址及其他配置信息。

這是一個四步的交互過程,包括客戶端的廣播請求、服務器的提供回應、客戶端的確認地址和服務器的確認并更新數據庫。

在這里插入圖片描述

  1. 客戶端廣播請求(Discover)

    • DHCP 客戶端(如計算機、路由器等)啟動時,它會在網絡上廣播一個 DHCP Discover 消息(因為主機現在并不知道網絡中有哪幾個DHCP服務器),請求可用的 IP 地址和其他網絡配置參數。這個廣播消息會被網絡上的所有設備接收,但只有DHCP服務器會對此作出響應

    • DHCP Discover 消息報文封裝有事務ID、DHCP 客戶端的 MAC 地址等信息

  2. DHCP服務器提供回應(Offer)

    • 當 DHCP 服務器接收到客戶端的 DHCP Discover 廣播后,它會從預定義的IP地址池中選擇一個未使用的IP地址,根據其中封裝的 DHCP 客戶端的 MAC 地址實查找自己的數據庫,看是否有針對該 MAC 地址的配置信息。

      如果有,則使用這些配置信息來構建并發送 DHCP 提供報文;則采用默認配置信息來構建并發送 DHCP 提供報文。并通過廣播或單播方式向客戶端發送一個 DHCP Offer 消息

      DHCP 服務器從自己的 IP 地址池中挑選待租用給主機的IP地址時,會使用ARP確保所選IP地址未被網絡中其他主機占用

    • 這個 Offer 消息中包含了分配的 IP 地址、子網掩碼、地址租期、默認網關、DNS 服務器地址等配置信息。

    • 如果網絡中存在多個 DHCP 服務器,客戶端可能會收到多個 Offer 消息。在這種情況下,客戶端通常會選擇第一個收到的Offer或根據其他標準(如服務器優先級)選擇一個Offer

  3. DHCP客戶端確認地址(Request)

    • 客戶端在收到 DHCP Offer 后,DHCP 客戶會根據 DHCP 提供報文中的事物 ID,來判斷該報文是否是自己所請求的報文,然后發送一個 DHCP Request 消息給選定的 DHCP 服務器,表示它接受該服務器提供的IP地址和其他配置參數。

      這個 Request 消息是一個廣播消息(目的IP地址為廣播地址),因為首先需要征得該服務器的同意,之后才能正式使用向該DHCP服務器租用的IP地址。

      DHCP 請求報文中封裝有事物 ID、DHCP 客戶端的 MAC 地址、接受的租約中的 IP 地址、提供此租約的 DHCP 服務器端的 IP 地址等信息。

  4. DHCP服務器確認并更新數據庫(Ack/Decline)

    • 當 DHCP 服務器收到客戶端的 DHCP Request 消息后,它會發送一個 DHCP Ack 消息作為響應(目的IP地址為廣播地址),確認客戶端可以使用請求的IP地址和其他配置參數。這個 Ack 消息也會更新DHCP服務器的數據庫,標記該 IP 地址已經被分配出去。

    • 此時,DHCP 服務器仍會使用 ARP 檢測所分配到的 IP 地址是否已被網絡中其他主機占用,如果 DHCP 服務器提供的 IP 地址已經被其他客戶端使用(由于某種原因),則服務器會發送一個 DHCP DECLINE 消息給客戶端,撤銷地址租約,表示IP地址分配失敗,客戶端需要重新發送 DHCP Discover 消息以獲取新的IP地址。

      若未被占用,則可以使用租約中的IP地址與網絡中其他主機通信了

地址分配機制

DHCP 提供了兩種主要的地址分配機制:

  • 動態分配:為客戶端分配一個有使用期限的IP地址(租期)。租期到期前,客戶端需要續租。這種方式適用于臨時接入網絡的設備。

  • 靜態分配:網絡管理員可以為特定設備分配固定的IP地址,避免手動配置錯誤

在工作過程中:

  1. DHCP客戶端更新租約(Request/Discover)

    • 當 DHCP 客戶端已經和某個 IP 地址綁定后,經過 0.5 倍的租用期時間后,為了更新 IP 地址的租約,它會發送 DHCP REQUEST 單播報文。在這種情況下,客戶端知道服務器的具體地址,因此可以直接向該地址發送單播請求。

    • DHCP 服務器若同意,則發回 DHCP ACK 確認報文,這樣,DHCP 客戶就得到了新的租用期。

    • DHCP 服務器若不同意,則發回DHCP NACK否認報文,這時,DHCP 客戶必須立即停止使用之前租用的IP地址,并重新發送 DHCP Discover 發現報文來重新申請IP地址

    • DHCP 服務器者未做出響應,則在租用期過了 87.5% 時,DHCP 客戶必須重新發送 DHCP REQUEST 請求報文,然后繼續等待 DHCP 服務器可能做出的反應。

    • 若 DHCP 仍未做出響應,當租用期到期后,DHCP 客戶必須立即停止使用之前租用的 IP 地址,并重新發送 DHCP 發現報文來重新申請 IP 地址。

  2. DHCP客戶終止租用期(Release)

    • DHCP 客戶可以隨時提前終止 DHCP 服務器所提供的租用期,這時只需向 DHCP 服務器發送 DHCP RELEASE 釋放報文段即可。

DHCP 中繼代理

在每一個網絡上都設置一個 DHCP 服務器會使 DHCP 服務器的數量太多。因此,在實際應用中,是使每一個網絡至少有一個DHCP中繼代理(通常是一臺路由器),它配置了 DHCP 服務器的 IP 地址信息,作為各網絡中計算機與 DHCP 服務器的橋梁。

在這里插入圖片描述

總結

DHCP 是一種高效的網絡管理協議,通過自動分配 IP 地址和網絡配置信息,極大地簡化了網絡管理流程,提高了網絡的靈活性和可擴展性。它在現代網絡中扮演著不可或缺的角色,尤其是在局域網、無線網絡和云計算環境中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71494.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71494.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71494.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【OS安裝與使用】part3-ubuntu安裝Nvidia顯卡驅動+CUDA 12.4

文章目錄 一、待解決問題1.1 問題描述1.2 解決方法 二、方法詳述2.1 必要說明2.2 應用步驟2.2.1 更改鏡像源2.2.2 安裝NVIDIA顯卡驅動:nvidia-550(1)查詢顯卡ID(2)PCI ID Repository查詢顯卡型號(3&#xf…

數據導入AI訓練步驟——人工智能訓練

一、人工操作轉化 數據導入過程 整理excel表格,通過數據庫管理工具導入數據,補充數據格式,調整sql語句 復制數據到目標數據 二、整理表格 三、導入數據 通過數據庫導入數據 四、合并 五、驗證更新數據 六、 更新數據 update temp_cus_hmz…

我國首條大型無人機城際低空物流航線成功首航

首航震撼開場:羊肉 “飛” 越 540 公里 在夜色的籠罩下,榆陽馬合通用機場的跑道上,一架大型固定翼無人機蓄勢待發,機身被燈光照亮,宛如一只即將展翅翱翔的鋼鐵巨鳥。它的貨艙里,滿滿裝載著新鮮的榆林羊肉&a…

《跟李沐學 AI》AlexNet論文逐段精讀學習心得 | PyTorch 深度學習實戰

前一篇文章,使用 AlexNet 實現圖片分類 | PyTorch 深度學習實戰 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章內容來自于學習 9年后重讀深度學習奠基作之一:AlexNet【下】【論文精讀】】的心得。 《跟李沐…

微軟Win11新動態:官方“換機助手”曝光,PC數據遷移或迎全新體驗

目錄 微軟入局數據遷移領域,第三方工具或面臨挑戰 無縫遷移體驗:近距離傳輸與OTP驗證 模擬圖僅為概念設計,最終功能或存變數 發布時間未定,Insider用戶或率先體驗 總結 微軟在近期發布了Windows 11 Insider Beta頻道的最新版本Build 22635.4945。盡管此次更新并未引入重…

Could not initialize class io.netty.util.internal.Platfor...

異常信息: Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent0 Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.reflect.InaccessibleObjec…

java練習(34)

ps:題目來自力扣 尋找兩個正序數組的中位數 給定兩個大小分別為 m 和 n 的正序(從小到大)數組 nums1 和 nums2。請你找出并返回這兩個正序數組的 中位數 。 算法的時間復雜度應該為 O(log (mn)) 。 class Solution {public double findMedianSortedA…

用Java創建一個驗證碼的工具類

在Java中創建一個驗證碼工具類,可以通過以下代碼實現。該工具類支持生成包含字母和數字的隨機驗證碼圖片,并添加干擾線和噪點以提高安全性。以下是詳細實現: 完整代碼實現 import javax.imageio.ImageIO; import java.awt.*; import java.aw…

提升信息檢索準確性和效率的搜索技巧

一、基礎技巧 精準關鍵詞 避免長句子,提取核心關鍵詞(如用“光合作用 步驟”代替“請告訴我光合作用的具體過程”)。 同義詞替換:嘗試不同表達(如“AI 發展史” vs “人工智能 歷史”)。 排除干擾詞 使用…

設計模式 之 工廠模式(簡單工廠模式、工廠方法模式、抽象工廠模式)(C++)

文章目錄 C 工廠模式引言一、簡單工廠模式概念實現步驟示例代碼優缺點 二、工廠方法模式概念實現步驟示例代碼優缺點 三、抽象工廠模式概念實現步驟示例代碼優缺點 C 工廠模式 引言 在 C 編程中,對象的創建是一個常見且基礎的操作。然而,當項目規模逐漸…

DAY12 Tensorflow 六步法搭建神經網絡

六步法: 一.import 導入各種庫,比如: import tensorflow as tf from tensorflow.keras.layers import Dense, Flatten from tensorflow.keras import Model import numpy as np import pandas as pd # 可能還會根據需求導入其他庫&…

Zookeeper分布式鎖實現

zookeeper最初設計的初衷就是為了保證分布式系統的一致性。本文將講解如何利用zookeeper的臨時順序結點,實現分布式鎖。 目錄 1. 理論分析 1.1 結點類型 1.2 監聽器 1.3 實現原理 2. 手寫實現簡易zookeeper分布式鎖 1.1 依賴 1.2 常量定義 1.3 實現zookeeper分布式…

Git是什么

簡單介紹: Git是一個分布式版本控制系統,用于跟蹤文件的更改,特別是在多人協作開發的環境中。 Key: 分布式 版本控制 系統 最常用于軟件開發,但也可以用于管理任何類型的文件和文件夾。 Git幫助團隊跟蹤和管理文件的歷史版本&a…

Pycharm 2024在解釋器提供的python控制臺中運行py文件

2024版的界面發生了變化, run with python console搬到了這里:

【分布式理論12】事務協調者高可用:分布式選舉算法

文章目錄 一、分布式系統中事務協調的問題二、分布式選舉算法1. Bully算法2. Raft算法3. ZAB算法 三、小結與比較 一、分布式系統中事務協調的問題 在分布式系統中,常常有多個節點(應用)共同處理不同的事務和資源。前文 【分布式理論9】分布式…

免費deepseek的API獲取教程及將API接入word或WPS中

免費deepseek的API獲取教程: 1 https://cloud.siliconflow.cn/中注冊時填寫邀請碼:GAejkK6X即可獲取2000 萬 Tokens; 2 按照圖中步驟進行操作 將API接入word或WPS中 1 打開一個word,文件-選項-自定義功能區-勾選開發工具-左側的信任中心-信任中心設置…

【SFRA】筆記

GK_SFRA_INJECT(x) SFRA小信號注入函數,向控制環路注入一個小信號。如下圖所示,當前程序,小信號注入是在固定占空比的基礎疊加小信號,得到新的占空比,使用該占空比控制環路。 1.2 GK_SFRA_COLLECT(x, y) SFRA數據收集函數,將小信號注入環路后,該函數收集環路的數據,以…

論文筆記-WSDM2024-LLMRec

論文筆記-WSDM2024-LLMRec: Large Language Models with Graph Augmentation for Recommendation LLMRec: 基于圖增強的大模型推薦摘要1.引言2.前言2.1使用圖嵌入推薦2.2使用輔助信息推薦2.3使用數據增強推薦 3.方法3.1LLM作為隱式反饋增強器3.2基于LLM的輔助信息增強3.2.1用戶…

Ubuntu 系統 cuda12.2 安裝 MMDetection3D

DataBall 助力快速掌握數據集的信息和使用方式,會員享有 百種數據集,持續增加中。 需要更多數據資源和技術解決方案,知識星球: “DataBall - X 數據球(free)” 貴在堅持! ---------------------------------------…

Tomcat的升級

Tomcat 是一個開源的 Java Servlet 容器,用于部署 Java Servlet 和 JavaServer Pages(JSP)。隨著新版本的發布,Tomcat 通常會帶來性能改進、安全增強、新特性和對最新 Java 版本的更好支持。升級 Tomcat 服務器通常涉及到以下幾個…