小紅帽技術論壇 在這裡你可以看到你訂閱的主題,悄悄話,編輯個人資料及環境設定 免費註冊! 行事曆 搜尋其他會員 常見問題
搜尋 小紅帽流量分析 小紅帽專用irc 聊天室 Web 版!建議安裝使用 hmirc 軟體! 回首頁 登出
小紅帽技術論壇 : Powered by vBulletin version 2.2.9 小紅帽技術論壇 > 電腦類 > IT認證考試板 > 《教學》CISCO CCNA 640-802 第二章 網絡互聯 ----  TFTP
  上一篇主題   下一篇主題
作者
主題、內容    發表新的文章     回覆文章

benshaoxw
違規停權

註冊日期: Mar 2009
來自:
發表文章數: 29

《教學》CISCO CCNA 640-802 第二章 網絡互聯 ----  TFTP

TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的壹個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。
  1. 目的
  TFTP是壹個傳輸文件的簡單協議,它其於UDP協議而實現,但是我們也不能確定有些TFTP協議是基於其它傳輸協議完成的。此協議設計的時候是進行小文件傳輸的。因此它不具備通常的FTP的許多功能,它只能從文件服務器上獲得或寫入文件,不能列出目錄,不進行認證,它傳輸8位數據。傳輸中有三種模式:netascii,這是8位的ASCII碼形式,另壹種是octet,這是8位源數據類型;最後壹種mail已經不再支持,它將返回的數據直接返回給用戶而不是保存為文件。
2. 概況
  任何傳輸起自壹個讀取或寫入文件的請求,這個請求也是連接請求。如果服務器批準此請求,則服務器打開連接,數據以定長512字節傳輸。每個數據包包括壹塊數據,服務器發出下壹個數據包以前必須得到客戶對上壹個數據包的確認。如果壹個數據包的大小小於512字節,則表示傳輸結構。如果數據包在傳輸過程中丟失,發出方會在超時後重新傳輸最後壹個未被確認的數據包。通信的雙方都是數據的發出者與接收者,壹方傳輸數據接收應答,另壹方發出應答接收數據。大部分的錯誤會導致連接中斷,錯誤由壹個錯誤的數據包引起。這個包不會被確認,也不會被重新發送,因此另壹方無法接收到。如果錯誤包丟失,則使用超時機制。錯誤主要是由下面三種情況引起的:不能滿足請求,收到的數據包內容錯誤,而這種錯誤不能由延時或重發解釋,對需要資源的訪問丟失(如硬盤滿)。TFTP只在壹種情況下不中斷連接,這種情況是源端口不正確,在這種情況下,指示錯誤的包會被發送到源機。這個協議限制很多,這是都是為了實現起來比較方便而進行的。
  3. 與其它協議的聯系
  因為TFTP使用UDP,而UDP使用IP,IP可以還使用其它本地通信方法。因此壹個TFTP包中會有以下幾段:本地媒介頭,IP頭,數據報頭,TFTP頭,剩下的就是TFTP數據了。TFTP在IP頭中不指定任何數據,但是它使用UDP中的源和目標端口以及包長度域。由TFTP使用的包標記(TID)在這堻Q用做端口,因此TID必須介於0到65,535之間。對它的初始化我們在後面討論。TFTP頭中包括兩上字節的操作碼,這個碼指出了包的類型下面我們看看大體上的TFTP包格式,相關的內容我們在後面的章節中進行討論。
  ---------------------------------------------------
  | Local Medium | Internet | Datagram | TFTP |
  ---------------------------------------------------
  圖3-1: 包頭次序
  4. 初始連接
  初始連接時候需要發出WRQ(請求寫入遠程系統)或RRQ(請求讀取遠程系統),收到壹個確定應答,壹個確定可以寫出的包或應該讀取的第壹塊數據。通常確認包包括要確認的包的包號,每個數據包都與壹個塊號相對應,塊號從1開始而且是連續的。因此對於寫入請求的確定是壹個比較特殊的情況,因此它的包的包號是0。如果收到的包是壹個錯誤的包,則這個請求被拒絕。創建連接時,通信雙方隨機選擇壹個TID,因此是隨機選擇的,因此兩次選擇同壹個ID的可能性就很小了。每個包包括兩個TID,發送者ID和接收者ID。這些ID用於在UDP通信時選擇端口,請求主機選擇ID的方法上面已經說過了,在第壹次請求的時候它會將請求發到TID 69,也就是服務器的69端口上。應答時,服務器使用壹個選擇好的TID作為源TID,並用上壹個包中的TID作為目的ID進行發送。這兩個被選擇的ID在隨後的通信中會被壹直使用。下例是壹個寫入的例子,其中WRQ,ACK和DATA代表寫入請求,確認和數據。
  1. 主機A向主機B發出WRQ,其中端口為69
  2. B機向A機發出ACK,塊號為0,包括B和A的TID
  此時連接建立,第壹個數據包以序列號1從主機開始發出。以後兩臺主機要保證以開始時確定的TID進行通信。如果源ID與原來確定的ID不壹樣,這個包會被認識為發送到了錯誤的地址而被拋棄。錯誤的包是被發送到正確端口的,但是包本身有錯誤。設想發送方發出壹個請求,這個請求在網絡的那個設備中被復制成兩個包,接收方先後接收到兩個包。接收方會認為為這是兩個獨立的請求,會返回兩個應答。當這兩個應答其中之壹被接收到時,連接已經建立。第二個應答再到達時,這個包會被拋棄,而不會因為接收到第二個應答包而導致第壹個建立的連接失敗。
  5. TFTP包
  TFTP支持五種類型的包,我們在以上已經說明這五種類型的包:
  opcode operation
  1 Read request (RRQ)
  2 Write request (WRQ)
  3 Data (DATA)
  4 Acknowledgment (ACK)
  5 Error (ERROR)
  包頭中包括了這個包所指定的操作碼。
  2 bytes string 1 byte string 1 byte
  ------------------------------------------------
  | Opcode | Filename | 0 | Mode | 0 |
  ------------------------------------------------
  Figure 5-1: RRQ/WRQ包
  RRQ和WRQ包(代碼分別為1和2)的格式如上所示。文件名是NETASCII碼字符,以0結束。 而MODE域包括了字符串"netascii","octet"或"mail",名稱不分大小寫。接收到NETASCII格式數據的主機必須將數據轉換為本地格式。OCTET模式用於傳輸文件,這種文件在源機上以8位格式存儲。假設每個機器都存在壹個8位的格式,這樣的假設是最壹般的。比如DEC-20,這是壹種36位機,我們可以假設它是4個8位外加另外4位而構成。如果機器收到OCTET格式文件,返回時必須與原來文件完全壹樣。在使用MAIL模式時,用戶可以在FILE處使用接收人地址,這個地址可以是用戶名或用戶名@主機的形式,如果是後壹種形式,允許主機使用電子郵件傳輸此文件。如果使用MAIL類型,包必須以WRQ開始,否則它與NETASCII完全壹樣。我們的討論建立在發送方和接收方都在相同模式的情況下,但是雙方可以以不同的模式進行傳輸。例如壹個機器可以是壹臺存儲服務器,這樣壹臺服務器需要將NETASCII格式轉換為自己的格式。另外,我們可以設想DEC-20這種機器,它使用36位字長,用戶這邊可以使用特殊的機制壹次讀取36位,而服務器卻可以仍然使用8位格式。在這兩種情況下,我們看到了兩臺機器使用不同格式的情況。可以在兩臺主機間定義其它的傳輸方式,但是定義要小心,因為這種傳輸方式不為人知,而且也沒有權威機構為其指定名稱或定義它的模式。
  2 bytes 2 bytes n bytes
  ----------------------------------
  | Opcode | Block # | Data |
  ----------------------------------
  Figure 5-2: DATA包
  數據在數據包中傳輸,其格式如上圖所示。數據包的OP碼為3,它還包括有壹個數據塊號和數據。數據塊號域從1開始編碼,每個數據塊加1,這樣接收方可以確定這個包是新數據還是已經接收過的數據。數據域從0字節到512字節。如果數據域是512字節則它不是最後壹個包,如果小於512字節則表示這個包是最後壹個包。除了ACK和用於中斷的包外,其它的包均得到確認。發出新的數據包等於確認上次的包。WRQ和DATA包由ACK或ERROR數據包確認,而RRQ數據包由DATA或ERROR數據包確認。下圖即是壹個ACK包,操作碼為4。其中的包號為要確認的數據包的包號。
  2 bytes 2 bytes
  ---------------------
  | Opcode | Block # |
  ---------------------
  Figure 5-3: ACK包
  WRQ數據包被ACK數據包確認,WRQ數據包的包號為0。
  2 bytes 2 bytes string 1 byte
  -----------------------------------------
  | Opcode | ErrorCode | ErrMsg | 0 |
  -----------------------------------------
  Figure 5-4: ERROR包
  壹個ERROR包,它的操作碼是5,它的格式如上所示。此包可以被其它任何類型的包確認。錯誤碼指定錯誤的類型。錯誤的值和錯誤的意義在附錄中。錯誤信息是供程序員使用的。
  6. 正常終止
  傳輸的結束由DATA數據標記,其包括0-511個字符。這個包可以被其它數據包確認。接收方在發出對最後數據包的確認後可以斷開連接,當然,適當的等待是比較好的,如果最後的確定包丟失可以再次傳輸。如果發出確認後仍然收到最後數據包,可以確定最後的確認丟失。發送最後壹個DATA包的主機必須等待對此包的確認或超時。如果響應是ACK,傳輸完成。如果發送方超時並不準備重新發送並且接收方有問題或網絡有問題時,發送也正常結束。當然實現時也可以是非正常結束,但無論如何連接都將被關閉。
  7. 早終結
  如果請求不能被滿足,或者在傳輸中發生錯誤,需要發送ERROR包。這僅是壹種傳輸友好的方式,這種包不會被確認也不會被重新傳輸,因此這種包可能永遠不會被接收到。因此需要用超時來偵測錯誤。
  I. 附錄
  包頭的次序
  2 bytes
  ----------------------------------------------------------
  | Local Medium | Internet | Datagram | TFTP Opcode |
  ----------------------------------------------------------
  TFTP格式
  Type Op # 沒有包頭的格式
  2 bytes string 1 byte string 1 byte
  -----------------------------------------------
  RRQ/ | 01/02 | Filename | 0 | Mode | 0 |
  WRQ -----------------------------------------------
  2 bytes 2 bytes n bytes
  ---------------------------------
  DATA | 03 | Block # | Data |
  ---------------------------------
  2 bytes 2 bytes
  -------------------
  ACK | 04 | Block # |
  --------------------
  2 bytes 2 bytes string 1 byte
  ----------------------------------------
  ERROR | 05 | ErrorCode | ErrMsg | 0 |
  ----------------------------------------
  讀文件的初始連接
  1. 主機A發RRQ到A,包括源=A的ID和目的=69
  2. 主機B發送DATA,其中包號=1,這個包被傳送到A,源=B的ID,目的=A的ID
  錯誤碼
  Value Meaning
  0 未定義,請參閱錯誤信息(如果提示這種信息的話)
  1 文件未找到
  2 訪問非法
  3 磁盤滿或超過分配的配額
  4 非法的TFTP操作
  5 未知的傳輸ID
  6 文件已經存在
  7 沒有類似的用戶
  Internet用戶數據報頭
  (TFTP不壹定非要在UDP上實現。)
  Format
  0 1 2 3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Source Port | Destination Port |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Length | Checksum |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  域的值
  Source Port 由傳輸發起方選擇
  Dest. Port 由目的地選擇(如果是RRQ或WRQ,其值為69)
  Length 包括UDP包頭的包長度
  Checksum 校驗碼,如果是0,則未使用校驗
  註意:TFTP將傳輸標記TID傳送給UDP作為源和目的端口
  安全問題
  因為TFTP沒有安全控制機制,因此安全問題應該多加考慮。通常TFTP允許下載數據而不允許上傳數據。

文章編號:0 | 向板主反映這篇文章 | 顯示 IP

benshaoxw 已離線! Old Post 04-11-2009 08:50
點選這裡查看 benshaoxw 的個人檔案 點選這裡寄送 Email 給 benshaoxw 按這裡傳送悄悄話給 benshaoxw 按這裡搜尋 benshaoxw 所發表的文章 按這裡將 benshaoxw 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

目前使用的時域為(台北時間),現在時間是 13:56 。    發表新的文章     回覆文章
上一篇主題   下一篇主題
友善列印 | 把這一篇寄給好朋友! | 訂閱這個主題

跳至:
評分主題:
 

討論區權限說明:
不可以 發表新文章
不可以 回覆文章
不可以 上傳附加檔案
不可以 修改你發表的文章
HTML code 目前狀態是 關閉
vB code 目前狀態是 開啟
表情符號 目前狀態是 開啟
[IMG] code 目前狀態是 開啟



< 聯絡我們 - 小紅帽全球資訊網 >

中文化:第一版 by Eric 第二版 by Jolin 於 小紅帽全球資訊網
(版權所有,翻拷必究)
小紅帽技術論壇創立於 2000/09/15 ,使用 vBulletin 合法註冊版權