【11】TCP/IP協議族詳解-TFTP協議和BOOTP協議

聲明:本博客參考《TCP/IP協議詳解卷一:協議》

TFTP協議

1.協議的含義

TFTP ( Trivial File Transfer Protocol)即簡單文件傳送協議,最初打算用於引導無盤系統(通常是工作站或X終端)。TFTP協議是爲了傳輸簡單短小的數據,所以在運輸層,它使用了UDP協議,而非TCP協議。TFTP設計的目的是爲了快考慮的。

2.協議的內容

TFTP報文的格式如下圖所示:

TFTP報文的頭兩個字節表示操作碼。對於讀請求和寫請求( WRQ),文件名字段說明客戶要讀或寫的位於服務器上的文件。這個文件字段以 0字節作爲結束。模式字段是一個ASCII碼串netascii或octet(可大小寫任意組合),同樣以0字節結束。netascii表示數據是以成行的A S C I I碼字符組成,以兩個字節 — 回車字符後跟換行字符(稱爲C R / L F)作爲行結束符。這兩個行結束字符在這種格式和本地主機使用的行定界符之間進行轉化。octet則將數據看作8 bit一組的字節流而不作任何解釋。

其中3,4操作碼對應的塊編號用於對服務器發送的數據進行編號,客戶端收到數據後對指定編號的數據進行確認。

最後一種TFTP報文類型是差錯報文,它的操作碼爲 5。它用於服務器不能處理讀請求或寫請求的情況。在文件傳輸過程中的讀和寫差錯也會導致傳送這種報文,接着停止傳輸。差錯編號字段給出一個數字的差錯碼,跟着是一個ASCII表示的差錯報文字段,可能包含額外的操作系統說明的信息。

3.協議的基本原理

在開始工作時,TFTP的客戶與服務器交換信息,客戶發送一個讀請求或寫請求給服務器。在一個無盤系統進行系統引導的正常情況下,第一個請求是讀請求( RRQ)。操作碼爲1。以讀一個文件作爲例子,T F T P客戶需要發送一個讀請求說明要讀的文件名和文件模式 ( mode )。如果這個文件能被這個客戶讀取,TFTP服務器就返回一個塊編號爲 1的數據分組。TFTP客戶又發送一個塊編號爲1的ACK。TFTP服務器隨後發送塊編號爲2的數據。TFTP客戶發回塊編號爲2的ACK。重複這個過程直到這個文件傳送完。除了最後一個數據分組可含有不足 512字節的數據,其他每個數據分組均含有5 1 2字節的數據。當T F T P客戶收到一個不足512字節的數據分組,就知道它收到最後一個數據分組。

在寫請求的情況下,TFTP 客戶發送WRQ指明文件名和模式。如果該文件能被 該客戶寫,TFTP 服務器就返回塊編號爲 0的ACK包。該客戶就將文件的頭 512字節以塊編號爲1發出。服務器則返回塊編號爲1的ACK。依此類推。這種類型的數據傳輸稱爲停止等待協議。

TFTP提供了不可靠的UDP傳輸,遇到分組丟失和重複的問題時,可以通過發送方的超時和重傳機制解決,但是當雙方都出現超時和重傳時,這種方式就出現問題了。

TFTP服務器的熟知端口號是69,在客戶端請求服務器的服務時,需要向這個端口發送請求,當服務器向客戶端發送數據的時候,會在服務器主機上再去申請一個端口,這個端口是未知的。這樣做的目的是爲了讓熟知端口留出來連接其它TFTP的服務請求。

 

BOOTP協議

1.協議的含義

BOOTP(引導程序協議)是一種常用於無盤系統進行系統引導獲取自身IP的協議。BOOTP傳輸層使用的是UDP,且常需要與TFTP協同工作。

2.協議的內容

BOOTP協議的請求和應答均被封裝在UDP數據中,格式如下所示:

如圖中所見,BOOTP的請求和應答共有300字節,是個很大的結構,其具體格式如下所示

(1)操作碼:1-請求,2-應答

(2)硬件類型:1-以太網。

(3)硬件地址長度:對於以太網來說,這個值是6。

(4)跳數:由客戶設置爲0,但也能被一個代理服務器設置。

(5)事務標識:一個由客戶設置並由服務器返回的 32 bit整數。客戶用它對請求和應答進行匹配。對每個請求,客戶應該將該字段設置爲一個隨機數。

(6)秒數:客戶端在引導時將改字段設置成一個時間值。服務器能夠看到這個時間值,備用服務器在等待時間超過這個時間值後纔會響應客戶的請求,這意味着主服務器沒有啓動。

(7)客戶IP地址:如果客戶已經知道自身IP地址則填入,否則設置爲0。

(8)你的IP地址:服務器用該客戶端的 IP地址寫入。

(9)服務器IP地址:由服務器填寫。

(10)客戶主機硬件地址:儘管這個值與以太網數據幀頭中的值相同,UDP數據報中也設置這個字段,但任何接收這個數據報的用戶進程能很容易地獲得它(例如一個BOOTP 服務器)。一個進程通過查看UDP數據報來確定以太網幀首部中的該字段通常是
很困難的(或者說是不可能的)。

(11)服務器主機名:該字段由服務器填寫。

(12)引導文件名:服務器填入包括用於系統引導的文件名以及其所在位置的路徑全名。

(13)特定廠商信息:用於對BOOTP進行不同的擴展。如果有信息要提供,這個區域的前4個字節被設置成IP地址99.130.83.99,表示該區域內包含信息。這個區域的其餘部分是一個條目,條目的內容如下圖所示:

上圖中每個條目都是由一個標誌字段開始,其中的兩個條目僅有標誌字段:標誌爲 0的條目作爲填充字節(爲使後面的條目有更好的字節邊界),標誌爲255的條目表示結尾條目。第一個結尾條目後剩餘的字節都應設置爲這個數值(255)。表示條目的結束。

子網掩碼條目和時間值條目都是定長條目,因爲它們的值總佔 4個字節。時間偏移值是從1900年1月1日0時以來的秒(UTC)。

網關條目是變長條目。長度通常是 4 的倍數,這個值是一個或多個供客戶使用的網關(路由器)的I P地址。返回的第一個必須是首選的網關。

另外還有14個條目,其中最重要的可能是DNS名字服務器的IP地址條目,條目的志爲6。其他的條目包括打印服務器、時間服務器等的 IP地址。

3.協議的基本原理

BOOTP服務使用的是兩個知名端口:服務器67,客戶68。這樣設計的原因是服務器的應答會進行廣播,可以避免其它應用進程收到廣播消息。同時又不會在廣播時喚醒其它服務器。

無盤系統引導的步驟

(1)客戶端通過IP地址0.0.0.0.68->255.255.255.255.67發送一個BOOTP請求廣播。

(2)服務器對廣播進行應答,客戶端獲取自身的IP地址。

(3)客戶端發送一個ARP請求,瞭解網絡中其它主機是否使用相同IP地址。

(4)上步檢驗通過後,客戶端使用獲取的IP地址再次發送BOOTP請求。接收服務器應答。

(5)客戶端發送一個ARP請求,獲取服務器IP地址。

(6)收到服務器IP地址之後,客戶端發送TFTP請求,請求讀取它的引導文件。

(7)客戶端通過引導文件引導完成。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章