詞語(yǔ)解釋
英文原義:Bootstrap Protocol
中文釋義:自舉協(xié)議
注解:該協(xié)議是一個(gè)基于TCP/IP協(xié)議的協(xié)議,它可以讓無(wú)盤站從一個(gè)中心服務(wù)器上獲得IP地址,為局域網(wǎng)中的無(wú)盤工作站分配動(dòng)態(tài)IP地址,并不需要每個(gè)用戶去設(shè)置靜態(tài)IP地址。使用BOOTP協(xié)議的時(shí)候,一般包括Bootstrap Protocol Server(自舉協(xié)議服務(wù)端)和Bootstrap Protocol Client(自舉協(xié)議客戶端)兩部分。
應(yīng) 用:該協(xié)議主要用于有無(wú)盤工作站的局域網(wǎng)中,客戶端獲取IP地址的過(guò)程如下:首先,由BOOTP啟動(dòng)代碼啟動(dòng)客戶端,這個(gè)時(shí)候客戶端還沒(méi)有IP地址,使用廣播形式以IP地址0.0.0.0向網(wǎng)絡(luò)中發(fā)出IP地址查詢要求。接著,運(yùn)行BOOTP協(xié)議的服務(wù)器接收到這個(gè)請(qǐng)求,會(huì)根據(jù)請(qǐng)求中提供的MAC地址找到客戶端,并發(fā)送一個(gè)含有IP地址、服務(wù)器IP地址、網(wǎng)關(guān)等信息的FOUND幀。最后,客戶端會(huì)根據(jù)該FOUND幀來(lái)通過(guò)專用TFTP服務(wù)器下載啟動(dòng)鏡像文件,模擬成磁盤啟動(dòng)。
本RFC描述一種IP/UDP引導(dǎo)協(xié)議(BOOTP),允許一個(gè)無(wú)盤客戶端發(fā)現(xiàn)自己的IP地址,
服務(wù)器主機(jī)的地址,和裝入一個(gè)指定名稱的文件到內(nèi)存并且運(yùn)行。引導(dǎo)操作有兩階段組成。
本RFC描述第一個(gè)階段:'分配地址和選擇引導(dǎo)文件'。
在獲得地址和文件名信息后,就進(jìn)入引導(dǎo)的第二個(gè)階段:文件傳送。
文件傳送一般使用TFTP協(xié)議[9],因?yàn)閮蓚(gè)階段均駐留在客戶端的PROM中。
但BOOTP也能夠與其它協(xié)議如SFTP或FTP一起工作。
我們建議客戶端的PROM軟件提供一種無(wú)須用戶交互的完整的引導(dǎo)方式。
這是一種無(wú)人值守的上電啟動(dòng)方式。
必須提供一種機(jī)制來(lái)讓用戶手工提供地址和文件名信息旁路BOOTP協(xié)議直接進(jìn)入文件傳送
階段。
如果提供非可變存儲(chǔ),我們建議在那里保存設(shè)置以旁路BOOTP協(xié)議直到這些設(shè)置導(dǎo)致文件
傳送階段失敗。
如果緩存的信息失敗,引導(dǎo)后退到第一階段并使用BOOTP。
協(xié)議的要點(diǎn):
1.使用了一個(gè)單獨(dú)的包交換(信息)。使用超時(shí)機(jī)制直到收到應(yīng)答。
雙向使用相同的包字段結(jié)構(gòu)。使用(最大可能長(zhǎng)度的)固定長(zhǎng)度的字段來(lái)簡(jiǎn)化結(jié)構(gòu)定義
和分析。
2.一個(gè)'opcode'字段包含兩個(gè)值?蛻舳藦V播一個(gè)'引導(dǎo)請(qǐng)求(bootrequest)'包。
服務(wù)器應(yīng)答一個(gè)'引導(dǎo)應(yīng)答(bootreply)'包。'bootrequest'包含客戶端的硬件地址,如果知道,
還包含它的IP地址。
3.請(qǐng)求可以包含客戶端指定的響應(yīng)服務(wù)器的名稱。
這樣客戶端可以強(qiáng)制從一個(gè)指定的主機(jī)引導(dǎo)。(如果一個(gè)相同的引導(dǎo)文件存在多種版本
或服務(wù)器在一個(gè)遠(yuǎn)距離的網(wǎng)絡(luò)/域。)
客戶端不必處理名稱/域服務(wù),這個(gè)功能推到了BOOTP服務(wù)器。
4.請(qǐng)求可以包含'通用(generic)'引導(dǎo)文件名。例如'unix'或'ethertip'。但服務(wù)器發(fā)送
引導(dǎo)應(yīng)答時(shí),它使用對(duì)應(yīng)的引導(dǎo)文件的確切的路徑名稱來(lái)取代這個(gè)字段。
服務(wù)器查詢客戶端的地址和請(qǐng)求文件名相關(guān)的數(shù)據(jù)庫(kù),以使用客戶端自定義的特定引導(dǎo)
文件確定這個(gè)文件名稱。
如果引導(dǎo)請(qǐng)求文件名是空字符串,服務(wù)器返回一個(gè)帶有客戶端加載的默認(rèn)文件的文件名
字段。
5.客戶端不知道它們的IP地址的情況下,
服務(wù)器必須有一個(gè)硬件地址和IP地址對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
這個(gè)客戶端IP地址被放在引導(dǎo)應(yīng)答的(對(duì)應(yīng))字段中。
6.某些網(wǎng)絡(luò)拓樸(如斯坦福的網(wǎng)絡(luò))可能在一個(gè)物理網(wǎng)上沒(méi)有一個(gè)直接可以訪問(wèn)的TFTP
服務(wù)器
(例如在某些網(wǎng)上的所有的網(wǎng)關(guān)和主機(jī)都可能是無(wú)盤的)。
BOOTP允許客戶端通過(guò)使用相鄰的網(wǎng)關(guān)從幾跳外的服務(wù)器上引導(dǎo)。請(qǐng)看下面'通過(guò)網(wǎng)關(guān)
引導(dǎo)'的章節(jié)。
這部分協(xié)議不需求客戶端部分做特定的動(dòng)作。
實(shí)現(xiàn)是可選的,網(wǎng)關(guān)和服務(wù)器需要一些額外的代碼。
2 包格式
除非另外指出,所有顯示的數(shù)字都是十進(jìn)制的。
簡(jiǎn)化起見(jiàn),假設(shè)BOOTP包不會(huì)被分片。
所有數(shù)字的字段使用標(biāo)準(zhǔn)網(wǎng)絡(luò)字節(jié)順序。即,先傳送高位比特。
在引導(dǎo)請(qǐng)求的IP頭中,客戶端如果知道就填自己的IP源地址,否則填0。當(dāng)服務(wù)器地址不知
道時(shí),
IP目的地址將是廣播地址255.255.255.255。這個(gè)地址意味著'在本地網(wǎng)上廣播,我不知道我的
網(wǎng)絡(luò)號(hào)'[4]。
UDP頭包含源和目的端口號(hào)。BOOTP協(xié)議使用兩個(gè)保留的端口號(hào),'BOOTP客戶端'(68)
和'BOOTP服務(wù)器'(67)。
客戶使用'BOOTP服務(wù)器'做為目的端口發(fā)送請(qǐng)求;這通常是廣播。
服務(wù)器使用'BOOTP客戶端'做為目的端口發(fā)送應(yīng)答;取決于服務(wù)器的核心或驅(qū)動(dòng)設(shè)備,這可
能是也可能不是廣播
(在下面'雞和蛋的問(wèn)題'標(biāo)題的章節(jié)中深入解釋)。
使用兩個(gè)保留的端口的原因是當(dāng)引導(dǎo)應(yīng)答必須廣播到客戶端避免'叫醒'并且調(diào)度BOOTP服
務(wù)器進(jìn)程。
因?yàn)榉⻊?wù)器和其它主機(jī)都不會(huì)偵聽(tīng)'BOOTP客戶端'端口,
所有進(jìn)入的廣播報(bào)文將在核心級(jí)別過(guò)濾掉。
我們不能簡(jiǎn)單地允許客戶端找一個(gè)隨機(jī)端口號(hào)做為UDP源端口字段;因?yàn)榉⻊?wù)器應(yīng)答可能
是廣播,
一個(gè)隨機(jī)選擇的端口號(hào)可能搞亂其它恰巧在偵聽(tīng)那個(gè)端口的主機(jī)。
UDP長(zhǎng)度字段設(shè)置成UDP長(zhǎng)度加BOOTP部分的包。
UDP校驗(yàn)和可以由客戶端(或服務(wù)器)按照需要設(shè)置成0,以避免PROM實(shí)現(xiàn)中額外的費(fèi)用。
在下面的'包處理'章節(jié)中'[UDP校驗(yàn)和]'短語(yǔ)用來(lái)表示校驗(yàn)和可能被驗(yàn)證/計(jì)算。
字段 字節(jié)數(shù) 描述
----- ----- -----------
op 1 packet op code / message type. 包操作碼/消息類型
1 = BOOTREQUEST(引導(dǎo)請(qǐng)求), 2 = BOOTREPLY(引導(dǎo)應(yīng)答)
htype 1 hardware address type, 硬件地址類型
see ARP section in "Assigned Numbers" RFC. 請(qǐng)看"Assigned Numbers" RFC中的ARP章節(jié)
'1' = 10mb ethernet 10M以太網(wǎng)
hlen 1 hardware address length 硬件地址長(zhǎng)度
(eg '6' for 10mb ethernet). 例如'6'是10M以太網(wǎng)
hops 1 client sets to zero, 客戶端設(shè)置成0
optionally used by gateways 在跨越網(wǎng)關(guān)引導(dǎo)時(shí)網(wǎng)關(guān)可選擇使用
in cross-gateway booting.
xid 4 transaction ID, a random number,
used to match this boot request with the
responses it generates. 事務(wù)ID,一個(gè)隨機(jī)數(shù),用來(lái)匹配引用請(qǐng)求和應(yīng)答
secs 2 filled in by client, seconds elapsed since
client started trying to boot. 由客戶端填寫(xiě),客戶端引導(dǎo)開(kāi)始后的過(guò)去的秒數(shù)
-- 2 unused未使用
ciaddr 4 client IP address;客戶端IP地址,
filled in by client in bootrequest if known.如果客戶端知道就在引導(dǎo)請(qǐng)求中填入
yiaddr 4 'your' (client) IP address;'你的'(客戶端)IP地址
filled by server if client doesn't
know its own address (ciaddr was 0).如果客戶端不知道它的地址(ciaddr是0),服務(wù)器填入
siaddr 4 server IP address;服務(wù)器IP地址
returned in bootreply by server.由服務(wù)器在引導(dǎo)應(yīng)答返回
giaddr 4 gateway IP address,網(wǎng)關(guān)IP地址
used in optional cross-gateway booting.在跨越網(wǎng)關(guān)引導(dǎo)中可以選擇使用
chaddr 16 client hardware address,客戶端硬件地址
filled in by client.由客戶端填寫(xiě)
sname 64 optional server host name,可選的服務(wù)器主機(jī)名
null terminated string. 空結(jié)束的字符串
file 128 boot file name, null terminated string; 引導(dǎo)文件名,空結(jié)束的字符串
'generic' name or null in bootrequest, 在引導(dǎo)請(qǐng)求中使用'通用'名稱或空
fully qualified directory-path 是引導(dǎo)應(yīng)答中使用確切的目錄路徑名稱
name in bootreply.
vend 64 optional vendor-specific area, 可選的賣主指定的區(qū)域,
e.g. could be hardware type/serial on request, 例如,可以是請(qǐng)求硬件類型/序列,
or 'capability' / remote file system handle 或應(yīng)答的性能/遠(yuǎn)端文件系統(tǒng)句柄。
on reply. This info may be set aside for use 這些信息留給第三方分析引導(dǎo)或核心(程序)使用。
by a third phase bootstrap or kernel.
3 雞和蛋的問(wèn)題
如果客戶端不知道自己IP地址,服務(wù)器怎么發(fā)送IP報(bào)文到客戶端。
無(wú)論何時(shí)一條引導(dǎo)應(yīng)答被發(fā)送,發(fā)送設(shè)備執(zhí)行下列操作:
1.如果客戶端知道自己的IP地址('ciaddr'字段非零),
因?yàn)榭蛻舳四軌蚧貞?yīng)ARPs[5],那么IP能夠正常發(fā)送。
2.如果客戶端還不知道自己的IP地址(ciaddr是零),
客戶端就不能回應(yīng)引導(dǎo)應(yīng)答發(fā)送程序回的ARPs。這時(shí)有兩種選擇:
a.如果發(fā)送程序有必需的核心或驅(qū)動(dòng)鉤子程序來(lái)人工建立ARP地址緩沖條目,
就可以使用'chaddr'和'yiaddr'字段填入一個(gè)條目。當(dāng)然,這個(gè)條目象正常ARP建立的
其它條目一樣有一個(gè)生命時(shí)間,
引導(dǎo)應(yīng)答的發(fā)送程序就能夠簡(jiǎn)單地發(fā)送引導(dǎo)應(yīng)答到客戶端的IP地址了。UNIX(4.2
BSD)有這種功能。
b.如果發(fā)送程序缺少這些核心鉤子程序,就只能簡(jiǎn)單發(fā)送引導(dǎo)應(yīng)答到相應(yīng)接口的廣播
地址。
這只是在前面情況外的額外的廣播。
4 ARP在客戶端使用
客戶端PROM必須包含一個(gè)ARP的簡(jiǎn)單實(shí)現(xiàn),例如,地址緩沖能夠容納一個(gè)條目。
這將允許客戶端在知道IP地址和引導(dǎo)文件名后執(zhí)行第二階段引導(dǎo)(TFTP)。
任何時(shí)候客戶端應(yīng)該準(zhǔn)備回應(yīng)一個(gè)自己IP到硬件地址映射的ARP請(qǐng)求(如果知道)以接收
TFTP或BOOTP應(yīng)答。
因?yàn)橐龑?dǎo)應(yīng)答將包含服務(wù)器/網(wǎng)關(guān)的硬件源地址(在硬件中封裝),客戶端可以
避免發(fā)送一條ARP請(qǐng)求來(lái)申請(qǐng)后續(xù)的TFTP階段使用的服務(wù)器/網(wǎng)關(guān)IP地址。
但這應(yīng)該只是一種特殊情況,因?yàn)樯厦婷枋龅闹挥械诙A段的引導(dǎo)仍然允許。
5 與RARP對(duì)照
提議客戶端使用一個(gè)早先的協(xié)議,反向地址解析協(xié)議(RARP)[1]來(lái)通過(guò)它的硬件地址確定自
己的IP地址。
但RARP的劣勢(shì)是它是一個(gè)硬件鏈路層的協(xié)議(不是基于IP/UDP)。
這意味著RARP只能在包含特殊的為訪問(wèn)原始報(bào)文修改的核心和驅(qū)動(dòng)的主機(jī)上實(shí)現(xiàn)。
因?yàn)楝F(xiàn)在存在不同組織維護(hù)的許多網(wǎng)絡(luò)核心,一個(gè)不要求修改核心的引導(dǎo)協(xié)議是一個(gè)確定
的優(yōu)勢(shì)。
BOOTP除了上述章節(jié)描述的有用的特性外,還提供硬件到IP地址的查詢功能。
6 包處理
6.1客戶端傳送
在第一次建立包前,最好把整個(gè)包的緩沖區(qū)清零;
這將所有的字段設(shè)置成默認(rèn)狀態(tài)。任何客戶端建立包中的下列字段。
IP目的地址被設(shè)置成255.255.255.255(廣播地址)或服務(wù)器的IP地址(如果知道)。
IP源地址和'ciaddr'設(shè)置成客戶端IP地址(如果知道),或者0。UDP頭使用適當(dāng)?shù)拈L(zhǎng)度設(shè)
置;
源端口='BOOTP客戶端'端口,目標(biāo)端口='BOOTP服務(wù)器'端口。
'op'設(shè)置成'1',BOOTREQUEST(引導(dǎo)請(qǐng)求)。'htype'設(shè)置成在"Assigned
Numbers"RFCARP章節(jié)中分配的硬件地址類型。
'hlen'設(shè)置成硬件地址長(zhǎng)度,例如,10M以太網(wǎng)是'6'。
'xid'設(shè)置成一個(gè)'隨機(jī)'事務(wù)ID。'secs'設(shè)置成客戶端引導(dǎo)開(kāi)始后過(guò)去的秒數(shù)。
這個(gè)讓服務(wù)器知道客戶端已經(jīng)試了多長(zhǎng)時(shí)間了。
當(dāng)數(shù)字變大,某些服務(wù)器可能更多注意這個(gè)客戶端提供不同的服務(wù)。
如果客戶端缺少一個(gè)適當(dāng)?shù)臅r(shí)鐘,它可以使用循環(huán)定時(shí)器建立一個(gè)粗略的估計(jì)值。
或者它可以選擇簡(jiǎn)單發(fā)送使用一個(gè)固定值如100秒的字段。
如果客戶端知道IP地址,'ciaddr'(和IP源地址)設(shè)置成這個(gè)值。
'chaddr'使用客戶端硬件地址填寫(xiě)。
如果客戶端希望限制從一個(gè)特定服務(wù)器名引導(dǎo),就可以在'sname'中放一個(gè)空結(jié)束的字符
串。
使用的名字應(yīng)該是對(duì)應(yīng)的主機(jī)的正當(dāng)?shù)拿只騽e名。
客戶端在填寫(xiě)'file'文件名字段是有許多選擇。
如果設(shè)置成空,意味著'我向使用默認(rèn)的文件來(lái)引導(dǎo)我的機(jī)器'。一個(gè)空文件名也意味著
'我只對(duì)找到客戶端/服務(wù)器/網(wǎng)關(guān)的IP地址感興趣,我不在乎文件名'。
這個(gè)字段也可以是一個(gè)'通用'名字入'unix'或'gateway';這意味著
'使用命名的程序配置來(lái)引導(dǎo)我的機(jī)器'。最后這個(gè)字段可以是確切的目錄路徑名字。
'vend'字段可以由客戶端填寫(xiě)賣主的字符串或結(jié)構(gòu)。例如可以填寫(xiě)機(jī)器硬件類型或序列
號(hào)。
但BOOTP服務(wù)器的操作應(yīng)該不依賴與這些存在的信息。
如果使用了'vend',推薦在'vend'中第一個(gè)項(xiàng)目為一個(gè)4字節(jié)的'魔術(shù)字(magicnumber)'。
這讓服務(wù)器確定在這個(gè)字段中它看到什么類型的信息。
數(shù)值可以由通常的'魔術(shù)字'過(guò)程分配,你挑一個(gè),它就成為魔術(shù)字。
引導(dǎo)應(yīng)答使用一個(gè)與引導(dǎo)請(qǐng)求不同的魔術(shù)字以允許客戶端按照應(yīng)答信息進(jìn)行特殊的動(dòng)
作。
[UDP校驗(yàn)和]
6.2客戶端重傳策略
在一長(zhǎng)段時(shí)間內(nèi)沒(méi)有收到應(yīng)答,客戶端應(yīng)該重傳請(qǐng)求。
時(shí)間間隔必須仔細(xì)選擇不要引起網(wǎng)絡(luò)風(fēng)暴。
可以考慮一個(gè)包含100臺(tái)機(jī)器的網(wǎng)絡(luò)在電源故障后發(fā)生的情況。
簡(jiǎn)單的每四秒重傳請(qǐng)求將淹沒(méi)網(wǎng)絡(luò)。
一個(gè)可能的策略,你可能考慮指數(shù)級(jí)的補(bǔ)償,象以太網(wǎng)在碰撞時(shí)那樣。
例如第一個(gè)包在0:00,第二個(gè)在:04,接著:08,接著:16,:32,:64。
你應(yīng)該隨機(jī)化每個(gè)時(shí)間;這就象以太網(wǎng)規(guī)格那樣以一個(gè)掩碼'與'一個(gè)隨機(jī)數(shù)進(jìn)入第一次補(bǔ)
償。
在每次后續(xù)的補(bǔ)償中,掩碼增長(zhǎng)一個(gè)比特。
這樣在每次補(bǔ)償中平均延遲加倍。
在'平均'補(bǔ)償?shù)竭_(dá)60秒后,就不再增長(zhǎng)了,但仍然隨機(jī)化。
在每次重傳前,客戶端應(yīng)該修改'secs'字段。[UDP校驗(yàn)和]
6.3服務(wù)器接收BOOTREQUEST(引導(dǎo)請(qǐng)求)
[UDP校驗(yàn)和]如果UDP目的端口不匹配'BOOTP服務(wù)器'端口,丟棄這個(gè)包。
如果服務(wù)器名字字段(sname)是空(沒(méi)有指定特定的服務(wù)器),或者sname是指定的并且
匹配我們的名字或別名,
繼續(xù)包的處理。
如果sname字段是指定的,但不匹配'我們',那么有多種選擇:
1.你可以選擇簡(jiǎn)單丟棄這個(gè)包。
2.如果查詢sname的名稱顯示它在一個(gè)網(wǎng)絡(luò)中,丟棄這個(gè)包。
3.如果sname在不同的網(wǎng)絡(luò)中,你可以選擇轉(zhuǎn)發(fā)這個(gè)包到那個(gè)地址。
如果這樣,檢查'giaddr'(網(wǎng)關(guān)地址)字段。如果'giaddr'是0,填入我的地址或可以用來(lái)
到達(dá)那個(gè)網(wǎng)絡(luò)的網(wǎng)關(guān)的地址。
然后轉(zhuǎn)發(fā)這個(gè)包。
如果客戶端IP地址(ciaddr)是0,那么客戶端不知道自己的IP地址。
嘗試在我們的數(shù)據(jù)庫(kù)中查找客戶端的硬件地址(chaddr,hlen,htype)。
如果沒(méi)有匹配,丟棄這個(gè)包。否則我們現(xiàn)在對(duì)這個(gè)客戶端有一個(gè)IP地址;填入'yiaddr'(你
的IP地址)字段。
我們現(xiàn)在檢查引導(dǎo)文件名字段(文件)。如果客戶端不關(guān)注文件名或想要默認(rèn)引導(dǎo)文件,
這個(gè)字段是空。
如果這個(gè)字段非空,可以將它和客戶端的IP地址做為數(shù)據(jù)庫(kù)的查詢關(guān)鍵字。
如果有默認(rèn)的文件或通用文件(可能由客戶端地址做為索引)或一個(gè)匹配的指定的路徑
名稱,
然后在'file'字段中填入選擇的引導(dǎo)文件的指定的路徑名稱。
如果字段是非空并且沒(méi)有匹配,那么客戶端要一個(gè)我們沒(méi)有的文件,丟棄這個(gè)包,也許
其它BOOTP服務(wù)器有這個(gè)文件。
賣主指定的數(shù)據(jù)字段'vend'現(xiàn)在應(yīng)該檢查了。如果提供一種可識(shí)別類型的數(shù)據(jù),
應(yīng)該進(jìn)行客戶端指定的動(dòng)作,并且回應(yīng)要填入應(yīng)答包中的'vend'數(shù)據(jù)字段。
例如,一個(gè)工作站客戶端可能提供一個(gè)驗(yàn)證字,并從服務(wù)器接收一個(gè)訪問(wèn)遠(yuǎn)端文件的權(quán)
限,
或一套配置選項(xiàng)傳給馬上就要引導(dǎo)入的操作系統(tǒng)。
我的(服務(wù)器)IP地址填入'siaddr'字段。設(shè)置'op'字段為BOOTREPLY(引導(dǎo)應(yīng)答)。
UDP目的端口設(shè)置成'BOOTP客戶端'。如果客戶端地址'ciaddr'非0,把包發(fā)送到那里;
否則如果網(wǎng)關(guān)地址'giaddr'非0,設(shè)置UDP目的端口為'BOOTP服務(wù)器'并把包發(fā)送到
'giaddr'。
否則客戶端在我們的一個(gè)網(wǎng)絡(luò)中但它還不知道自己的IP地址,使用在上面'蛋'章節(jié)中描述
的方法來(lái)傳送它到客戶端。
如果使用'蛋'并且我們?cè)谥鳈C(jī)上有許多接口,使用'yiaddr'(你的IP地址)字段指出發(fā)送包
到哪個(gè)網(wǎng)絡(luò)(網(wǎng)絡(luò)/接口)。
[UDP校驗(yàn)和]
6.4服務(wù)器/網(wǎng)關(guān)接收BOOTREPLY(引導(dǎo)應(yīng)答)
[UDP校驗(yàn)和]如果'yiaddr'(你的[客戶端的]IP地址)指向我們的一個(gè)網(wǎng)絡(luò),使用上述'蛋'方
法來(lái)將它轉(zhuǎn)發(fā)到客戶端。
確認(rèn)將它傳送到'BOOTP客戶端'UDP目的端口。
6.5客戶端接收
不要忘記為我自己的IP地址(如果我知道)處理ARP請(qǐng)求。[UDP校驗(yàn)和]
客戶端應(yīng)該丟棄以下進(jìn)入的包:不是定位到引導(dǎo)端口的IP/UDP;不是BOOTREPLY(引
導(dǎo)應(yīng)答);
不匹配我的IP地址(如果我知道)或我的硬件地址;不匹配我的事務(wù)ID。
否則我們就收到一個(gè)成功的應(yīng)答。如果我以前不知道的話,'yiaddr'包含我的IP地址。
'file'是TFTP'讀請(qǐng)求'的文件名。服務(wù)器地址在'siaddr'中。如果'giaddr'(網(wǎng)關(guān)地址)非0,
那么包應(yīng)該先轉(zhuǎn)發(fā)到那里,然后到達(dá)服務(wù)器。
7 通過(guò)網(wǎng)關(guān)引導(dǎo)
這部分協(xié)議是可選的并要求許多網(wǎng)關(guān)和服務(wù)器配合的額外的代碼,但它允許跨越網(wǎng)關(guān)引導(dǎo)。
這主要在網(wǎng)關(guān)是無(wú)盤機(jī)器時(shí)有用。
帶盤網(wǎng)關(guān)(例如,一個(gè)做為網(wǎng)關(guān)的UNIX機(jī)器)可能運(yùn)行它們自己的BOOTP/TFTP服務(wù)器。
偵聽(tīng)BOOTREQUEST(引導(dǎo)請(qǐng)求)廣播的網(wǎng)關(guān)可能確定轉(zhuǎn)發(fā)還是適當(dāng)?shù)卦購(gòu)V播這些請(qǐng)求。
例如,做為配置表格的一部分,網(wǎng)關(guān)可以有一個(gè)接收任意BOOTREQUEST(引導(dǎo)請(qǐng)求)廣
播的其它網(wǎng)絡(luò)或主機(jī)的列表。
即使考慮有一個(gè)'hops'字段,簡(jiǎn)單全部再?gòu)V播請(qǐng)求仍是一個(gè)差的方法,因?yàn)閺V播循環(huán)幾乎肯
定會(huì)發(fā)生。
轉(zhuǎn)發(fā)可以立即開(kāi)始,或等'secs'(客戶端嘗試的秒數(shù))字段超過(guò)某個(gè)閥值。
如果一個(gè)網(wǎng)關(guān)確定轉(zhuǎn)發(fā)請(qǐng)求,它應(yīng)該查看'giaddr'(網(wǎng)關(guān)IP地址)字段。
如果是0,它就在這個(gè)字段中加入自己的IP地址(在接收的網(wǎng)絡(luò)中)。
也可以使用'hops'字段來(lái)可選控制包可以轉(zhuǎn)發(fā)多遠(yuǎn)。每次轉(zhuǎn)發(fā)應(yīng)該增加跳數(shù)。
例如,如果跳數(shù)超過(guò)'3',包應(yīng)該被丟棄。
[UDP校驗(yàn)和]
這里我們推薦在網(wǎng)關(guān)中增加這個(gè)特殊的轉(zhuǎn)發(fā)功能。
但不總是這樣子的。
在網(wǎng)上存在一些'BOOTP轉(zhuǎn)發(fā)代理'引導(dǎo)客戶端,這些代理可以適當(dāng)?shù)剞D(zhuǎn)發(fā)。
這樣這些服務(wù)可以和網(wǎng)關(guān)在一起,也可以不在一起。
當(dāng)轉(zhuǎn)發(fā)代理不和網(wǎng)關(guān)在一起時(shí),代理可以通過(guò)在接收的引導(dǎo)請(qǐng)求中'giaddr'字段加上接口的廣
播地址節(jié)省一些工作。
這樣應(yīng)答就可以使用普通的網(wǎng)關(guān)來(lái)轉(zhuǎn)發(fā),而不包含轉(zhuǎn)發(fā)代理。
當(dāng)然劣勢(shì)是你失去了使用'蛋'非廣播方式來(lái)發(fā)送應(yīng)答的能力,導(dǎo)致在客戶端網(wǎng)上的每個(gè)主機(jī)
的額外的花費(fèi)。
掃碼付費(fèi)即可復(fù)制
X業(yè)務(wù)質(zhì)量 | 匯聚層 | 光纖之父 | 高錕 | 飛鴿傳書(shū) | 暴風(fēng)影音 | 發(fā)改委 | pin2 | 網(wǎng)絡(luò)接口 | WLAN | IPTV | 移動(dòng)國(guó)家號(hào)碼 |