国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

物聯(lián)網(wǎng)應(yīng)用中TCP協(xié)議重傳機(jī)制的簡化研究

2012-01-04 07:58:24馮翠麗劉波濤王青海
關(guān)鍵詞:重傳鏈表隊(duì)列

馮翠麗,劉波濤,王青海

(1.長江大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,湖北 荊州 434023;2.勝利油田鉆井工藝研究院 信息中心,山東 東營 257000)

物聯(lián)網(wǎng)應(yīng)用中TCP協(xié)議重傳機(jī)制的簡化研究

馮翠麗1,劉波濤1,王青海2

(1.長江大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,湖北 荊州 434023;2.勝利油田鉆井工藝研究院 信息中心,山東 東營 257000)

以嵌入式Web服務(wù)為例,緊緊圍繞該應(yīng)用的具體要求,詳細(xì)分析了如何設(shè)計(jì)并精簡TCP的重傳機(jī)制.隨后的詳細(xì)測試結(jié)果表明,該設(shè)計(jì)思路可行.

物聯(lián)網(wǎng);TCP/IP;嵌入式TCP;TCP重傳

當(dāng)前,研究得如火如荼的物聯(lián)網(wǎng)技術(shù)中,首先要解決的一個問題是將嵌入式設(shè)備接入網(wǎng)絡(luò)[1].其中,比較常見的一種實(shí)現(xiàn)方案是在嵌入式設(shè)備中集成精簡后的TCP/IP協(xié)議棧而將該設(shè)備接入Internet[2-3].在此過程中,如果需要實(shí)現(xiàn)基于TCP協(xié)議的高層應(yīng)用,就必須要根據(jù)嵌入式設(shè)備的具體功能來簡化實(shí)現(xiàn)TCP協(xié)議,因此,如何針對該設(shè)備的具體應(yīng)用來簡化實(shí)現(xiàn)TCP協(xié)議的重傳機(jī)制就成為一個技術(shù)難點(diǎn).

1 標(biāo)準(zhǔn)TCP協(xié)議的重傳機(jī)制

很多高層應(yīng)用協(xié)議都依賴TCP協(xié)議提供的面向連接的、可靠的傳輸層服務(wù),如 HTTP.在TCP數(shù)據(jù)傳輸?shù)倪^程中,接受方在正確地接收到報(bào)文段后會給發(fā)送方返回一個確認(rèn),而發(fā)送方每次在發(fā)出一個報(bào)文段的同時(shí)會將其副本存入重傳隊(duì)列,并啟動一個重傳定時(shí)器.如果該定時(shí)器溢出時(shí)還沒有收到該報(bào)文段的確認(rèn),發(fā)送方就認(rèn)為該報(bào)文段已經(jīng)丟失,并從重傳隊(duì)列中取出該報(bào)文段進(jìn)行重傳[4].

2 TCP重傳機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)

通用計(jì)算機(jī)系統(tǒng)有足夠的資源支持實(shí)現(xiàn)復(fù)雜的TCP重傳機(jī)制,這對于嵌入式Web服務(wù)器有限的資源及較低的處理速度來說既不現(xiàn)實(shí)也沒有必要.在研究嵌入式系統(tǒng)TCP重傳的實(shí)現(xiàn)過程中,需要解決的幾個關(guān)鍵問題是:第一,TCP重傳策略的選擇,即TCP數(shù)據(jù)重傳由哪一層負(fù)責(zé);第二,重傳定時(shí)器超時(shí)時(shí)間RTO(Retransmission TimeOut)如何計(jì)算,是動態(tài)采樣還是取固定值,若是動態(tài)采樣,應(yīng)該采用哪種算法進(jìn)行計(jì)算;第三,重傳方式的選擇,定時(shí)器超時(shí)后按照哪種方式進(jìn)行重傳;第四,TCP報(bào)文段如何有序存儲,存儲結(jié)構(gòu)如何設(shè)計(jì)及操作.

以下以嵌入式Web服務(wù)器為例,闡述如何在嵌入式系統(tǒng)中實(shí)現(xiàn)TCP重傳機(jī)制.

2.1 TCP重傳策略的選擇

嵌入式系統(tǒng)中,實(shí)現(xiàn)TCP重傳至少有以下兩種解決方案可供選擇.

方案1 應(yīng)用層參與重傳[3].如果重傳定時(shí)器超時(shí),那么由應(yīng)用程序負(fù)責(zé)重新生成報(bào)文段并發(fā)送.其優(yōu)點(diǎn)是降低了嵌入式系統(tǒng)對于TCP重傳的存儲器要求.其缺點(diǎn)是應(yīng)用層協(xié)議參與了TCP重傳,嚴(yán)重破壞了協(xié)議棧的封裝性,不利于應(yīng)用擴(kuò)展.

方案2 由TCP層負(fù)責(zé)重傳.這是標(biāo)準(zhǔn)協(xié)議棧所支持的方式.其優(yōu)點(diǎn)是遵循了標(biāo)準(zhǔn)TCP協(xié)議的封裝性,便于應(yīng)用擴(kuò)展.其缺點(diǎn)是對嵌入式系統(tǒng)的存儲量有一定的要求,因?yàn)樵摲绞叫枰_辟一定大小的RAM緩沖區(qū)來分別存儲輸入、輸出報(bào)文段.

嵌入式 Web服務(wù)器應(yīng)用中,TCP重傳方案采用以上兩種方案之一均可.考慮到筆者所設(shè)計(jì)的嵌入式Web服務(wù)器存儲能力有64 KB的片外RAM,而Web通信數(shù)據(jù)只有8~10 KB,因此采用方案二來實(shí)現(xiàn)TCP數(shù)據(jù)的重傳.

2.2 RTO的計(jì)算

最初的標(biāo)準(zhǔn)規(guī)范[5]并沒有強(qiáng)制規(guī)定RTO應(yīng)如何計(jì)算,只是建議性地給出了一個計(jì)算的算法.隨后的RFC文檔[6]作了一系列關(guān)于RTO標(biāo)準(zhǔn)算法的規(guī)定,但仍然留下了很大的空間.此外,甚至有些操作系統(tǒng)的開發(fā)廠商在實(shí)現(xiàn)的時(shí)候并不考慮和遵照上述RTO的計(jì)算方法[7].不管采用哪種算法,動態(tài)計(jì)算RTO時(shí)都需付出很大的代價(jià)[8-9].考慮到嵌入式 Web服務(wù)器是一種基于Internet的簡單控制及反饋系統(tǒng),它與主控臺PC機(jī)交換的報(bào)文段數(shù)不多,數(shù)據(jù)量不大,實(shí)時(shí)性要求也不高,因此,動態(tài)計(jì)算RTO既沒有必要也不現(xiàn)實(shí).在實(shí)際的實(shí)現(xiàn)中,可以根據(jù)實(shí)際的網(wǎng)絡(luò)部署結(jié)構(gòu),進(jìn)行多次試驗(yàn)以測算出從該系統(tǒng)到主控PC機(jī)的平均RTT(Round-Trip Time),并參考該RTT賦值于RTO一個固定值.用該方式實(shí)現(xiàn)的TCP,其服務(wù)的性能并不是最優(yōu)的,但已足夠給系統(tǒng)提供其需要的TCP服務(wù).

2.3 TCP重傳方式的選擇

TCP重傳方式可以采用以下兩種方式之一.

(1)拉回方式,即假定發(fā)送方連續(xù)發(fā)送了m幀,如果發(fā)現(xiàn)第n(n≤m)幀數(shù)據(jù)超時(shí),那么發(fā)送方重傳第n幀及第n幀以后的所有幀.對應(yīng)的實(shí)現(xiàn)可以是一個TCP連接維護(hù)一個定時(shí)器,一旦定時(shí)器超時(shí),就重傳該TCP連接重傳隊(duì)列中所有的TCP報(bào)文段.

(2)選擇方式,即假定發(fā)送方連續(xù)發(fā)送了m幀,若發(fā)現(xiàn)第n(n≤m)幀數(shù)據(jù)超時(shí),則發(fā)送方重傳第n幀.對應(yīng)的實(shí)現(xiàn)可以是一個TCP報(bào)文段維護(hù)一個定時(shí)器,一旦定時(shí)器超時(shí),就重傳該報(bào)文段.

上述兩種方式各有優(yōu)缺點(diǎn),前者實(shí)現(xiàn)簡單且能節(jié)約系統(tǒng)的RAM區(qū)間,一個連接維護(hù)一個定時(shí)器,維護(hù)比較簡單,但因超時(shí)后重傳的是該連接重傳隊(duì)列中所有的TCP包,故增加了網(wǎng)絡(luò)通信負(fù)擔(dān),容易引起擁塞.相比之下,后者實(shí)現(xiàn)時(shí),在每一個TCP報(bào)文段都需要實(shí)現(xiàn)一個定時(shí)器,維護(hù)起來較復(fù)雜,但超時(shí)后重傳的是對應(yīng)的一個包,這樣不會增加網(wǎng)絡(luò)負(fù)擔(dān),是標(biāo)準(zhǔn)TCP/IP協(xié)議棧實(shí)現(xiàn)的方式.嵌入式系統(tǒng)中如果存儲資源允許(例如筆者設(shè)計(jì)的系統(tǒng)),用選擇方式進(jìn)行重傳效果會更好.

2.4 緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)及操作實(shí)現(xiàn)

目前有很多方式來實(shí)現(xiàn)上述TCP重傳隊(duì)列,筆者采用一個雙層順序鏈表結(jié)構(gòu)來實(shí)現(xiàn),如圖1所示.

由圖1的實(shí)現(xiàn)可知,每個連接g_Conn[i]都單獨(dú)維護(hù)一個TCP重傳隊(duì)列,該隊(duì)列各字段意義如表1所示.該隊(duì)列的第一層用于存儲可能需要重傳(即已發(fā)送但沒有確認(rèn))報(bào)文段的相關(guān)信息,第二層是可能需要重傳的報(bào)文段實(shí)體.這樣設(shè)計(jì)的目的是:TCP發(fā)送模塊在調(diào)用發(fā)送驅(qū)動發(fā)送某個報(bào)文段后能很方便地將該報(bào)文段插入到該重傳隊(duì)列中去.

有了這樣一個結(jié)構(gòu),剩下的工作就是維護(hù)該鏈表,即進(jìn)行構(gòu)造、插入、查找和刪除操作.

圖1 雙層順序鏈表結(jié)構(gòu)示意圖Fig.1 Schematic diagram of double sequential linked list

表1 雙層順序鏈表中各字段的意義Table 1 The significance of the field in the double sequential linked list

(1)構(gòu)造鏈表節(jié)點(diǎn)的操作.每當(dāng)系統(tǒng)需要發(fā)送TCP報(bào)文段時(shí),就會調(diào)用Get_M(jìn)em()動態(tài)分配兩個區(qū)間:一個分配給_M(jìn)EM_CELL型節(jié)點(diǎn),便于實(shí)現(xiàn)順序鏈表的各種操作;另外一個Buf分配給實(shí)際要發(fā)送的TCP報(bào)文段.該函數(shù)實(shí)現(xiàn)如圖2(a)所示.

(2)插入鏈表節(jié)點(diǎn)的操作.Insert_M(jìn)em()函數(shù)負(fù)責(zé)將由Get_M(jìn)em()構(gòu)造的TCP報(bào)文插入到對應(yīng)連接的順序鏈表中,其輸入?yún)?shù)分別是連接號、該節(jié)點(diǎn)的首部地址指針和期望Ack,其實(shí)現(xiàn)如圖2(b)所示.

(3)查找鏈表節(jié)點(diǎn)的操作.函數(shù)Search_M(jìn)em()用來查找指定Ack號的TCP報(bào)文,其實(shí)現(xiàn)過程如圖3(a)所示.

(4)刪除鏈表節(jié)點(diǎn)的操作.每當(dāng)TCP接收模塊在收到合法的Ack型的TCP數(shù)據(jù)包時(shí),就會調(diào)用函數(shù)Delete_BeforSeq Mem().考慮到客戶端有可能對服務(wù)器發(fā)出的TCP數(shù)據(jù)進(jìn)行批量確認(rèn),因此該函數(shù)實(shí)現(xiàn)時(shí)是刪掉順序鏈表中所有Ack字段值小于或等于接收Ack號的節(jié)點(diǎn),其實(shí)現(xiàn)過程如圖3(b)所示.其中,函數(shù)Delete_M(jìn)em ()的功能是刪除給定的節(jié)點(diǎn),并釋放該節(jié)點(diǎn)的空間,具體實(shí)現(xiàn)時(shí)要注意先釋放其Buff Ptr所指的空間,再釋放_M(jìn)EM_CELL型節(jié)點(diǎn)的空間,否則容易造成內(nèi)存泄露.

3 TCP重傳的測試

這里采用的測試方法是將該嵌入式Web服務(wù)器與PC機(jī)在RJ-45口及串口分別對接.將嵌入式Web服務(wù)的調(diào)試信息從串口輸出,并由串口精靈顯示[10].筆者對文中實(shí)現(xiàn)的TCP重傳模塊進(jìn)行測試時(shí),輸出的信息如圖4所示.

圖4 測試TCP順序鏈表時(shí)的輸出信息Fig.4 Output when testing the sequential linked list

由圖4可知,每當(dāng)服務(wù)器發(fā)送一個非RST型的TCP報(bào)文時(shí),都會被插入到順序鏈表中,如信息“Insert_M(jìn)em():firstly insert Pkg Num=2”表明,在收到客戶端的TCP連接請求后,服務(wù)器會發(fā)送一個TCP應(yīng)答報(bào)文段,該報(bào)文段在發(fā)送完后立即被插入到重傳隊(duì)列中;信息“Search_M(jìn)em():find Pkg Num=6 Pkg”“Delete_M(jìn)em():the first Pkg of Pkg Num =5 deleted”“Delete_BeforSeq Mem():total 2 pkgs are deleted”表明,服務(wù)器利用收到的報(bào)文9刪掉了重傳隊(duì)列中Ack號比其Ack號要小的報(bào)文5和報(bào)文6;信息“Free_M(jìn)em():free the Pkg Num=5 success”則表明成功地釋放了被刪除的報(bào)文段的RAM空間.

由于將開發(fā)板直接接到PC上時(shí),網(wǎng)絡(luò)環(huán)境比較穩(wěn)定,因此,為了迫使TCP啟動重傳模塊,可以在服務(wù)器TCP發(fā)送報(bào)文段時(shí)人為地將試驗(yàn)板與PC機(jī)的網(wǎng)絡(luò)斷開后迅速連上.由圖4中的信息 “Retransmit the Pkg Num =5 Pkg”和“Retransmit the Pkg Num=6 Pkg”可知,第7、8個報(bào)文段實(shí)質(zhì)上是對第5、6個報(bào)文段的重傳.

筆者通過實(shí)時(shí)獲取嵌入式Web服務(wù)器的傳感器溫度來驗(yàn)證客戶機(jī)能否正確地下載數(shù)據(jù),通過客戶端的Web頁面來控制嵌入式Web服務(wù)器的LED燈亮/滅來驗(yàn)證客戶端能否正確地上傳數(shù)據(jù).嵌入式WebSever演示如圖5所示.經(jīng)筆者驗(yàn)證可知,這種TCP重傳機(jī)制能完成既定的嵌入式TCP服務(wù).

圖5 客戶端動態(tài)地獲取服務(wù)器的傳感器溫度Fig.5 Dynamically access the sensor's temperature of server in client

通過以上測試可知,順序鏈表的操作無誤,TCP重傳模塊工作正常,采用該重傳機(jī)制的TCP能完成正常的TCP服務(wù).

4 結(jié) 語

詳細(xì)討論了如何設(shè)計(jì)并實(shí)現(xiàn)TCP協(xié)議的重傳機(jī)制,并作了相關(guān)測試,驗(yàn)證了該設(shè)計(jì)思路的可行性.為嵌入式設(shè)備中順利實(shí)現(xiàn)嵌入式TCP/IP協(xié)議棧進(jìn)而實(shí)現(xiàn)物聯(lián)網(wǎng)技術(shù)打下了堅(jiān)實(shí)的基礎(chǔ).

[1] International Telecommunication Union UIT.ITU Internet Reports 2005:The Internet of Things[R/OL].[2011-06-26].http:∥ www.itu.int/osg/spu/publications/internet of things/.

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

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

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

[5] Information Sciences Institute University of Southern California.RFC 793:Transmission Control Protocol[S/OL].[2011-07-15].http∥www.faqs.org/rfcs/rfc793.html.

[6] Vern Paxson,Mark Allman.RFC 2988:Computing TCP's Retransmission Timer[S/OL].[2011-07-15].http:∥www.faqs.org/rfcs/rfc2988.html.

[7] 王軼駿,薛質(zhì),李建華.基于TCP/IP協(xié)議棧指紋辨識的遠(yuǎn)程操作系統(tǒng)探測[J].計(jì)算機(jī)工程,2004,30(18):7-9.

[8] 嚴(yán)云洋,馮徑.TCP擁塞控制的實(shí)現(xiàn)與改進(jìn)[J].計(jì)算機(jī)應(yīng)用研究,1999,26(1):35-37.

[9] 潘建平,顧冠群,吳國新.TCP/IP擁擠控制研究[J].小型微型計(jì)算機(jī)系統(tǒng),1999,20(4):251-256.

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

TCP Retransmission Mechanism Simplification Research in Application of Internet of Things

FENGCuili1,LIUBotao 1,WANGQinghai2
(1.Department of Computer Science,Yangtze University,Jingzhou 434023,China;2.Information Center,Drilling Technology Research Institute of Shengli Oilfield,Dongying 257000,China)

Taking the design of the embedded Web Server as an example,aiming at the concrete requirements of the application,the design and realization of a streamlined TCP retransmission mechanism are discussed in detail.Subsequent detailed test results show that the design ideas are feasible.

Internet of things;TCP/IP;embedded TCP;TCP retransmission

TN 915.04

A

1008-9225(2012)01-0030-05

2011-08-08

國家重大專項(xiàng)資助項(xiàng)目(2011zx013).

馮翠麗(1980-),女,河南太康人,長江大學(xué)講師,碩士.

劉乃義】

猜你喜歡
重傳鏈表隊(duì)列
隊(duì)列里的小秘密
基于多隊(duì)列切換的SDN擁塞控制*
軟件(2020年3期)2020-04-20 00:58:44
基于二進(jìn)制鏈表的粗糙集屬性約簡
跟麥咭學(xué)編程
在隊(duì)列里
面向異構(gòu)網(wǎng)絡(luò)的多路徑數(shù)據(jù)重傳研究?
基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗(yàn)證機(jī)制
豐田加速駛?cè)胱詣玉{駛隊(duì)列
數(shù)據(jù)鏈路層的選擇重傳協(xié)議的優(yōu)化改進(jìn)
鏈表方式集中器抄表的設(shè)計(jì)
電測與儀表(2014年1期)2014-04-04 12:00:22
冕宁县| 滦南县| 辉县市| 姚安县| 宜黄县| 四会市| 沧州市| 普宁市| 北票市| 安多县| 永安市| 廉江市| 申扎县| 通海县| 镇远县| 沙雅县| 和龙市| 安阳县| 大冶市| 临澧县| 临高县| 云和县| 循化| 甘泉县| 延川县| 江川县| 苏尼特右旗| 宽城| 枝江市| 麦盖提县| 青川县| 秦皇岛市| 平武县| 孟村| 临漳县| 大港区| 东丰县| 灌南县| 前郭尔| 会宁县| 普定县|