這次小編來說一下TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)是TCP/IP協(xié)議族中的一個用來在客戶機和服務器之間進行的簡單文件傳輸協(xié)議,端口號為69,是一種高效的文件傳輸方式。
它的目標是在UDP之上建立一個類似于FTP的但僅支持文件上傳和下載功能的傳輸協(xié)議,所以它是基于FTP協(xié)議或其它協(xié)議而實現(xiàn),使用UDP數據包,但是需要自己的差錯改正措施。TFTP只支持文件傳輸而不支持交互,只能簡單的進行小型文件的傳輸,從服務器上獲得或者說是下載文件,但它不包含F(xiàn)TP協(xié)議中的目錄操作和用戶權限等內容。
因為TFTP是設計在UDP上層的協(xié)議,并且報文是基于網絡協(xié)議,屬于數據包將擁有一個網絡包頭,報文頭,和TFTP頭,另外數據包有可能還有其他的頭(例如LNI,ARPA頭等等)來允許他們通過本地的傳輸媒體。TFTP不需要制定任何的網絡頭的值。另外報文頭數據源和目標端口字段用于TFTP,長度字段但應tftp包的大小。用于TFTP的傳輸id(tid)會傳到報文層當作端口使用,因此必須是0~65535(16位,2個字節(jié))
TFTP沒有龐大的指令集,無法列目錄和獲得用戶身份鑒別,與FTP相似,TFTP傳輸過程中也有傳輸模式之分,模式的意思是如何解釋數據包里的內容,比如是字符串還是二進制等。目前有三種模式:
(1、netascii型:一種修改的8bit ascii碼
(2、octet型:即binary普通的二進制型
(3、mail型:過時,不再使用
另外,通訊雙方也可以自定義所需的傳輸模式。
通信流程為:
(1、由客戶端發(fā)起讀文件/寫文件的請求,同時可以進行請求連接
(2、服務器監(jiān)聽到請求,打開連接,并向客戶端發(fā)送文件,以每個定長為512字節(jié)的塊進行發(fā)送。每個數據包包含一個數據塊,在發(fā)送下一個包的時候必須被客戶端確認回應一個回應包。
(3、當發(fā)現(xiàn)某個數據包小于512個字節(jié),說明傳輸終止。
(4、如果出現(xiàn)網絡丟包,收件方(客戶端)會超時,并且重傳的接收包(可以是數據包或者回應包),因此這將可以讓發(fā)送者重新發(fā)送丟失包。當之前的包已經接受成功之后,發(fā)送者只需要保持一個重傳包。
注意:
發(fā)送者要做的:發(fā)送數據->接受->回應包;
接受者要做的:發(fā)送回應包->接受數據。
一旦發(fā)送請求(寫文件請求或者讀文件請求),傳輸就已經建立,并且收到寫的回應包,或讀取個數據的肯定答復;為了建立連接,連接的每一段都會為自己在傳輸期間選則傳輸id(tid)。
TFTP總結:
整體上來說,TFTP的一個重要特點就是簡單及易于實現(xiàn),這也是設計TFTP協(xié)議的一個初衷。
優(yōu)點是:
(1、每個數據包大小固定,這樣在內存分配處理的時候比較直接
(2、實現(xiàn)簡單
(3、每個數據包都有確認機制,可以實現(xiàn)一定程度的可靠性
缺點:
(1、傳輸效率不高
(2、滑動窗口機制太簡單,并且該窗口僅有一個包的大小
(3、超時處理機制并不完善
粵嵌科技創(chuàng)辦于2005年是一家IT高新技術企業(yè),專注IT職業(yè)教育13年,主要培訓課程分別有嵌入式培訓、Java培訓、Unity游戲開發(fā)、Python人工智能、HTML5前端開發(fā)、全棧UI設計、網絡營銷、CCIE網絡等專業(yè)課程