BOOTP是引導程序協議,也稱為自舉協議,用於系統引導過程,是DHCP的前身,BOOTP用於無盤工作站的局域網中,可以讓無盤工作站從一個中心服務器上獲得IP地址。通過BOOTP協議可以為局域網中的無盤工作站分配動態IP,這樣就不需要管理員去為每個用戶去設置靜態IP地址。一個無盤系統需要下列協議才能在只讀存儲器中完成:BOOTP、TFTP、UDP、IP和一個局域網的驅動程序。BOOTP使用UDP,通常與TFTP協同工作。
報文格式
- 操作碼:1(請求)、2(應答)。
- 硬件類型:1(以太網)。
- 硬件地址長度:6(以太網)。
- 跳數:由客戶設置為0,代理服務器也可以改變。
- 事務標識:是一個由客戶設置並由服務器返回的32 bit整數。客戶用它對請求和應答進行匹配。對每個請求,客戶應該將該字段設置為一個隨機數。
- 秒數:客戶設置一個時間值,超過時間值,備用服務器才會響應。
- 客戶IP地址:如果客戶知道自己IP地址,填入實際IP,否則填0。
- 你的IP地址:由服務器填入客戶的IP地址。
- 服務器IP地址:服務器填寫。
- 網關IP地址:代理服務器填寫自己的IP。
- 客戶主機硬件地址:客戶填寫,與以太網幀中的相同。
- 服務器主機名:是一個空值終止串,由服務器填寫。
- 引導文件名:用於引導的文件名和所在路徑。
- 特定廠商信息:用於擴展BOOTP。
協議流程
-
由BOOTP啟動代碼來啟動BOOTP客戶端,這個時候BOOTP客戶端還沒有IP地址。
-
BOOTP客戶端使用廣播,源IP地址為0.0.0.0,目的IP地址為255.255.255.255,向網絡中發出IP地址查詢要求。
-
運行BOOTP協議的服務器接收到這個請求,會根據請求中提供的MAC地址找到BOOTP客戶端,並發送一個含有IP地址、服務器IP地址、網關等信息的回應幀。
-
BOOTP客戶端會根據該回應幀來獲得自己的IP地址並通過專用文件服務器(如TFTP服務器)下載啟動鏡像文件,模擬成磁盤來完成啟動。
端口號
BOOTP服務器67號端口,BOOTP客戶端68號端口。
選擇兩個端口而不是僅選擇一個端口為BOOTP服務器用的原因是:服務器的應答可以進行廣播。
- 當服務器廣播,客戶端使用臨時端口時。廣播也能被其他的主機中碰巧使用相同臨時端口的應用進程接收到。因此,采用隨機端口(即臨時端口)對廣播來說是一個不好的選擇。
- 客戶端和服務器使用同一個端口時。可以,此時網絡內的所有服務器會被喚醒來查看這個廣播,若是應答服務器就不做處理。
- 多個客戶端同時引導時,且服務器廣播所有應答。這樣每個客戶都會收到其他客戶的應答。客戶可以通過BOOTP首部中的事務標識字段來確認應答是否與請求匹配,或者可以通過檢查返回的客戶硬件地址加以區分。
BOOTP中繼
路由器(也稱作“ BOOTP 中繼代理”),當收到一個BOOTP請求時,中繼代理將它的IP地址填入收到BOOTP請求中的“網關IP地址字段”,然后將該請求發送到真正的BOOTP服務器(由中繼代理填入網關字段的地址是收到的BOOTP請求接口的IP地址)。該代理中繼還將跳數字段值加1(這是為防止請求被無限地在網絡內轉發)。既然發出的請求是一個單播的數據報(與發起的客戶的請求是廣播的相反),它能按照一定的路由通過其他的路由器到達真正的BOOTP服務器。真正的BOOTP服務器收到這個請求后,產生BOOTP應答,並將它發回中繼代理,而不是請求的客戶。既然請求網關字段不為零,真正的BOOTP服務器知道這個請求是經過轉發的。中繼代理收到應答后將它發給請求的客戶。
特定廠商信息
如果有信息要提供,這個區域的前4個字節被設置為I P地址99.130.83.99。這可稱作魔術甜餅,表示該區域內包含信息。
BOOTP vs. RARP
無盤系統用RARP獲取IP存在的問題:
- IP地址是返回的唯一結果,沒有其他信息返回。
- RARP使用鏈路層廣播,路由器不會轉發該請求,使得在每個實際網絡中得設置一個RARP服務器。
BOOTP vs. DHCP
- DHCP可以說是BOOTP的增強版本,比較起BOOTP,DHCP透過"租約"的概念,有效且動態的分配客戶端的IP設定,而且,作為兼容考慮,DHCP也完全照顧了BOOTP Client的需求。
- 必須至少有一台DHCP工作在網絡上面,它會監聽網絡的DHCP請求。它提供兩種IP定位方式:自動分配,一旦DHCP客戶端第一次成功的從DHCP服務器租用到IP地址之后,就永遠使用這個地址;動態分配,當DHCP第一次從HDCP服務器端租用到IP地址之后,並非永久的使用該地址,只要租約到期,客戶端就得釋放。
- DHCP除了可以動態的進行設定IP地址之外,還能夠直接將一些IP保留下來給一些特殊用途的機器進行使用。另外一個方面,它能夠直接按照硬件地址來固定的分配IP地址。
- DHCP與BOOTP的不同點在於,BOOTP也可以完成給主機分配IP地址的任務,但它要求主機的硬件地址必須被手工輸入到BOOTP表中。可以講DHCP看成一個動態的BOOTP。但是,BOOTP還可以將用來引導主機的操作系統發送給主機。而DHCP不可以。
參考
https://baike.baidu.com/item/BOOTP/610878?fr=aladdin
https://zhidao.baidu.com/question/6070483.html
TCP/IP詳解卷1