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