久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7485|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

TFTP簡(jiǎn)單文件服務(wù) 工作原理及測(cè)試 :-)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91350 發(fā)表于 2015-10-30 11:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
   


這幾年一直以來(lái)從未做過(guò)什么TCP UDP更上一層的應(yīng)用,HTTP早在N年前碰過(guò)之后再也不想碰了。前幾天搞定了嵌入式文件系統(tǒng)之后,就開(kāi)始了TFTP的文件傳輸。誠(chéng)然我還是“拿來(lái)主義”get了一個(gè)tftp文件,然后加入工程中把文件系統(tǒng)的接口弄好,就開(kāi)始閱讀源代碼和測(cè)試。

我不否認(rèn)自己寫(xiě),更不否認(rèn)拿來(lái)主義,只要是可以用穩(wěn)定都可吧。拿來(lái)主義就是一點(diǎn)不好,有些實(shí)現(xiàn)看不懂看不到。自己寫(xiě)的好處在于每個(gè)環(huán)節(jié)盡在自己掌握了。不過(guò)拿來(lái)主義可以提高對(duì)代碼的閱讀能力和效率。一旦看透了作者的意圖基本就變成了自己的東西了。難分伯仲。

一、TFTP的工作原理:
1、建立一個(gè)UDP使他在69端口監(jiān)聽(tīng)。(我一度認(rèn)為T(mén)FTP就是在69上傳輸?shù)模鋵?shí)并不是)
2、建立一個(gè)對(duì)69端口數(shù)據(jù)的解析函數(shù)。process_tftp_request
3、解析69端口的數(shù)據(jù),取出文件名和是什么請(qǐng)求(讀/寫(xiě)文件)
4、建立一個(gè)用于傳輸文件的UDP端口(測(cè)試時(shí)最好綁定到指定端口,以觀察控制塊的狀態(tài))
5、分別處理讀文件和寫(xiě)文件。(以讀文件為例子)
6、利用文件系統(tǒng)打開(kāi)總目錄。然后搜索這個(gè)文件,文件有則打開(kāi)。
7、建立一個(gè)TFTP控制塊,主要控制文件塊的大小。并從文件中讀取512字節(jié),發(fā)送第一塊512字節(jié)的數(shù)據(jù)到客戶端。
8、等待客戶端的ACK確認(rèn)和序號(hào)匹配。然則繼續(xù)發(fā)送下一塊512字節(jié)的數(shù)據(jù)。
9、重復(fù)8,直到讀出的塊的大小小于512字節(jié),此時(shí)文件已經(jīng)讀取完畢了,因?yàn)樾∮?12字節(jié)了/發(fā)送出去LAST
10、等待LAST的ACK之后確認(rèn)LAST就好。
11、殺掉文件傳輸控制塊,釋放TFTP控制塊。
12、結(jié)束

顯然TFTP并不是在69上傳文件,而是使用別的隨機(jī)的端口傳輸,69只是負(fù)責(zé)取出請(qǐng)求類(lèi)型和文件名。

二、問(wèn)題和解決
1、測(cè)試中主要發(fā)現(xiàn)在4-8M壓力測(cè)試時(shí)TFTP不能正常相應(yīng)。壓力撤出后TFTP無(wú)法使用。
2、69端口并發(fā)資源消耗。是其他的需要內(nèi)存的得不到內(nèi)存。
針對(duì)兩種問(wèn)題,進(jìn)行分別的限制,
第一種問(wèn)題最后證實(shí)是TFTP沒(méi)有加超時(shí)機(jī)制,
1)、造成問(wèn)題的原因是控制塊在進(jìn)行收發(fā)時(shí)沒(méi)有對(duì)ACK進(jìn)行檢測(cè),我在程序ACK的回復(fù)上加上了時(shí)隙采樣,
添加250MS的trm函數(shù)對(duì)ACK進(jìn)行檢測(cè)。如果正常則超時(shí)事件發(fā)生,如果客戶端和服務(wù)器之間的通信收到某種
原因的打斷則報(bào)告超時(shí)事件。
2)、超時(shí)事件的處理上糾結(jié)了一些時(shí)間,最后的解決辦法是第一步向客戶端發(fā)送一幀timeoutTFT錯(cuò)誤幀,然后
關(guān)閉文件流UDP端口,再釋放控制塊。最后注冊(cè)回調(diào)函數(shù)到69端口。
第二種問(wèn)題要限制連接服務(wù)器的客戶端數(shù)量。
1)、69端口是否有數(shù)據(jù),如果有數(shù)據(jù)則注銷(xiāo)69端口的回調(diào)函數(shù)為NULL,
2)、進(jìn)行正常的TFTP操作和處理。
3)、TFTP傳輸完畢后重新注冊(cè)69的回調(diào)函數(shù),
這樣就可以避免當(dāng)一臺(tái)主機(jī)在傳輸文件,又來(lái)了一個(gè)連接造成的資源損耗,保證TFTP是獨(dú)享的。

三、測(cè)試
1、硬件連接:CPU外接2G TF卡+100/10M 以太網(wǎng)+2*DS18B20
1)、2只1820負(fù)載采集溫度數(shù)據(jù)寫(xiě)入文件中
2)、UDP打印出來(lái)\TCP作為命令解析和控制 使用TFTP下載TF卡上的溫度表文件。
2、CMD命令


tftp -i IP[addr] GET/PUT filename
3、連接建立

4、第一塊文件數(shù)據(jù)流開(kāi)始下載

5、客戶端對(duì)第一塊數(shù)據(jù)的ACK

6、最后一塊數(shù)據(jù)接收

7、最后一塊數(shù)據(jù)ACK接收確認(rèn)

8、PC下載文件結(jié)束

9、確認(rèn)異常(最后一條就是加入TIMEOUT后的報(bào)告)


10、下載速度(和CPU主頻、文件系統(tǒng)的IO、驅(qū)動(dòng)程序IO、還有網(wǎng)絡(luò)環(huán)境諸多因素有關(guān),其中網(wǎng)絡(luò)因素是主變量了,最高到過(guò)200K看來(lái)已經(jīng)極限,局域網(wǎng)傳點(diǎn)小型文件夠用了。)
路由器小局域網(wǎng)

公司局域網(wǎng)


四、后續(xù)接口和pull request
1)、完善一下和文件系統(tǒng)的接口,獨(dú)立出來(lái)方便接入不同的文件系統(tǒng)。
2)、文件說(shuō)明和函數(shù)搞一下,(我是野路子)
3)、提交共享代碼。讓更多人一起測(cè)試一起找BUG/微笑

謹(jǐn)以此文送給最近郁悶的老王!!! /微笑



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜天堂精品久久久久 | 国产精品一二区 | 一区二区成人 | 精品欧美一区二区精品久久久 | 免费一区 | 日本人做爰大片免费观看一老师 | 日韩中文字幕在线播放 | 大陆一级毛片免费视频观看 | 亚洲欧美日韩精品久久亚洲区 | 91精品国产91久久久久久密臀 | 国产乱码精品一区二区三区忘忧草 | 久久青| 国产成人精品免高潮在线观看 | 国产精品久久欧美久久一区 | 国产农村妇女精品一二区 | 欧美一级二级在线观看 | 欧美 日韩 国产 成人 | 亚洲另类春色偷拍在线观看 | 亚洲第一免费播放区 | 国产精品美女一区二区三区 | 欧美色综合| 波多野结衣电影一区 | 91看片网址 | 欧美日产国产成人免费图片 | 91视视频在线观看入口直接观看 | 国产成人99 | 国产日韩精品一区二区三区 | 91精品在线播放 | 久久99这里只有精品 | 欧美国产精品一区二区三区 | 天天草视频 | 国产999精品久久久 午夜天堂精品久久久久 | 成人视屏在线观看 | 亚洲精品乱码久久久久久久久 | 久久精品亚洲欧美日韩精品中文字幕 | 午夜久草 | 国产电影一区二区 | www.久 | 美女一级a毛片免费观看97 | 操人网站| 亚洲网站在线观看 |