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