亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

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

QQ登錄

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

搜索
查看: 7918|回復(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)求類型和文件名。

二、問(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ù)則注銷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ù) 返回頂部 返回列表