速讀原著-TCP/IP(協議)

  • 2020 年 3 月 11 日
  • 筆記

第15章 TFTP:簡單文件傳送協議

15.2 協議

在開始工作時,T F T P的客戶與伺服器交換資訊,客戶發送一個讀請求或寫請求給伺服器。在一個無盤系統進行系統引導的正常情況下,第一個請求是讀請求( R R Q)。圖1 5 – 1顯示了5 種T F T P報文格式(操作碼為1和2的報文使用相同的格式)。

T F T P報文的頭兩個位元組表示操作碼。對於讀請求和寫請求( W R Q),文件名欄位說明客戶要讀或寫的位於伺服器上的文件。這個文件欄位以 0位元組作為結束(見圖 1 5 – 1)。模式欄位是一個A S C I I碼串n e t a s c i i或o c t e t(可大小寫任意組合),同樣以0位元組結束。n e t a s c i i表示數據是以成行的A S C I I碼字元組成,以兩個位元組—回車字元後跟換行字元(稱為 C R / L F) 作為行結束符。這兩個行結束字元在這種格式和本地主機使用的行定界符之間進行轉化。o c t e t則將數據看作8 bit一組的位元組流而不作任何解釋。

每個數據分組包含一個塊編號欄位,它以後要在確認分組中使用。以讀一個文件作為例子,T F T P客戶需要發送一個讀請求說明要讀的文件名和文件模式 ( m o d e )。如果這個文件能被這個客戶讀取, T F T P伺服器就返回一個塊編號為 1的數據分組。T F T P客戶又發送一個塊編號為1的A C K。T F T P伺服器隨後發送塊編號為 2的數據。T F T P客戶發回塊編號為2的A C K。重複這個過程直到這個文件傳送完。除了最後一個數據分組可含有不足 5 1 2位元組的數據,其他每個數據分組均含有5 1 2位元組的數據。當T F T P客戶收到一個不足5 1 2位元組的數據分組,就知道它收到最後一個數據分組。

在寫請求的情況下,TFTP 客戶發送W R Q指明文件名和模式。如果該文件能被 該客戶寫,TFTP 伺服器就返回塊編號為 0的A C K包。該客戶就將文件的頭 5 1 2位元組以塊編號為1發出。伺服器則返回塊編號為1的A C K。

這種類型的數據傳輸稱為停止等待協議。它只用在一些簡單的協議如 T F T P中。在2 0 . 3節中將看到T C P提供了不同形式的確認,能提供更高的系統吞吐量。 T F T P的優點在於實現的簡單而不是高的系統吞吐量。

最後一種T F T P報文類型是差錯報文,它的操作碼為 5。它用於伺服器不能處理讀請求或寫請求的情況。在文件傳輸過程中的讀和寫差錯也會導致傳送這種報文,接著停止傳輸。差錯編號欄位給出一個數字的差錯碼,跟著是一個 A S C I I表示的差錯報文欄位,可能包含額外的作業系統說明的資訊。

既然T F T P使用不可靠的U D P,T F T P就必須處理分組丟失和分組重複。分組丟失可通過發送方的超時與重傳機制解決(注意存在一種稱為「魔術新手綜合症 ( s o r c e r e r』s apprentice s y n d r o m e )」的潛在問題,如果雙方都超時與重傳,就可能出現這個問題。 12.2 節 [ S t e v e n s 1990] 介紹了這個問題是如何發生的 )。和許多U D P應用程式一樣, T F T P報文中沒有檢驗和, 它假定任何數據差錯都將被 U D P的檢驗和檢測到(參見11 . 3節)。