BOOTP協議的作用與結構
說起BOOTP協議,我們大家似乎都不明所以。但是一說到DHCP協議,不少人就覺得比較熟悉了。其實兩者有著很多相似的地方,也有的文章中說BOOTP協議時DHCP協議的前身。那么對于BOOTP我們就來詳細介紹一下。
引導協議(BOOTP)是一種基于UDP/IP的協議。這種協議允許正在啟動的主機動態配置而無需用戶監督。BOOTP主要用于客戶機從服務器獲得自己的IP地址,服務器的IP地址以及啟動映象文件名。其它一些配置信息,如本地子網掩碼、本地時間偏移量、默認路由器地址和各種Internet服務器地址,都能與使用BOOTP協議的客戶機交流。
BOOTP協議使用兩個不同的知名通訊端口UDP67/68。UDP67用于服務器,UDP68用于BOOTP客戶機??蛻魴C啟動時,本身還沒有IP地址,這時BOOTP客戶機就以廣播的形式發出一個名為BOOTREQUEST的IP地址查詢請求包,這個請求包中包含了客戶機物理地址,還可能有一個IP地址,如果已有的話。客戶使用地址255.255.255.255發送廣播,這種特殊地址稱為有限廣播地址。然后客戶機等待服務器的響應,如果在特定時間段內沒有收到響應,客戶機就重新發出請求。
通過引導答復(bootreply)包,服務器響應客戶機請求。請求可以包含“通用”引導文件名,例如,unix或ethertip。但服務器發送引導應答包時,它使用對應的引導文件的確切的路徑名稱來取代這個字段。為了確定路徑名,服務器會查詢本身的的數據庫。這個數據庫關聯了客戶機地址、請求文件名和為用戶定制的特殊引導文件。如果請求(bootrequest)文件名是空,服務器就返回一個文件名字段用于表示客戶機需加載的默認文件。
在客戶機IP地址不知道的情況下,服務器必須要有一個硬件地址和IP地址相對應的數據庫??蛻魴CIP地址也被放到“bootreply”的某一字段中。
BOOTP和RARP類似,但RARP只運行于LAN網絡的數據鏈路層;而基于UDP/IP的配置協議BOOTP協議則提供了更多配置方面的信息,它允許整個IP網絡動態配置??傊?,BOOTP及其擴展成為動態主機配置協議(DHCP)的基礎。
協議結構
8
16
24
32
Op
Htype
Hlen
Hops
Xid
Secs
Flags
Ciaddr
Yiaddr
Siaddr
Giaddr
Chaddr (16 bytes)
sname (64 bytes)
File (128 bytes)
Option (variable)
Op – 消息操作代碼,可以是引導請求( BOOTREQUEST )也可以是引導答復( BOOTREPLY )
Htype – 硬件地址類型
Hlen – 硬件地址長度
Xid – 事務 ID.
Secs – 客戶機開始地址請求或續約后消耗的時間(秒數)
Flags – 標記
Ciaddr – 客戶機 IP 地址
Yiaddr – “你的”(客戶機) IP 地址
Siaddr – 在 bootstrap 中下一臺服務器可用服務器的 IP 地址
Giaddr – 通過代理啟動時代理的 IP 地址
Chaddr – 客戶機硬件地址
Sname – 其他可用服務器主機名稱,空終止符
File – 引導文件名、空終止符; DHCPDISCOVER 包中的屬名或者空值, DHCPOFFER 包中的完全合格目錄路徑名
Options – 可選參數字段