當前位置:編程學習大全網 - 源碼下載 - Python網絡編程5-實現DHCP Client

Python網絡編程5-實現DHCP Client

?DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),前身是BOOTP協議,是壹個局域網的網絡協議,使用UDP協議工作,統壹使用兩個IANA分配的端口:67(服務器端),68(客戶端)。主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS服務器地址等信息。

option字段

?DHCP報文中的Options字段可以用來存放普通協議中沒有定義的控制信息和參數。如果用戶在DHCP服務器端配置了Options字段,DHCP客戶端在申請IP地址的時候,會通過服務器端回應的DHCP報文獲得Options字段中的配置信息。

獲取IP地址過程

?實驗使用的linux 主機由兩個網絡接口,其中ens33使用DHCP獲取IP地址,ens37使用靜態IP地址;因此需要使用ens33來發送數據包。

?Change_MAC.py用於MAC地址與Bytes類型相互轉換。

?DHCP_Discover.py用於發送DHCP Discover報文;其中GET_MAC.py見ARP章節。

?DHCP_Request.py用於發送DHCP Request報文。

?DHCP_FULL.py用於完成DHCP Client與DHCP Server的報文交互

Wireshark對遠程linux主機抓包,結果如下

客戶端以廣播發送DHCP Discover包,其中報文操作類型為1(請求報文),DHCP客戶端的MAC地址設置為00:0c:29:03:a1:08,option53設置報文類型為Discover,option55(請求選項列表)中包含請求的參數。

服務器以單播向客戶端回復信息,其中報文操作類型為2(應答報文),分配給客戶端的IP為192.168.160.146,option 53設置報文類型為offer,Option 54設置服務器標識為192.168.160.254,其他option為客戶端請求列表的應答。

值得註意的是,交互的四個報文中Transaction ID均為0x00000000,表明是同壹次DHCP交互報文。

  • 上一篇:php 多條件 分頁查詢條件丟失 怎麽解決
  • 下一篇:如何利用E語言禁用WIN鍵
  • copyright 2024編程學習大全網