讓你全方位了解tftp協議(yi),學(xue)tftp協議(yi)不再(zai)難(nan)
時(shi)間:2018-06-14 來源:未(wei)知
TFTP(Trivial File Transfer Protocol,簡(jian)單文件傳(chuan)(chuan)輸協議(yi))是TCP/IP協議(yi)族(zu)中的一個用來在(zai)客戶機與服務器之間進行簡(jian)單文件傳(chuan)(chuan)輸的協議(yi),端口號為69,是一種高效的文件傳(chuan)(chuan)輸方式(shi)。
其(qi)目標是(shi)(shi)在UDP之(zhi)上(shang)(shang)建立一個(ge)類(lei)似于FTP的(de)但僅支(zhi)(zhi)持文件(jian)(jian)上(shang)(shang)傳(chuan)(chuan)和下載功能的(de)傳(chuan)(chuan)輸(shu)(shu)協議(yi),所以它是(shi)(shi)基于FTP協議(yi)或其(qi)它協議(yi)而實現,使用(yong)UDP數(shu)據包,但是(shi)(shi)需(xu)要自己的(de)差錯改(gai)正措施。TFTP只(zhi)(zhi)支(zhi)(zhi)持文件(jian)(jian)傳(chuan)(chuan)輸(shu)(shu)而不支(zhi)(zhi)持交互,只(zhi)(zhi)能簡單(dan)的(de)進(jin)行小型文件(jian)(jian)的(de)傳(chuan)(chuan)輸(shu)(shu),從服務(wu)器上(shang)(shang)獲(huo)得或者說是(shi)(shi)下載文件(jian)(jian),但它不包含FTP協議(yi)中的(de)目錄操(cao)作和用(yong)戶權限(xian)等內(nei)容。
因為TFTP是(shi)設計在UDP上層的協議,并(bing)且報(bao)文是(shi)基(ji)于網絡(luo)協議,屬于數(shu)據包(bao)將擁有一個網絡(luo)包(bao)頭,報(bao)文頭,和TFTP頭,另(ling)外(wai)數(shu)據包(bao)有可(ke)能還有其他(ta)的頭(例如LNI,ARPA頭等(deng)(deng)等(deng)(deng))來允(yun)許他(ta)們通過(guo)本地(di)的傳輸媒體。TFTP不需(xu)要(yao)制定(ding)任(ren)何的網絡(luo)頭的值。另(ling)外(wai)報(bao)文頭數(shu)據源和目標端口(kou)字段用于TFTP,長度字段但應tftp包(bao)的大小(xiao)。用于TFTP的傳輸id(tid)會(hui)傳到報(bao)文層當作端口(kou)使用,因此必須是(shi)0~65535(16位,2個字節)
TFTP沒有龐大的指令集,無(wu)法列(lie)目(mu)錄和(he)獲(huo)得用戶身(shen)份(fen)鑒別(bie),與FTP相(xiang)似,TFTP傳(chuan)(chuan)輸過程中也有傳(chuan)(chuan)輸模(mo)式(shi)之分(fen),模(mo)式(shi)的意思是如(ru)何解(jie)釋數據包(bao)里的內容,比(bi)如(ru)是字(zi)符(fu)串還是二(er)進(jin)制等。目(mu)前有三種模(mo)式(shi):
(1) netascii型:一種(zhong)修改的(de)8bit ascii碼(ma)
(2) octet型:即binary普通的二進制型
(3) mail型:過(guo)時,不(bu)再使用(yong)
另外,通訊雙方也可以自定義所需的傳(chuan)輸模式。
通信流(liu)程為(wei):
1、由客戶端發起讀文件(jian)/寫文件(jian)的請(qing)求,同時(shi)可(ke)以進行(xing)請(qing)求連接
2、服(fu)務器監聽到請求,打開(kai)連接(jie),并向客(ke)戶端發(fa)送文(wen)件,以每個(ge)(ge)定長為512字節的塊(kuai)進行發(fa)送。每個(ge)(ge)數據包(bao)(bao)包(bao)(bao)含(han)一個(ge)(ge)數據塊(kuai),在發(fa)送下一個(ge)(ge)包(bao)(bao)的時候必(bi)須被客(ke)戶端確認回應一個(ge)(ge)回應包(bao)(bao)。
3、當(dang)發現某個(ge)數據包小于512個(ge)字節,說明傳輸終止。
4、如果(guo)出現網絡(luo)丟(diu)包(bao),收件方(客戶端)會超時,并(bing)且重(zhong)傳(chuan)最后的接收包(bao)(可以是數據包(bao)或者回應包(bao)),因此(ci)這將可以讓發送(song)者重(zhong)新發送(song)丟(diu)失包(bao)。當之(zhi)前的包(bao)已經(jing)接受成功之(zhi)后,發送(song)者只需要保持一個重(zhong)傳(chuan)包(bao)。
注意:
發送者(zhe)要(yao)做的:發送數據->接受->回應包;
接受者要做的:發送回應(ying)包->接受數(shu)據。
一旦(dan)發(fa)送請求(qiu)(寫文(wen)件請求(qiu)或者讀文(wen)件請求(qiu)),傳輸就已經建(jian)立,并且(qie)收到寫的(de)回應包,或讀取第一個數(shu)據(ju)的(de)肯定答復;為了建(jian)立連(lian)接(jie)(jie),連(lian)接(jie)(jie)的(de)每(mei)一段都(dou)會為自己在傳輸期(qi)間選則傳輸id(tid)。
TFTP總(zong)結:
整體上來(lai)說,TFTP的一個重要特點就(jiu)是(shi)簡單(dan)及易于實現(xian),這也是(shi)設計TFTP協議的一個初(chu)衷。
優點是:
(1)每個數據(ju)包大(da)小固定(ding),這樣(yang)在(zai)內存分配處(chu)理的時候比較(jiao)直(zhi)接
(2)實現簡(jian)單
(3)每(mei)個數(shu)據包都(dou)有(you)確(que)認機制(zhi),可以實現一定程度(du)的可靠性(xing)
缺點:
(1)傳輸(shu)效率不(bu)高
(2)滑動窗口機(ji)制太簡(jian)單,并且(qie)該窗口僅有一個包(bao)的大小
(3)超時(shi)處理機(ji)制并(bing)不完(wan)善(shan)

