Wireshark筆記-DHCP流程與數據包解析

背景

DHCP從大學上網絡課時就開始知道了,當時只知道,能讓計算機上網,要不就靜態配IP,要不就DHCP獲取,就能上網。

2021年時,畢業好幾年了,想學習下網絡知識,就準備考一個軟考網工。按要求了解了DHCP的4個交互過程。

今天(2025年),準備把這4個交互過程使用Wirshark抓取出來,分析下。

知識點

DHCP 全稱動態主機配置協議(Dynamic Host Configuration Protocol),是一種網絡管理協議。它能自動為接入網絡的設備(如手機、電腦)分配 IP 地址、子網掩碼、網關、DNS 服務器等關鍵網絡參數,無需手動配置。

設備接入時會向 DHCP 服務器發送請求,服務器根據規則分配地址并設定租期,租期到后可續租或重新分配,有效避免 IP 沖突,簡化網絡運維,是局域網和廣域網中保障設備聯網的核心協議。

下面再給出2021年4月11號,做的筆記

這個比較重要,看看Wireshark是不是按照這個邏輯走的。

DHCP客戶端與DHCP服務端交互過程

① DHCP客戶端會發起DHCPDiscover廣播消息,向所有DHCP服務器請求IP地址租約,此時源IP地址為0.0.0.0,廣播地址為255.255.255.255,請求數據包會客戶端的MAC和計算機名。

② 所有接收到DHCPDiscover廣播包的服務器,會檢測自己的配置,如果富余的IP地址,則DHCP服務器發起DHCPOffer廣播消息來應答DHCP客戶端,如果有多個DHCP服務器給予此DHCP客戶端DHCPOffer消息,則DHCP客戶端接收第一個DHCPOffer消息中的IP地址。

③ 當DHCP客戶端收到DHCP服務器的租約時,它將發起DHCPRequest廣播消息,告訴所有DHCP服務器自己已經做出選擇,接受了某個DHCP服務器的租約。在此DHCPRequest廣播消息中包含了DHCP服務端的MAC地址、接受的租約中的IP地址、提供此租約的DHCP服務器地址等,所有其他的DHCP服務器收到其廣播包后,收回它們以此DHCP客戶端所保留的IP地址租約。此時由于沒有得到DHCP服務器確認,DHCP客戶端仍然不能使用租約中提供的IP地址,所以在此數據包中仍然使用0.0.0.0作為源IP地址,廣播地址255.255.255.255作為目的地址。

④? 提供的租約被接受的DHCP服務器在接收到DHCP客戶端發起的DHCPRequest廣播消息后,會發送DHCPAck廣播消息進行最后的確認,在這個消息中同樣包含了租約期限及其他TCP/IP選項信息。

過程

Wireshark抓包如下:

在Wireshark的Info中可以看到邏輯上與知識點保持一致。

Discover -> Offer -> Request -> Ack

現在來看下Discover

從中可知,發送了廣播包(這里很好理解,因為沒有ip地址,他想與其他計算機通信,只能發廣播包)

其中包含了MAC地址和主機名。其他比較有意思點:

Option 61(Client Identifier):唯一標識客戶端(避免多網卡 / 虛擬環境的 IP 沖突)。

Option 60(Vendor class identifier):MSFT 5.0 → 客戶端廠商標識(此處為Windows 系統,服務器可據此下發專屬配置)。

Transaction ID:0x95903b9c,會話標識(與客戶端 Discover 報文中的 ID 一致,確保請求 - 響應配對)。

接下來看Offer?

可知關鍵的信息:

Your (client) IP:192.168.23.101,服務器分配給客戶端的 IP 地址(核心內容)。

Next server IP:192.168.23.138,DHCP 服務器自身 IP(告訴客戶端:后續交互找我)。

Client MAC:74:d8:3e:ed:8d:61 客戶端網卡 MAC(精準定位請求者,避免沖突)。

Transaction ID:0x95903b9c,會話標識(與客戶端 Discover 報文中的 ID 一致,確保請求 - 響應配對)。

接下來看Request?

Option 50(請求 IP):192.168.23.101,客戶端明確請求 Offer 中分配的 IP(告訴服務器:“我就要這個 IP”)。

Option 54(服務器 ID):192.168.23.138,客戶端指定 響應的服務器(排除其他 Offer 的服務器,避免干擾)。

Option 61(客戶端 ID):客戶端 MAC(唯一標識,防止冒充)。

Transaction ID:0x95903b9c,會話標識(與客戶端 Discover 報文中的 ID 一致,確保請求 - 響應配對)。

最后看下ACK

當DHCP服務端回ACK后,說明是正式授權。重要的字段和上面3個包都一樣。說下最后那兩個:

Option 1(子網掩碼):255.255.255.0,客戶端的子網掩碼(劃分網絡范圍,如 192.168.23.xxx 屬同一子網)。

Option 28(廣播地址):192.168.23.255,本網段的廣播地址(客戶端發廣播包時使用,如 DHCP 續租)。

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

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

相關文章

Coze用戶賬號設置修改用戶頭像-前端源碼

概述 Coze Studio的用戶頭像修改功能是用戶賬號設置中的重要組成部分,允許用戶上傳和更新個人頭像。本文將深入分析該功能的前端實現,包括組件架構、文件上傳處理、API設計和用戶體驗優化等方面。 技術架構 整體架構設計 Coze Studio采用現代化的前端架構…

新手Github提交PR(Pull requests)詳細教程

一、什么是Pull requests? Pull Requests(PR)是代碼協作平臺(如 GitHub、GitLab 等)中的一種功能,用于提議將某分支的代碼變更合并到另一個分支(通常是主分支)。它允許開發者在合并…

本地通過跳板機連接無公網IP的內網服務器

本地環境:SSH client 堡壘機:有公網IP,有連接內網服務器的秘鑰 SSH配置: Host jmsHostName [堡壘機的公網IP]Port 22User rootIdentityFile ~/.ssh/id_rsaHost appHostName 10.0.0.14Port 22User rootIdentityFile ~/.ssh/svc-p…

B樹,B+樹,B*樹

下面我們來詳細講解一下 B樹、B樹、B*樹 這三種非常重要的多路平衡查找樹。它們在數據庫和文件系統中有著極其廣泛的應用。一、為什么需要這些樹結構?在開始之前,我們先思考一個問題:為什么已經有了二叉搜索樹(BST)、A…

汽車零部件工廠ESOP系統工業一體機如何選型

在汽車零部件工廠的生產管理中,ESOP 系統發揮著至關重要的作用。而工業一體機作為 ESOP 系統的關鍵硬件支撐,其選型的合理性直接關系到生產效率的提升、生產過程的精準控制以及生產數據的可靠采集與分析。因此,為汽車零部件工廠選擇一款適合的…

?維基框架 (Wiki Framework) 1.1.0 版本發布? 提供多模型AI輔助開發

介紹 多模型AI輔助開發? 維基框架1.1.0集成了主流AI引擎的統一接口,支持開發者按需調用不同模型的優勢能力: ?DeepSeek?:專注代碼生成與重構,擅長復雜業務邏輯實現 ?ChatGPT?:多模態推理能力,適用于…

LabVIEW調用MATLAB 的分形生成

LabVIEW 調用 MATLAB,可借前者可視化流程與硬件交互優勢,結合后者強數值計算、算法能力,復用成熟算法提速開發,還能靈活改代碼。但需匹配版本、裝運行環境,數據傳遞有性能損耗,腳本出錯需跨軟件調試。?優點…

ubuntu20.04開發ros2,使用docker安裝部署的詳細教程

學習docker的教程:可以直接在菜鳥教程上學習即可階段 0:系統檢查| 內容 | 建議 | |------|------| | 操作系統 | Ubuntu 22.04(與 ROS2 Humble 最匹配) | | 用戶權限 | 能執行 sudo |🧩 階段 1:在 Ubuntu 上…

SQL Server縮小日志文件.ldf的方法(適用于開發環境)

SQL Server縮小日志文件.ldf的方法(適用于開發環境) 核心概念:為什么日志文件會變大? 首先,理解原因至關重要。事務日志文件在以下情況下會增長: 大量操作:執行了大批量插入、更新或刪除操作&am…

2.3零基礎玩轉uni-app輪播圖:從入門到精通 (咸蝦米總結)

還在uni-app中的輪播圖組件頭疼嗎?看完這篇,讓你輕松掌握swiper的所有秘密!輪播圖的重要性 在現代移動應用開發中,輪播圖(Swiper)已成為展示焦點內容、廣告推廣和產品展示的首選組件。無論是電商平臺的商品…

FPGA學習筆記——AHT20溫濕度讀取并在串口顯示(IIC協議)

目錄 一、任務 二、分析 1.需要了解的 2.需要用到的模塊 3.流程分析 三、Visio圖 四、代碼 五、實驗現象 一、任務 使用IIC協議通信的AHT20,將溫濕度數據讀取出來,并在串口助手上顯示。 二、分析 1.需要了解的 需要了解IIC協議簡介 也可以看看E…

Pycharm SSH連接

添加遠程服務器文件——>設置——>項目下的Python解釋器——>添加解釋器——>SSH在彈出的彈窗中,輸入遠程的主機、端口和用戶名、一直下一步,得到如下圖所示的結果:選擇Conda 環境:第一步選擇Conda環境;第…

c# 讀取xml文件內的數據

好多大型的項目&#xff0c;把一些固定的參數都存在 xml文件里。創建c# winfom 項目&#xff0c;test_xml創建resources文件夾存放xml文件創建parameters.xml文件<root><test_xml><param name "threshold" value "128"/><param name …

Legion Y7000P IRX9 DriveList

Legion Y7000P IRX9 DriveList 聯想Y7000P驅動列表 驅動列表 intelwlan-TYY5057FK6MQBRF0.exe NVVGA-TYY5057F3M0H9RF0.exe RTKwlan-TYY5077FFSNECRF0.exe audio-TYY5057F4N1JARF0.exe chipset-TYY5037FB10X3RF0.exe hdr-TYY5027FXNF9AWF0.exe intelVGA-TYY5057F5R9J7RF…

編程與數學 02-017 Python 面向對象編程 23課題、測試面向對象的程序

編程與數學 02-017 Python 面向對象編程 23課題、測試面向對象的程序一、單元測試&#xff08;Unit Testing&#xff09;使用 unittest 模塊使用 pytest二、集成測試&#xff08;Integration Testing&#xff09;三、模擬對象&#xff08;Mocking&#xff09;四、測試驅動開發&…

[React]Antd Cascader組件地區選擇

前言表單中添加一個地區選擇功能&#xff0c;要求支持增刪改查功能。Cascader 使用Cascader組件動態加載地區選項。使用 loadData 實現動態加載選項&#xff0c;&#xff08;loadData 與 showSearch 無法一起使用&#xff09;。 這里使用了Form.Item組件。 <Form.Itemlabel{…

深度學習-----《PyTorch神經網絡高效訓練與測試:優化器對比、激活函數優化及實戰技巧》

一、訓練過程并行批量訓練機制一次性輸入64個批次數據&#xff0c;創建64個獨立神經網絡并行訓練。所有網絡共享參數&#xff08;Ω&#xff09;&#xff0c;更新時計算64個批次的平均損失&#xff0c;統一更新全局參數。梯度更新策略使用torch.no_grad()上下文管理器清理反向傳…

Matplotlib 可視化大師系列(五):plt.pie() - 展示組成部分的餅圖

目錄Matplotlib 可視化大師系列博客總覽Matplotlib 可視化大師系列&#xff08;五&#xff09;&#xff1a;plt.pie() - 展示組成部分的餅圖一、 餅圖是什么&#xff1f;何時使用&#xff08;何時避免&#xff09;&#xff1f;二、 函數原型與核心參數三、 從入門到精通&#x…

C++ Core Guidelines 核心理念

引言 C 是一門功能強大但復雜性極高的編程語言。為了幫助開發者更高效、安全地使用現代 C&#xff0c;C 核心指南&#xff08;CppCoreGuidelines&#xff09;應運而生。這份由 C 之父 Bjarne Stroustrup 等人主導的指南&#xff0c;提供了大量關于 C 編碼的規則、最佳實踐和設…