亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        物聯(lián)網(wǎng)應(yīng)用中TCP重傳隊(duì)列的設(shè)計(jì)與實(shí)現(xiàn)

        2012-11-21 09:51:17陳憲超張興海鄭達(dá)標(biāo)石海濤趙先進(jìn)
        關(guān)鍵詞:重傳鏈表結(jié)點(diǎn)

        陳憲超 王 輝,張興海,鄭達(dá)標(biāo),石海濤 趙先進(jìn)

        (徐工集團(tuán)徐州建機(jī)工程機(jī)械有限公司,江蘇 徐州 221001) (徐州赫思曼電子有限公司,江蘇 徐州 221001) (徐州長(zhǎng)航科技有限公司,江蘇 徐州 221001)

        物聯(lián)網(wǎng)應(yīng)用中TCP重傳隊(duì)列的設(shè)計(jì)與實(shí)現(xiàn)

        陳憲超 王 輝,張興海,鄭達(dá)標(biāo),石海濤 趙先進(jìn)

        (徐工集團(tuán)徐州建機(jī)工程機(jī)械有限公司,江蘇 徐州 221001) (徐州赫思曼電子有限公司,江蘇 徐州 221001) (徐州長(zhǎng)航科技有限公司,江蘇 徐州 221001)

        物聯(lián)網(wǎng)應(yīng)用的關(guān)鍵技術(shù)之一就是要實(shí)現(xiàn)嵌入式設(shè)備的網(wǎng)絡(luò)化,其中一種思路就是在嵌入式設(shè)備中集成簡(jiǎn)化后的TCP/IP協(xié)議棧。然而在精簡(jiǎn)TCP/IP協(xié)議棧中的TCP協(xié)議時(shí)會(huì)面臨一個(gè)技術(shù)難題:如何根據(jù)實(shí)際應(yīng)用設(shè)計(jì)合適的重傳隊(duì)列。以嵌入式Web服務(wù)為例,緊緊圍繞嵌入式Web服務(wù)器應(yīng)用的具體要求,詳細(xì)分析了如何設(shè)計(jì)并實(shí)現(xiàn)TCP重傳隊(duì)列。測(cè)試結(jié)果表明,該設(shè)計(jì)思路可行。

        物聯(lián)網(wǎng);TCP/IP;嵌入式Web服務(wù)器;嵌入式TCP;TCP重傳隊(duì)列

        如何將嵌入式設(shè)備接入網(wǎng)絡(luò),進(jìn)而實(shí)現(xiàn)物聯(lián)網(wǎng)應(yīng)用,是當(dāng)前一個(gè)研究熱點(diǎn)[1]。其中,比較常見(jiàn)的一種實(shí)現(xiàn)方案是在嵌入式設(shè)備中實(shí)現(xiàn)精簡(jiǎn)的TCP/IP協(xié)議棧后再將該設(shè)備接入Internet[2-3]。在此過(guò)程中,如果需要實(shí)現(xiàn)基于TCP協(xié)議的高層應(yīng)用,就必須要根據(jù)嵌入式設(shè)備的具體功能來(lái)簡(jiǎn)化實(shí)現(xiàn)TCP協(xié)議,而設(shè)計(jì)實(shí)現(xiàn)TCP協(xié)議就必須要實(shí)現(xiàn)TCP重傳隊(duì)列。因此,如何有針對(duì)性地實(shí)現(xiàn)TCP重傳隊(duì)列就是一個(gè)技術(shù)難點(diǎn)。

        1 標(biāo)準(zhǔn)TCP重傳隊(duì)列的功能及作用

        TCP(Transmission Control Protocol,傳輸控制協(xié)議)是TCP/IP協(xié)議簇的核心協(xié)議, 也是TCP/IP協(xié)議簇中最復(fù)雜的協(xié)議。它是一種面向連接的、可靠的、基于字節(jié)流的運(yùn)輸層通信協(xié)議[4]。TCP之所以是一種可靠的協(xié)議,就在于它有一種完善的重傳機(jī)制。在一般標(biāo)準(zhǔn)的TCP協(xié)議實(shí)現(xiàn)中,重傳機(jī)制的關(guān)鍵問(wèn)題是要計(jì)算RTO(Retransmission Time Out),花費(fèi)的代價(jià)較大[4-7]。一旦得到RTO之后,剩下的操作就是當(dāng)某個(gè)重傳計(jì)時(shí)器超時(shí)后重發(fā)對(duì)應(yīng)的TCP包,有多種方式可以完成該重發(fā)操作。在很多的TCP重傳實(shí)現(xiàn)中,都需要借助一個(gè)重傳隊(duì)列來(lái)記錄已經(jīng)發(fā)送的TCP報(bào)文,并在超時(shí)后進(jìn)行重傳操作。

        2 嵌入式TCP重傳隊(duì)列的設(shè)計(jì)與實(shí)現(xiàn)

        2.1設(shè)計(jì)思路

        圖1 順序鏈表結(jié)構(gòu)示意圖

        筆者的設(shè)計(jì)思路是利用順序鏈表記錄每個(gè)已發(fā)送的TCP數(shù)據(jù)包,而當(dāng)收到TCP確認(rèn)報(bào)文時(shí)就從該順序鏈表中刪除相應(yīng)的TCP數(shù)據(jù)包。同時(shí),每隔一定的時(shí)間就觸發(fā)一個(gè)TCP重傳事件,以發(fā)送那些隊(duì)列中已經(jīng)超時(shí)所有TCP數(shù)據(jù)包。順序鏈表的結(jié)構(gòu)如圖1所示。由圖1可知,每個(gè)連接g_Conn[i]都單獨(dú)維護(hù)一個(gè)TCP重傳隊(duì)列,該隊(duì)列的長(zhǎng)度用字段MemPkgNum記錄,隊(duì)首部地址由字段MemPoolHeader記錄。該重傳隊(duì)列采用一個(gè)如圖1所示的雙層順序鏈表來(lái)存儲(chǔ):第1層為一個(gè)_MEM_CELL型的結(jié)構(gòu)體,用于存儲(chǔ)可能需要重傳(即已發(fā)送但沒(méi)有確認(rèn))數(shù)據(jù)包的相關(guān)信息,以便維護(hù)該連接所有可能需要重傳的TCP報(bào)文。字段Next的作用是將該連接中所有可能需要重傳的TCP報(bào)文都連接在一個(gè)順序鏈表上,字段RetryTimer是該包的定時(shí)器,字段RetryNum記錄的該包重傳的次數(shù)。字段ExpectAck是該結(jié)點(diǎn)中的關(guān)鍵字,在收到對(duì)方的確認(rèn)后會(huì)通過(guò)該字段值來(lái)刪除重傳隊(duì)列中相對(duì)于的包。BuffPtr和TotalPkgLen字段定義了該數(shù)據(jù)包實(shí)體的首地址和總長(zhǎng)度。這種設(shè)計(jì)結(jié)構(gòu)有如下方便:能在TCP發(fā)送模塊在調(diào)用地層發(fā)送驅(qū)動(dòng)發(fā)送數(shù)據(jù)包后直接將該包掛到此重傳隊(duì)列后面,也便于在ARP解析失敗后直接進(jìn)行ARP重傳操作的處理。

        2.2具體實(shí)現(xiàn)

        設(shè)計(jì)完該數(shù)據(jù)結(jié)構(gòu)后,剩下的工作就是要設(shè)計(jì)對(duì)應(yīng)鏈表的相關(guān)維護(hù)操作,如構(gòu)造操作、插入操作、查找操作和刪除操作等。

        1)鏈表結(jié)點(diǎn)的構(gòu)造操作 構(gòu)造鏈表結(jié)點(diǎn)的操作由Get_Mem()函數(shù)負(fù)責(zé),在TCP發(fā)送模塊中調(diào)用。每當(dāng)系統(tǒng)需要發(fā)送TCP報(bào)文時(shí),就會(huì)調(diào)用Get_Mem()以動(dòng)態(tài)分配2個(gè)區(qū)塊:其中一個(gè)區(qū)塊用于構(gòu)造_MEM_CELL型數(shù)據(jù)結(jié)構(gòu),以順利完成順序鏈表的相關(guān)操作;另外一個(gè)區(qū)塊用于構(gòu)造一個(gè)緩存,以裝載要發(fā)送的TCP報(bào)文。該函數(shù)的實(shí)現(xiàn)流程如圖2所示。

        圖2 Get_Mem()函數(shù)和Insert_Mem()函數(shù)的流程圖

        2)鏈表結(jié)點(diǎn)的插入操作 當(dāng)Get_Mem()函數(shù)被成功調(diào)用后,系統(tǒng)就會(huì)調(diào)用Insert_Mem()函數(shù)將TCP報(bào)文插入到對(duì)應(yīng)連接的順序鏈表中。該函數(shù)的定義形式如下:void Insert_Mem(p_Conn,p_MemPtr,p_Ack)。該函數(shù)各參數(shù)的意義分別如下:p_Conn指明某個(gè)連接號(hào)、p_MemPtr指示了該結(jié)點(diǎn)對(duì)應(yīng)的首地址指針,p_Ack說(shuō)明了該TCP報(bào)文的期望號(hào),它的實(shí)現(xiàn)流程如圖2所示。

        3)鏈表結(jié)點(diǎn)的查找操作 Search_Mem()函數(shù)用來(lái)查找某個(gè)TCP報(bào)文,該報(bào)文由指定的ACK號(hào)確定。

        4)鏈表結(jié)點(diǎn)的刪除操作 TCP模塊在接收ACK型的TCP數(shù)據(jù)包后,會(huì)對(duì)該數(shù)據(jù)包進(jìn)行合法性檢查,如果認(rèn)為該數(shù)據(jù)包是合法的,則會(huì)根據(jù)收到的ACK號(hào)調(diào)用Delete_BeforSeqMem()函數(shù)以刪除那些已經(jīng)成功發(fā)送的TCP報(bào)文??紤]到客戶端有可能會(huì)對(duì)服務(wù)器發(fā)出的TCP數(shù)據(jù)包進(jìn)行批量確認(rèn),因此凡是ACK字段小于或等于收到的ACK號(hào)的那些TCP數(shù)據(jù)包都應(yīng)該被刪除掉。Delete_BeforSeqMem()函數(shù)的作用是刪除對(duì)應(yīng)的結(jié)點(diǎn),并釋放該結(jié)點(diǎn)的內(nèi)存區(qū)塊,需要注意的是應(yīng)先釋放其BuffPtr所指的內(nèi)存區(qū)塊,再釋放_(tái)MEM_CELL型結(jié)點(diǎn)所占的內(nèi)存區(qū)塊。

        3 嵌入式TCP測(cè)試結(jié)果

        筆者采用的測(cè)試方法是將嵌入式Web服務(wù)與PC機(jī)在RJ-45口及串口分別對(duì)接[8]。利用串口精靈接收嵌入式Web服務(wù)器的輸出并顯示,利用Sniffer Pro抓取PC機(jī)發(fā)送和接收的數(shù)據(jù)包。

        圖3所示的是筆者在測(cè)試順序鏈表時(shí)系統(tǒng)輸出的信息。圖3中的第4行信息,即“Insert_Mem():firstly insert PkgNum=2”,表達(dá)的意義如下:系統(tǒng)將第2個(gè)TCP發(fā)送報(bào)文插入到重傳隊(duì)列的首部。從后續(xù)類(lèi)似的信息也可以看出,每當(dāng)系統(tǒng)發(fā)送了一個(gè)非RST型的TCP報(bào)文后,都會(huì)將該報(bào)文插入到重傳隊(duì)列中,以方便后續(xù)的重傳操作;圖3中的第6行信息,即“Search_Mem(): find PkgNum=2 Pkg”,說(shuō)明系統(tǒng)在收到ACK型報(bào)文后,會(huì)利用該ACK號(hào)(即“576002”)在發(fā)送隊(duì)列里查找那些ACK號(hào)小于等于的該ACK號(hào)的所有TCP報(bào)文;圖3中的第24行和第26行信息,即“Delete_Mem():the first Pkg of PkgNum=5 deleted”和“Delete_Mem():the first Pkg of PkgNum=6 deleted”,說(shuō)明系統(tǒng)在接收到ACK型的TCP報(bào)文9后,利用該ACK號(hào)刪掉了重傳隊(duì)列中對(duì)應(yīng)的報(bào)文5和報(bào)文6,圖3中的第24行信息“Delete_BeforSeqMem(): total 2 pkgs are deleted”也說(shuō)明了在函數(shù)Delete_BeforSeqMem()中刪除了2個(gè)TCP包;圖3中的第25行信息,即“Free_Mem(): free the PkgNum=5 success”,說(shuō)明系統(tǒng)成功釋放了該TCP包所占的內(nèi)存區(qū)塊。

        圖3 測(cè)試TCP順序鏈表時(shí)的輸出信息 圖4 測(cè)試TCP重傳計(jì)時(shí)器時(shí)的輸出信息

        由于將系統(tǒng)直接接到PC上時(shí),網(wǎng)絡(luò)環(huán)境比較穩(wěn)定,為了迫使TCP啟動(dòng)重傳模塊,可以在服務(wù)器TCP層發(fā)送數(shù)據(jù)時(shí)人為將系統(tǒng)與PC機(jī)的網(wǎng)絡(luò)斷開(kāi)一會(huì)兒后迅速連上。調(diào)試信息如圖4所示。由圖4可以看出,由于沒(méi)有及時(shí)收到客戶端的ACK而導(dǎo)致重發(fā)了報(bào)文5和報(bào)文6,并且在收到的報(bào)文9后刪掉了順序鏈表中對(duì)應(yīng)的報(bào)文5和報(bào)文6。

        為測(cè)試筆者實(shí)現(xiàn)的TCP重傳模塊是否能正常工作。筆者采用如下思路進(jìn)行驗(yàn)證:分別在2個(gè)傳輸方向上進(jìn)行驗(yàn)證,首先驗(yàn)證服務(wù)器是否能正常傳輸數(shù)據(jù)到客戶端。試驗(yàn)過(guò)程中采用人工物理方式(如火燒)對(duì)嵌入式Web服務(wù)器系統(tǒng)中的傳感器進(jìn)行升溫,并查看客戶端PC機(jī)的Web瀏覽器是否能實(shí)時(shí)刷新顯示該傳感器的溫度數(shù)據(jù),結(jié)果如圖5所示。該結(jié)果顯示服務(wù)器能正常傳輸數(shù)據(jù)到客戶端;接著驗(yàn)證客戶端是否能正常上傳數(shù)據(jù)到服務(wù)器,在客戶端PC機(jī)上利用鼠標(biāo)點(diǎn)擊LED的“亮”或者“滅”控制開(kāi)關(guān),同時(shí)查看嵌入式Web服務(wù)器系統(tǒng)中的LED燈是否能同步亮/滅,結(jié)果顯示,用戶完全可以通過(guò)Web瀏覽器來(lái)控制Web服務(wù)器系統(tǒng)中的LED燈。該結(jié)果顯示客戶端能正常上傳數(shù)據(jù)到服務(wù)器。因此,通過(guò)上述TCP重傳隊(duì)列實(shí)現(xiàn)的TCP重傳機(jī)制能完成既定的嵌入式TCP服務(wù)。

        圖5 客戶端動(dòng)態(tài)獲取服務(wù)器系統(tǒng)中的傳感器溫度數(shù)據(jù)

        [1]黃文力,馬禮, 王玉超.嵌入式Internet中TCP/IP協(xié)議棧的研究與設(shè)計(jì)[J].電腦開(kāi)發(fā)與應(yīng)用,2008,21(1):46-49.

        [2] 馮翠麗,劉波濤.一種嵌入式TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,5(4):N331-333.

        [3] 李金梁,景博.嵌入式Internet中TCP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2005,21(7):40-138.

        [4] 陳維良,趙俊超,魏少軍.TCP/IP協(xié)議的ASIC設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué),2002,32(2):97-101.

        [5] 王敏杰,徐昌彪,劉光明.無(wú)線網(wǎng)絡(luò)下TCP重傳定時(shí)器研究[J].計(jì)算機(jī)工程與應(yīng)用,2004(36):146-150.

        [6] 章淼,熊勇強(qiáng),吳建平.TCP重傳計(jì)時(shí)器的實(shí)現(xiàn)和改進(jìn)[J].計(jì)算機(jī)工程與應(yīng)用,2000(12):132-146.

        [7] 游海峰,何涇沙,張偉.基于TCP重傳計(jì)時(shí)器的算法分析[J].電腦知識(shí)與技術(shù),2007(1):83-89.

        [8]劉波濤,馮翠麗,王青海,等.應(yīng)用RTL8019AS的嵌入式Web服務(wù)器硬件實(shí)現(xiàn)[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版),2008, 5(1):N75-78.

        [編輯] 洪云飛

        10.3969/j.issn.1673-1409(N).2012.06.036

        TN915.04

        A

        1673-1409(2012)06-N108-04

        猜你喜歡
        重傳鏈表結(jié)點(diǎn)
        基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
        跟麥咭學(xué)編程
        面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
        基于鏈表多分支路徑樹(shù)的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
        Ladyzhenskaya流體力學(xué)方程組的確定模與確定結(jié)點(diǎn)個(gè)數(shù)估計(jì)
        數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
        鏈表方式集中器抄表的設(shè)計(jì)
        基于Raspberry PI為結(jié)點(diǎn)的天氣云測(cè)量網(wǎng)絡(luò)實(shí)現(xiàn)
        MPTCP中一種減緩緩存阻塞的重傳策略
        選擇性重傳法在IPTV中的應(yīng)用
        亚洲av无码偷拍在线观看| 中文字幕人妻熟在线影院 | 青青草手机在线免费视频| 免费国产不卡在线观看| 午夜无码一区二区三区在线观看| 午夜无码片在线观看影视| 亚洲一区二区综合色精品| 亚洲av色香蕉一区二区蜜桃| 婷婷丁香开心五月综合| 国产精品国产三级国产av品爱| 色妞ww精品视频7777| 亚洲区小说区图片区| 91精品国产乱码久久久| 风韵丰满熟妇啪啪区99杏| 97无码免费人妻超级碰碰夜夜| 欧美一级三级在线观看| 在线观看精品国产福利片87| 久久久噜噜噜久久熟女| 日日噜噜夜夜狠狠va视频v| 在线亚洲人成电影网站色www| 中文无码日韩欧免费视频| av在线一区二区三区不卡| 一区二区三区日韩亚洲中文视频| 中国老熟女重囗味hdxx| 国产黄三级三·级三级| av福利资源在线观看| 亚洲av日韩av卡二| 国产午夜精品一区二区| 日韩AVAV天堂AV在线| 超短裙老师在线观看一区| 日本一区二区三区视频网站| 成熟丰满熟妇高潮xxxxx视频| 久久尤物av天堂日日综合| 一本色道久久综合亚洲精品不| 免费看又色又爽又黄的国产软件| 亚洲色图+国产精品| 久久久国产精品五月天伊人| 日本中文一区二区在线观看| 欧美性狂猛xxxxx深喉| 91伊人久久| 亚洲精品乱码久久麻豆|