《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 基于8位微處理器的嵌入式TCP/IP協議棧剖析

基于8位微處理器的嵌入式TCP/IP協議棧剖析

2009-09-25
作者:伍洲凱 王 波

  摘??要: 對嵌入式TCP/IP協議棧發展現狀進行了分析,并詳細剖析了嵌入式TCP/IP協議棧的實現細節及基于8位微處理器實現的技術思路。

  關鍵詞: 微處理器? 嵌入式? TCP/IP? 協議棧

?

1 基于8位微處理器的嵌入式TCP/IP協議棧的意義

  隨著Internet的爆炸式增長,TCP/IP已經成為通信領域事實上的國際標準。對于嵌入式系統而言,能夠通過自身的嵌入式TCP/IP協議棧連接Intranet,甚至Internet,將使其具有更好的實用性,且可帶來巨大的經濟效益。目前出現了很多依靠通信技術開發出的十分有用的嵌入式系統應用實例。例如嵌入式系統可以通過低帶寬的無線鏈路傳輸電度表讀數。采用全球定位系統GPS技術和無線鏈路的嵌入式系統可以用于確定在國內任何地方行駛的車輛的準確位置、速度、油壓和其他參數。

  傳統TCP/IP協議棧(包括桌面PC和服務器中的TCP/IP協議棧以及一般的基于32位的嵌入式TCP/IP協議棧等)的實現需要大量的存儲器資源。這是由于這些實現的代碼量偏大,且運行時也要耗用大量內存。因此,存儲資源有限的8位系統無法滿足這種需求。現場智能化儀表多采用8位微處理器,如果能夠在低端8位微處理器上實現連網的功能,其經濟效益將非常可觀,應用前景極其廣闊。

2 嵌入式TCP/IP協議棧發展現狀

  目前已存在的TCP/IP協議棧大致分為2類:(1)沿用了BSD TCP/IP協議棧的實現思路。(2)完全與BSD TCP/IP協議棧無關的實現。

  由于BSD協議棧最初是針對工作站設計的,而并非是針對嵌入式設備設計的,因此,沿用BSD TCP/IP協議棧實現思路的嵌入式TCP/IP協議棧(如InterNiche NicheStack)通常都比較復雜,且代碼較多,所以一般都在32位微處理器上實現。

  另一類完全與BSD TCP/IP協議棧無關的實現通常都對通信環境做了某些假設,從而可以使用簡化的模型來實現TCP/IP協議棧,如PIC micro stack。通常假設嵌入式TCP/IP協議棧只與那些具有完整標準的TCP/IP協議棧的系統進行通信,即簡化的TCP/IP模型可以通過遠端完整的標準TCP/IP協議棧進行通信。但是,如果遠端也是一個簡化的嵌入式TCP/IP協議棧,通信就有可能失敗。這類TCP/IP協議棧一般都定位在16位甚至8位微處理器上實現。

  TCP/IP模型通常可以針對某個具體的應用進行簡化。以Web服務器應用為例,由于Web服務器不使用TCP/IP協議棧的緊急數據功能,也不需要維持活動連接(在HTTP協議中定義的),因此針對Web服務器應用開發嵌入式TCP/IP協議棧時,前述功能不需要實現。

3?嵌入式TCP/IP協議棧的技術剖析

  嵌入式TCP/IP協議棧通常都包括IP、ICMP、TCP和UDP等幾個協議。下面分別針對這幾個協議進行相關技術剖析并探討其基于8位微處理器實現的技術思路。

3.1 IP協議

  從網絡接口層進來的數據包,首先將被網絡層的IP協議處理。IP協議對數據包進行一些簡單的檢查,如數據包的目的IP地址是不是本地IP地址,同時校驗數據包。由于8位嵌入式TCP/IP協議棧幾乎不需要使用IP選項,因此對于接收到的數據包中的IP選項,可以忽略不處理。

  對于IP協議中的分段重組功能,可以使用單獨的緩沖區來實現。當一個分段被接收后,將被拷貝到緩沖區中的相應位置,同時使用位圖來跟蹤指示哪些分段已成功接收。根據IP協議可知,一個分段的第一個字節在緩沖區的位置必然是8的倍數,也就是按8字節進行對齊,因此,位圖只占用很少的內存。當所有分段被正確接收后,重組好的分組將被傳送給TCP協議層進行處理。通常8位嵌入式TCP/IP協議棧傳輸的單個分段的數據量都比較小。如果在某些具體應用或者某些具體環境中能確保8位嵌入式TCP/IP協議棧接收到的分組不存在分片的分段,則可以忽略實現IP協議的分段重組功能。

  IP協議有組播和廣播的功能,因此IP分組的目的地址可以是組播地址或者廣播地址。IP廣播在許多基于UDP協議的應用中經常被使用,如Microsoft Windows File-Sharing SMB協議。IP組播多用于多媒體的發布,如RTP。如果要使協議棧支持基于UDP協議的應用,則除了要實現UDP協議外,通常還應該實現IP廣播和組播功能。

3.2 ICMP協議

  ICMP主要用來進行網絡故障診斷,如常用的Ping程序就是利用ICMP協議的回應機制(Echo)來測試網絡的連通性。在8位嵌入式協議棧中,一般應該實現ICMP協議的回應機制,而其他功能則可以忽略。

  ICMP的回應機制就是對接收到的回應請求消息(Echo Request)返回一個回應應答消息(Echo Reply)。因此實現起來很簡單,只需要將接收到的回應請求消息中分組的源端IP和目的端IP交換一下,然后將該分組的ICMP頭部設置為ICMP回應應答消息類型,最后按標準方法計算ICMP校驗和即可。

3.3 TCP協議

  由于TCP協議包含超時重發機制,因此其實現需要一個定時器。接收到的分組經過IP協議層處理后,就可交給TCP協議層處理,具體來說就是調用TCP協議實現的接口函數。如果分組中除了TCP頭部外,還包含應用數據,則TCP協議將把該數據傳給某個具體的應用層協議做進一步處理;如果分組只是確認前一次數據的成功發送,則更新連接狀態信息(Connection State),并且通知某個具體的應用層協議可以發送新數據。

  TCP允許半打開的連接(Half-Open Connection),即該半打開的連接正對連接請求進行監聽。在實現中,可以使用鏈表來組織所有正監聽的連接,且可以使用16位的端口號來惟一標識每個正監聽的連接。當一個連接請求到來時,根據連接請求指定的端口號,查找該鏈表。同時該鏈表隨著應用層程序的運行,可以動態調整。

????當發送數據時,應用層程序必須檢查TCP協議的發送窗口的大小,并根據其大小來調整本次發送的字節數。發送窗口大小取決于可用內存的大小和數據接收者聲明的窗口大小。在發送數據時,先要用緩沖空間來緩沖需要發送的數據。如果緩沖空間不可使用,則必須等待直到緩沖空間可用為止。當從接收者接收到確認信息后,緩沖空間變為可用。當緩沖空間可用時,將通知應用程序可以發送數據了。

  大多數TCP協議的實現中都使用滑動窗口機制來發送數據。通過滑動窗口機制,多個數據段可以連續同時發送。如果不使用滑動窗口機制,則需要在每次發送完一個數據段后等待確認信息,當接收到確認后才能發送下一個數據段。在基于8位微處理器的協議棧中,不推薦使用滑動窗口機制。這是由于滑動窗口算法需要使用許多32位操作數,而在許多8位微處理器上32位的操作效率非常低下。而且滑動窗口機制需要較多的緩沖空間來緩沖多個要發送的數據段,這對內存資源有限的8位微處理器來說比較浪費。此外,滑動窗口機制并不是TCP協議必需的,沒有滑動窗口機制,完全不會影響網絡的互聯,只是發送效率比較低而已。

  為了得到合理的重發時延,TCP需要持續對該活動連接進行回旋時間(Round-Trip Time,RTT)的評估。在TCP協議中,可以通過定時器來評估RTT。具體方法是:每個活動連接維護一個計數器;每當定時器觸發時,對每個剛發送了數據,且當前還沒有接收到確認信息的活動連接計數器加1;當收到確認信息后,該連接計數器的當前值就作為RTT樣例值,結合標準的RTT評估函數就可以得到RTT的評估值,最后將該連接的計數器清零。

  TCP重發機制的實現依賴于定時器。每個活動連接維護一個重發時延值,該值取決于RTT。當定時器觸發時,每個剛發送了數據且當前還沒有接收到確認信息的活動連接的重發時延值減1,當重發時延值減為0時,該連接重發前一次發送的數據。數據重新發送完后,重發時延值設為初始值。重發數據的來源有2種方式:(1)緩沖區,即當數據發送完后,先放到緩沖區中,直到收到確認信息后才將該數據從緩沖區中刪除。(2)不對發送的數據進行緩沖,當重發時,通知應用程序重新獲得前一次發送的數據。

  TCP流量控制機制的目的在于使性能和內存大小具有較大差異的主機間能夠進行通信。每一個TCP數據段中指定了發送者可用的緩沖空間的大小。發送者發送的數據不應該大于接收者指定的緩沖空間大小。如果接收者已不能接收數據,則指定可用的緩沖空間大小為0。

  TCP擁塞控制機制限制了網絡中并發的TCP數據段的數目。擁塞控制算法非常容易實現,只需少量的代碼。如果協議棧沒有實現滑動窗口機制,則每個活動連接只能一次發送一個TCP數據段。這樣,網絡中并發的TCP數據段就得到了控制,從而可以忽略擁塞控制機制的實現。

  TCP緊急數據機制提供了應用到應用的通知機制。應用程序可以使用該機制使某些數據流比正常的數據流更快地發送出去。緊急數據的含義由接收應用程序負責解釋。如果要實現緊急數據機制,則會大大增加協議棧的復雜度。因此在基于8位微處理器的嵌入式協議棧中,一般都忽略該機制。

  每個TCP連接都需要一定的狀態信息。由于這些狀態信息必然要占用內存,因此在實現時應該最小化TCP連接所需要的狀態信息。如果實現TCP滑動窗口機制,則會大大增加TCP連接所需要的狀態信息。滑動窗口機制需要每個TCP連接都必須保存一些32位序號信息,而且如果要支持宿主機(一個主機有多個IP地址),則每個連接還要保存更多的信息。因此,對于基于8位微處理器的嵌入式協議棧而言,必須忽略一些機制。

3.4 UDP協議

  與TCP協議相比,UDP協議非常簡單。UDP主要應用于不同的進程之間鏈路的多路復用。它沒有復雜的機制,只需要按照協議標準實現。

4? 結束語

  一個實用的基于8位微處理器的嵌入式協議棧首先要保證能和其他協議棧正確通信,這既包含完整的協議棧,也包括同樣是基于8位微處理器的嵌入式協議棧。其次要合理、高效地使用資源,尤其是存儲資源。此外,還要求代碼簡潔高效。

?

參考文獻

1 Tanenbaum A S著,熊桂喜,王小虎譯.計算機網絡.北京:清華大學出版社,1998

2 Comer D E,Stevens D L著,趙剛,林瑤,蔣慧譯.用TCP/IP進行網際互連(第2版).北京:電子工業出版社,1998

3?劉磅.TCP/IP Ethernet—自控設備的新選擇.http://www.gongkong.com,2003

4 劉磅.現場級TCP/IP控制器及其實踐.http://www.gongkong.com,2003

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久精品国产免费观看| 国产精品99久久久久久白浆小说| 亚洲黄页一区| 国产在线观看91精品一区| 国产精品你懂的在线| 欧美三级电影一区| 欧美日本一区二区视频在线观看 | 欧美日韩一级黄| 欧美极品一区二区三区| 欧美成ee人免费视频| 免费不卡亚洲欧美| 欧美xxx成人| 欧美大片免费观看在线观看网站推荐 | 国产啪精品视频| 国产欧美一区二区精品性| 国产目拍亚洲精品99久久精品| 国产精品视区| 国产欧美精品日韩| 狠狠色丁香婷婷综合久久片| 好吊视频一区二区三区四区| 国产综合在线看| 亚洲高清视频一区二区| 91久久中文| 9色精品在线| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲免费av片| 一本大道久久a久久综合婷婷| 亚洲视频一区| 欧美一区二区三区在线看 | 欧美日韩亚洲在线| 国产精品萝li| 国产综合视频在线观看| 亚洲黄色免费电影| 在线亚洲美日韩| 亚洲欧美综合精品久久成人| 欧美一区二区观看视频| 亚洲国产成人av| 一区二区三区国产精华| 亚洲欧美综合v| 久久久久久夜| 欧美精品免费观看二区| 国产精品另类一区| 狠狠色综合网| 日韩小视频在线观看| 亚洲自拍偷拍一区| 亚洲片国产一区一级在线观看| 亚洲视频狠狠| 久久久精品五月天| 欧美激情中文字幕在线| 国产精品一区久久久| 亚洲大片免费看| 亚洲午夜精品久久久久久app| 欧美一区二区高清| 9色精品在线| 羞羞答答国产精品www一本 | 在线精品在线| 中文国产成人精品久久一| 久久er99精品| 一本一本久久| 久久免费视频在线| 国产精品igao视频网网址不卡日韩| 国产一区二区精品久久91| 亚洲人线精品午夜| 午夜久久美女| av成人免费在线| 久久精品免费| 欧美日韩中文字幕综合视频| 国模大胆一区二区三区| 一本色道久久综合亚洲精品不卡| 欧美在线免费观看视频| 在线亚洲一区观看| 美女久久一区| 国产目拍亚洲精品99久久精品| 亚洲人成人一区二区三区| 欧美一区久久| 亚洲综合日本| 欧美高清不卡在线| 国产九区一区在线| 99视频一区二区三区| 亚洲国产日韩在线| 久久成人亚洲| 欧美日韩国产二区| 在线观看日韩欧美| 欧美一站二站| 亚洲欧美成人网| 欧美日本精品| 伊人久久大香线蕉综合热线| 亚洲欧美日韩国产精品| 在线视频免费在线观看一区二区| 麻豆国产精品一区二区三区| 国产视频亚洲精品| 亚洲午夜精品福利| 亚洲视频免费观看| 欧美精品一区三区| 亚洲大片精品永久免费| 久久精品国产一区二区电影| 欧美一区二区三区久久精品| 欧美日韩精品久久久| 亚洲国产老妈| 亚洲国产成人在线播放| 久久精品国产2020观看福利| 国产精品日本欧美一区二区三区| 亚洲精品一区中文| 亚洲精品在线电影| 免费观看在线综合| 狠狠色狠狠色综合日日小说| 羞羞视频在线观看欧美| 欧美一区二区三区在线视频 | 99国内精品久久久久久久软件| 男女激情久久| 黄色成人免费观看| 欧美专区在线观看| 久久精品一区二区三区中文字幕 | 国内视频精品| 欧美永久精品| 久久久久久久欧美精品| 国产日韩av高清| 亚洲欧美日韩综合一区| 欧美一区二区高清在线观看| 国产精品久久久久久久久免费樱桃 | 亚洲娇小video精品| 亚洲精品一区久久久久久| 欧美成人一区二区在线| 亚洲韩国青草视频| 日韩视频在线免费观看| 欧美另类视频在线| 亚洲精品一区二区三区婷婷月| 一级成人国产| 欧美视频一二三区| 亚洲天堂久久| 亚欧成人在线| 国产在线乱码一区二区三区| 亚洲丁香婷深爱综合| 欧美aⅴ一区二区三区视频| 91久久综合亚洲鲁鲁五月天| 一区二区日韩免费看| 欧美视频一区二区三区…| 一个色综合导航| 欧美一区二区三区播放老司机 | 一本综合久久| 欧美影院成人| 狠狠干成人综合网| 亚洲久久一区二区| 欧美日韩一区二区视频在线| 亚洲一区免费看| 久久精品综合网| 在线精品亚洲一区二区| 一区二区激情视频| 国产精品亚洲精品| 久久精品国产第一区二区三区| 欧美成人国产一区二区| 一二三区精品| 久久精品一区二区| 亚洲激情成人| 亚洲欧美中文日韩在线| 激情五月婷婷综合| 一区二区高清| 国产欧美一级| 亚洲精品影视| 国产精品亚洲激情| 亚洲人成网站精品片在线观看 | 亚洲第一网站| 欧美日韩国产精品一区| 亚洲欧美日本视频在线观看| 免费在线看一区| 中文国产成人精品久久一| 久久香蕉国产线看观看av| 亚洲免费成人av| 久久久久99| 亚洲免费电影在线观看| 久久久久久一区二区| 日韩午夜在线播放| 久久久www免费人成黑人精品 | 亚洲深夜福利| 玖玖玖国产精品| 99精品福利视频| 久久久久中文| 中文av一区特黄| 麻豆成人在线播放| 亚洲一区二区在线免费观看视频| 久久一区二区三区av| 亚洲最快最全在线视频| 快she精品国产999| 亚洲视频免费在线| 免费看成人av| 亚洲欧美日韩在线不卡| 欧美日韩国产999| 久久精品欧洲| 国产欧美韩国高清| 在线视频亚洲| 亚洲大片av| 久久久综合网站| 亚洲深夜福利| 欧美精品少妇一区二区三区| 久久国产精品网站| 国产精品入口福利| 一区二区高清视频在线观看| 影音先锋久久久| 久久国内精品自在自线400部| 亚洲伦理精品|