999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

物聯網應用中TCP重傳隊列的設計與實現

2012-11-21 09:51:17陳憲超張興海鄭達標石海濤趙先進
長江大學學報(自科版) 2012年16期
關鍵詞:嵌入式

陳憲超 王 輝,張興海,鄭達標,石海濤 趙先進

(徐工集團徐州建機工程機械有限公司,江蘇 徐州 221001) (徐州赫思曼電子有限公司,江蘇 徐州 221001) (徐州長航科技有限公司,江蘇 徐州 221001)

物聯網應用中TCP重傳隊列的設計與實現

陳憲超 王 輝,張興海,鄭達標,石海濤 趙先進

(徐工集團徐州建機工程機械有限公司,江蘇 徐州 221001) (徐州赫思曼電子有限公司,江蘇 徐州 221001) (徐州長航科技有限公司,江蘇 徐州 221001)

物聯網應用的關鍵技術之一就是要實現嵌入式設備的網絡化,其中一種思路就是在嵌入式設備中集成簡化后的TCP/IP協議棧。然而在精簡TCP/IP協議棧中的TCP協議時會面臨一個技術難題:如何根據實際應用設計合適的重傳隊列。以嵌入式Web服務為例,緊緊圍繞嵌入式Web服務器應用的具體要求,詳細分析了如何設計并實現TCP重傳隊列。測試結果表明,該設計思路可行。

物聯網;TCP/IP;嵌入式Web服務器;嵌入式TCP;TCP重傳隊列

如何將嵌入式設備接入網絡,進而實現物聯網應用,是當前一個研究熱點[1]。其中,比較常見的一種實現方案是在嵌入式設備中實現精簡的TCP/IP協議棧后再將該設備接入Internet[2-3]。在此過程中,如果需要實現基于TCP協議的高層應用,就必須要根據嵌入式設備的具體功能來簡化實現TCP協議,而設計實現TCP協議就必須要實現TCP重傳隊列。因此,如何有針對性地實現TCP重傳隊列就是一個技術難點。

1 標準TCP重傳隊列的功能及作用

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

2 嵌入式TCP重傳隊列的設計與實現

2.1設計思路

圖1 順序鏈表結構示意圖

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

2.2具體實現

設計完該數據結構后,剩下的工作就是要設計對應鏈表的相關維護操作,如構造操作、插入操作、查找操作和刪除操作等。

1)鏈表結點的構造操作 構造鏈表結點的操作由Get_Mem()函數負責,在TCP發送模塊中調用。每當系統需要發送TCP報文時,就會調用Get_Mem()以動態分配2個區塊:其中一個區塊用于構造_MEM_CELL型數據結構,以順利完成順序鏈表的相關操作;另外一個區塊用于構造一個緩存,以裝載要發送的TCP報文。該函數的實現流程如圖2所示。

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

2)鏈表結點的插入操作 當Get_Mem()函數被成功調用后,系統就會調用Insert_Mem()函數將TCP報文插入到對應連接的順序鏈表中。該函數的定義形式如下:void Insert_Mem(p_Conn,p_MemPtr,p_Ack)。該函數各參數的意義分別如下:p_Conn指明某個連接號、p_MemPtr指示了該結點對應的首地址指針,p_Ack說明了該TCP報文的期望號,它的實現流程如圖2所示。

3)鏈表結點的查找操作 Search_Mem()函數用來查找某個TCP報文,該報文由指定的ACK號確定。

4)鏈表結點的刪除操作 TCP模塊在接收ACK型的TCP數據包后,會對該數據包進行合法性檢查,如果認為該數據包是合法的,則會根據收到的ACK號調用Delete_BeforSeqMem()函數以刪除那些已經成功發送的TCP報文。考慮到客戶端有可能會對服務器發出的TCP數據包進行批量確認,因此凡是ACK字段小于或等于收到的ACK號的那些TCP數據包都應該被刪除掉。Delete_BeforSeqMem()函數的作用是刪除對應的結點,并釋放該結點的內存區塊,需要注意的是應先釋放其BuffPtr所指的內存區塊,再釋放_MEM_CELL型結點所占的內存區塊。

3 嵌入式TCP測試結果

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

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

圖3 測試TCP順序鏈表時的輸出信息 圖4 測試TCP重傳計時器時的輸出信息

由于將系統直接接到PC上時,網絡環境比較穩定,為了迫使TCP啟動重傳模塊,可以在服務器TCP層發送數據時人為將系統與PC機的網絡斷開一會兒后迅速連上。調試信息如圖4所示。由圖4可以看出,由于沒有及時收到客戶端的ACK而導致重發了報文5和報文6,并且在收到的報文9后刪掉了順序鏈表中對應的報文5和報文6。

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

圖5 客戶端動態獲取服務器系統中的傳感器溫度數據

[1]黃文力,馬禮, 王玉超.嵌入式Internet中TCP/IP協議棧的研究與設計[J].電腦開發與應用,2008,21(1):46-49.

[2] 馮翠麗,劉波濤.一種嵌入式TCP/IP協議棧的設計與實現[J].長江大學學報(自然科學版),2008,5(4):N331-333.

[3] 李金梁,景博.嵌入式Internet中TCP協議的設計與實現[J].微計算機信息,2005,21(7):40-138.

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

[5] 王敏杰,徐昌彪,劉光明.無線網絡下TCP重傳定時器研究[J].計算機工程與應用,2004(36):146-150.

[6] 章淼,熊勇強,吳建平.TCP重傳計時器的實現和改進[J].計算機工程與應用,2000(12):132-146.

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

[8]劉波濤,馮翠麗,王青海,等.應用RTL8019AS的嵌入式Web服務器硬件實現[J].長江大學學報(自然科學版),2008, 5(1):N75-78.

[編輯] 洪云飛

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

TN915.04

A

1673-1409(2012)06-N108-04

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 亚洲第一综合天堂另类专| 五月婷婷丁香综合| 特级毛片免费视频| 国产精品自在在线午夜区app| 国产欧美精品一区aⅴ影院| 亚洲国产成人超福利久久精品| 五月婷婷亚洲综合| 亚洲天堂在线免费| 老司机久久精品视频| 精品一区二区三区中文字幕| 久久人妻系列无码一区| a级毛片一区二区免费视频| 国产自产视频一区二区三区| 国产无遮挡猛进猛出免费软件| 99中文字幕亚洲一区二区| 亚洲欧美另类色图| 毛片免费观看视频| 国产自产视频一区二区三区| 久久久久九九精品影院| 日韩黄色精品| 在线国产91| 国产91透明丝袜美腿在线| 欧美成人综合在线| 在线观看亚洲成人| 乱人伦99久久| 高清国产va日韩亚洲免费午夜电影| 97影院午夜在线观看视频| 日韩区欧美区| 国产va在线| 精品国产三级在线观看| 手机永久AV在线播放| 亚洲色大成网站www国产| 中文字幕在线视频免费| 日韩午夜伦| 波多野结衣第一页| 亚洲青涩在线| 国产精品视频观看裸模| 成年人久久黄色网站| 欧美日韩中文字幕二区三区| 波多野结衣AV无码久久一区| 成人中文在线| 性喷潮久久久久久久久| 国产精品午夜福利麻豆| 精品一區二區久久久久久久網站| 亚洲欧美日韩另类在线一| 日本亚洲欧美在线| 风韵丰满熟妇啪啪区老熟熟女| 国产免费观看av大片的网站| 超碰91免费人妻| 国产日韩欧美一区二区三区在线 | 99视频在线免费看| 中文字幕亚洲乱码熟女1区2区| 91色在线观看| 亚洲综合在线网| 婷婷成人综合| 国产在线专区| 亚洲无码精品在线播放| 国产无码精品在线| 四虎影院国产| 欧美另类视频一区二区三区| 日韩欧美国产综合| 国产精品亚洲日韩AⅤ在线观看| 热久久这里是精品6免费观看| 嫩草国产在线| 97精品久久久大香线焦| 国产精品青青| 日韩精品一区二区三区免费在线观看| 丰满人妻中出白浆| 日韩精品一区二区三区免费在线观看| 亚洲av成人无码网站在线观看| 日韩在线观看网站| 中文天堂在线视频| 91国内在线观看| 亚洲国产AV无码综合原创| a国产精品| 欧美日本视频在线观看| 99视频有精品视频免费观看| 午夜日本永久乱码免费播放片| 成人av手机在线观看| 秋霞国产在线| 漂亮人妻被中出中文字幕久久| 美美女高清毛片视频免费观看|