《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > uIP中UDP協議實現的改進
uIP中UDP協議實現的改進
來源:微型機與應用2010年第21期
曹欲曉,韓 磊
(南京工程學院 計算機工程學院,江蘇 南京 211167)
摘要: uIP作為一種廣泛使用的輕量級嵌入式TCP/IP協議棧,其UDP協議的實現還不夠完善,目前最新的1.0版本中僅實現了UDP客戶端,尚沒有實現UDP服務端。為此,對其進行了以下三方面的改進:UDP服務端口的初始化;接收到UDP客戶端數據包后的端口號判斷及匹配;UDP服務端發送報文后目的端口的釋放。經過以上改進后,實驗證明,uIP 1.0中的UDP實現了服務端的功能。
Abstract:
Key words :

摘  要: uIP作為一種廣泛使用的輕量級嵌入式TCP/IP協議棧,其UDP協議的實現還不夠完善,目前最新的1.0版本中僅實現了UDP客戶端,尚沒有實現UDP服務端。為此,對其進行了以下三方面的改進:UDP服務端口的初始化;接收到UDP客戶端數據包后的端口號判斷及匹配;UDP服務端發送報文后目的端口的釋放。經過以上改進后,實驗證明,uIP 1.0中的UDP實現了服務端的功能。
關鍵詞: uIP;嵌入式TCP/IP協議棧;UDP;端口

    隨著嵌入式技術、網絡技術的發展,實現網絡互聯已經成為嵌入式系統發展的一個必然趨勢。在目前的技術條件下,越來越多的嵌入式系統選擇了TCP/IP作為與其他計算機系統互聯的網絡協議。嵌入式TCP/IP協議棧已經成為嵌入式系統研究與應用中的一個重要領域。
    由于嵌入式系統的軟硬件資源都較為有限,大多數嵌入式系統中運行的TCP/IP協議棧均根據嵌入式系統的特點進行了相應的裁剪。目前應用比較廣泛的嵌入式TCP/IP協議棧有:ucTCP-IP、LWIP、uIP、Linux TCP/IP等。其中uIP是專為8 bit和16 bit的嵌入式微控制器設計的微型TCP/IP協議棧, 它具有良好的互操作性, 并遵循RFC標準。uIP協議棧的特點是具有很小的代碼量,運行時需要的內存很少,實現了常用的TCP/IP協議;代碼注釋詳盡,可以用于商業或非商業用途[1]。由于具有上述特點,uIP被廣泛應用在嵌入式系統的網絡互聯中。
1 uIP協議棧的體系結構
    在使用uIP的嵌入式系統的軟件體系結構中,uIP協議棧相當于一個代碼庫,它通過一系列的函數實現與底層硬件和上層應用程序的通信。uIP協議棧與系統底層和上層應用之間的關系如圖1所示[2]。

    從圖1可以看出,uIP協議棧主要提供了uip_input()和uip_periodic()2個函數供系統底層調用。uIP協議棧與應用程序的主要接口是UIP_APPCALL()和UIP_UDP_APPCALL()。

    uIP初始化時調用uip_init()函數,它的主要功能是初始化協議棧的監聽端口,并把所有連接設置為關閉狀態。當網絡控制芯片驅動程序接收到一個數據包時,驅動程序將數據包放入全局緩沖區uip_buf中,同時把包的大小賦給全局變量uip_len。然后uIP的主控部分調用uip_input()函數,該函數將會根據數據包首部的協議標識處理這個包,并在需要時調用上層應用程序。當uip_input()返回時,一個輸出數據包被放在同一個全局緩沖區uip_buf中,其大小賦給uip_len。如果uip_len是0,則說明沒有包要發送,否則主控部分調用底層系統的發包函數將數據包發送到網絡上[3]。

    uIP周期計時用于驅動所有的uIP內部時鐘事件。當周期計時激發后,每一個TCP連接都會調用uIP函數uip_periodic()。類似于uip_input()函數,uip_periodic()函數返回時,輸出的IP包要放到uip_buf中,供底層系統查詢uip_len的大小以決定是否發送。
    由于使用TCP/IP的應用很多,因此應用程序作為單獨的模塊由用戶實現。uIP提供一系列接口供用戶程序調用,其中大部分接口是作為C的宏命令出現的,之所以這樣做主要是考慮到速度、代碼大小、效率和堆棧的使用。用戶需要把對網絡數據包的處理函數作為接口提供給uIP,并將這個函數定義為宏UIP_APPCALL()或者UIP_UDP_APPCALL()。UIP_APPCALL()是用戶對TCP數據包的處理,UIP_UDP_APPCALL()是用戶對UDP數據包的處理[4]。這樣,uIP在接收到底層傳來的數據包后,在需要送到上層應用程序處理的地方,直接調用UIP_APPCALL()或者UIP_UDP_APPCALL()即可,無需修改uIP。
2 uIP的UDP協議分析
2.1 UDP協議的實現

    當uIP接收到一個UDP數據包后,首先從包頭中取出數據的長度,然后重新對包進行校驗,如果校驗和不對,則直接丟掉這個包。如果校驗無誤,則對收到的包進行解復用。此時進行如下判斷:
if(uip_udp_conn->lport != 0 &&
  UDPBUF->destport == uip_udp_conn->lport &&
  (uip_udp_conn->rport == 0 ||
  UDPBUF->srcport == uip_udp_conn->rport) &&
  (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||      uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr)))          上述代碼中用到的主要變量、數據結構和函數的含義是:
uip_udp_conn->lport:本地UDP的源端口;
uip_udp_conn->rport:本地UDP的目的端口;
UDPBUF->srcport:接收到的數據包中的源端口;
UDPBUF->destport:接收到的數據包中的目的端口;
uip_udp_conn->ripaddr:本地UDP的目的IP地址;
BUF->srcipaddr:接收到的數據包中的源IP地址;
all_zeroes_addr:IP地址0.0.0.0;
all_ones_addr:IP地址255.255.255.255;
    uip_ipaddr_cmp:IP地址比較函數,如果參加比較的兩個IP地址相等,則返回1。
    在uIP的實現中,如果以上判斷語句為真,則對接收到的數據包進行處理,處理過程包括調用用戶上層處理程序UIP_UDP_APPCALL()、構造新包的包頭、計算新包的校驗和等,然后將構造好的返回UDP包送到IP層進行處理。
2.2 UDP實現的不足
    通過對uIP中UDP協議實現過程的分析可以發現,uIP沒有提供初始化指定端口的函數,僅提供了一個對給定IP地址上給定端口建立UDP連接的函數,其原型是struct uip_udp_conn*uip_udp_new(uip_ipaddr_t*ripaddr,u16_t rport)。由于作為服務端運行時必須指定監聽端口[5],而uIP沒有提供此功能,因此要讓uIP作為服務端運行,必須對uIP進行改進。
3 uIP中UDP協議的改進
3.1 增加初始化UDP服務端口

    UDP協議作為服務端運行時,同TCP一樣,必須在某個指定端口上監聽客戶端是否有數據包發送,如果有則還要接收數據包,這就要求在uIP記錄UDP連接的數據結構uip_udp_conn中設置本地端口號一項,具體實現步驟如圖2所示。


3.2 IP地址、端口號的判斷及匹配
    uip_process函數接收到網絡控制芯片驅動程序送來的數據包后,當判斷出收到的包是UDP包,執行2.1中的判斷并且得到結果為真后,但還需要再做以下工作:如果uip_udp_conn中的目的端口號為0,則說明這是一個來自客戶端的首次與服務端進行通信的數據包,服務端尚不知道此客戶端的源端口,因此要把uip_udp_conn中的目的端口號設為收到的包中的源端口號,把uip_udp_conn中的目的IP地址設為收到的包中的源IP地址,具體代碼如下:
if(uip_udp_conn->rport==0)
{
    uip_udp_conn->rport=UDPBUF->srcport;                memcpy(uip_udp_conn->ripaddr,UDPBUF->srcipaddr,sizeof(uip_ipaddr_t ));
}
3.3 UDP服務端目的端口的釋放
    UDP服務端的端口應該可以為來自多個客戶端的請求提供服務,而UDP本身是一種無連接的傳輸層協議,因此在每次uIP作為服務端的UDP通信結束之后,還要釋放uip_udp_conn中記錄的目的端口號,以便下次接收來自不同IP、不同端口的新請求,否則當來自其他端口的請求到達時,uIP會不予響應。
    在uIP的官方網站上下載到uIP 1.0的源代碼之后,按照本文給出的幾個步驟對uIP 1.0進行改造之后,利用gcc編譯器把uIP 1.0編譯成S3C2410上的可執行代碼,把基于S3C2410的開發板作為UDP服務器,運行Windows XP的PC機作為客戶端,兩者通過一條交叉網線相聯,在PC機上的測試程序發出UDP請求后,運行在S3C2410上的uIP可以對PC通過UDP協議發出的數據進行處理,并給PC作出正確的回復。實驗證明,通過對uIP進行本文所述的改進之后,uIP具有了作為UDP服務端的能力。
參考文獻
[1] http://www. sics. se/~adam/uip/index. php/Main_Page.
[2] ADAM D. The uIP embedded TCP/IP stack the uIP 1.0 reference manual. June 2006.
[3] ADAM D. Full TCP/IP for 8-bit architectures[C]. In Proceedings of the First International Conference on Mobile Applications, Systems and Services(MOBISYS 2003), San Francisco, May 2003.
[4] ADAM D, OLIVER S, THIEMO V, et al. Protothreads: simplifying event-driven programming of memory-constrained embedded systems[C]. In Proceedings of the Fourth ACM Conference on Embedded Networked Sensor Systems (SenSys 2006), Boulder, Colorado, USA, November 2006.
[5] FOROUZAN B A, FEGAN S C著. TCP/ZP協議簇[M]. 謝希仁等,譯.北京:清華大學出版社,2006.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲久久一区| 欧美激情二区三区| 欧美午夜一区二区| 国产欧美一区二区精品婷婷| 日韩亚洲一区在线播放| 亚洲精品国产精品久久清纯直播| 日韩午夜免费| 国产欧美日韩在线观看| 狠狠爱www人成狠狠爱综合网| 一区二区三区视频在线| 国产精品乱码妇女bbbb| 日韩午夜视频在线观看| 欧美激情精品久久久六区热门| 久久综合给合久久狠狠狠97色69| 欧美亚洲成人网| 国产一区二区中文字幕免费看| 1000部国产精品成人观看| 国产精品卡一卡二| 国产午夜精品在线观看| 亚洲欧美精品中文字幕在线| 国产一区 二区 三区一级| 国产女主播在线一区二区| 亚洲美女少妇无套啪啪呻吟| 国产精品捆绑调教| 久久激情视频久久| 亚洲国产精品高清久久久| 国产精品久久国产精品99gif| 一区二区三区我不卡| 99在线视频精品| 国模精品一区二区三区色天香| 国产综合色精品一区二区三区| 亚洲第一区在线观看| 国产一本一道久久香蕉| 精品不卡视频| 欧美插天视频在线播放| 国产精品国产一区二区| 亚洲国产乱码最新视频| 欧美日韩国产色站一区二区三区| 午夜在线精品| 国产精品麻豆va在线播放| 欧美成人午夜免费视在线看片| 在线播放中文一区| 亚洲国产一区在线| 国产片一区二区| 国产一区二区三区黄| 国产精品专区第二| 久久久久9999亚洲精品| 日韩一区二区免费高清| 尤物yw午夜国产精品视频| 亚洲精品男同| 亚洲国产日韩欧美在线图片| 亚洲在线视频| 国产精品v片在线观看不卡| 欧美日韩一区二区高清| 国内在线观看一区二区三区| 国产精品一区二区久久久| 欧美风情在线观看| 国产精品久久久久久久久久三级| 一本久久精品一区二区| 亚洲毛片视频| 欧美日韩国内| 午夜精品久久一牛影视| 国产精品久久久久免费a∨大胸| 久久亚洲国产成人| 欧美精品一区在线播放| 亚洲国产一区在线| 亚洲欧美韩国| 日韩一区二区高清| 在线观看欧美视频| 欧美午夜激情在线| 国产欧美精品一区| 亚洲国产经典视频| 久久国产精品久久久久久电车| 在线亚洲欧美专区二区| 一区二区三区国产在线观看| 亚洲福利电影| 欧美11—12娇小xxxx| 在线播放一区| 中文国产一区| 99日韩精品| 久久久五月婷婷| 国产在线不卡视频| 一区国产精品| 亚洲在线观看免费视频| 怡红院精品视频| 欧美黄色一区二区| 亚洲精品韩国| 亚洲黄一区二区| 欧美午夜精品久久久| 亚洲美女av黄| 亚洲国产三级网| 另类图片综合电影| 久久综合一区二区| 99riav1国产精品视频| 欧美激情自拍| 蜜臀av性久久久久蜜臀aⅴ| 欧美性感一类影片在线播放| av成人手机在线| 欧美一级片久久久久久久| 久久亚洲欧美国产精品乐播| 欧美国产另类| 免费亚洲一区| 久久xxxx| 久久久久国产精品一区二区| 亚洲人成人一区二区三区| 免费美女久久99| 国产欧美在线看| 国产一区二区在线观看免费| 国产亚洲一级高清| 欧美成人性网| 亚洲精品乱码久久久久久| 在线欧美福利| 国产色综合天天综合网| 亚洲精品视频二区| 在线观看日韩av先锋影音电影院| 欧美激情免费观看| 亚洲深夜影院| 欧美四级剧情无删版影片| 国产精品日日摸夜夜摸av| 黄色一区二区三区四区| 亚洲狼人综合| 欧美色综合天天久久综合精品| 亚洲国产一区视频| 欧美日韩色一区| 国产欧美精品日韩精品| 亚洲欧洲日本国产| 国产一区日韩欧美| 激情综合电影网| 亚洲精品在线视频观看| 国产精品综合av一区二区国产馆| 欧美视频一区| 亚洲精品视频在线观看免费| 欧美激情精品久久久久久免费印度| 野花国产精品入口| 136国产福利精品导航网址| 欧美一级日韩一级| 亚洲激情社区| 黄色成人在线网址| 欧美日韩视频第一区| 亚洲精品国偷自产在线99热| 欧美在线影院在线视频| 国产精品亚洲美女av网站| 国产亚洲精品久久久久婷婷瑜伽| 久久99伊人| 国产精品美腿一区在线看| 国产午夜久久久久| 国产欧美综合一区二区三区| 久久久精品久久久久| 国产一区二区观看| 亚洲人妖在线| 欧美性天天影院| 亚洲欧美另类国产| 欧美亚洲成人免费| 国产目拍亚洲精品99久久精品| 欧美日韩综合视频| 先锋影音一区二区三区| 国产精品国产三级国产专播精品人| 亚洲精品视频啊美女在线直播| 亚洲一区日本| 国产精品h在线观看| 欧美成年视频| 国产久一道中文一区| 国产精品成人久久久久| 在线精品亚洲一区二区| 国产中文一区| 欧美日韩免费观看一区三区| 久久日韩粉嫩一区二区三区| 亚洲视频欧美在线| 国产麻豆91精品| 午夜激情一区| 久久久国产一区二区| 久久久噜噜噜久久中文字免| 日韩一区二区免费高清| 亚洲一级二级| 亚洲欧美日韩中文视频| 亚洲一区二区影院| 日韩一二在线观看| 国产一区二区三区免费在线观看| 国产精品成人免费视频| 亚洲欧美色一区| 国产精品国产自产拍高清av| 亚洲大片在线观看| 女同性一区二区三区人了人一| 亚洲无亚洲人成网站77777| 中文av一区二区| 亚洲视频精选在线| 在线亚洲观看| 国产精品日日摸夜夜添夜夜av| 日韩小视频在线观看| 欧美日韩极品在线观看一区| 欧美二区在线看| 一区二区久久久久久| 亚洲欧美日韩一区二区| 亚洲精品一区二区三区av| 狠狠久久五月精品中文字幕| 久久久久网址| 国产精品一区二区三区免费观看| 亚洲婷婷综合色高清在线| 亚洲国产欧美一区二区三区同亚洲| 国产日韩欧美二区| 亚洲国产高清高潮精品美女| 一区二区三区不卡视频在线观看| 欧美一区三区三区高中清蜜桃| 国产日韩精品久久久| 国产一级精品aaaaa看| 久久综合国产精品台湾中文娱乐网| 久久都是精品| 快射av在线播放一区| 亚洲黄色免费网站| 另类酷文…触手系列精品集v1小说| 亚洲伦理久久| 欧美区高清在线| 欧美成人精品1314www| 欧美午夜精品久久久久久超碰| 久久精品日产第一区二区三区| 亚洲少妇自拍| 国产亚洲精久久久久久| 久久夜精品va视频免费观看| 欧美第一黄网免费网站| 一区二区国产日产| 欧美午夜精品久久久久久超碰| 久久久国产精品亚洲一区| 欧美视频在线看| 亚洲伦理网站| 亚洲一区二区三区在线播放| 影音先锋中文字幕一区二区| 一本色道久久综合亚洲精品婷婷| 国语精品中文字幕| 99国产精品99久久久久久粉嫩| 欧美激情亚洲综合一区| 在线综合亚洲| 国产精品扒开腿爽爽爽视频| 一区二区三区欧美日韩| 亚洲欧美激情视频在线观看一区二区三区| 免费在线看一区| 久久综合精品国产一区二区三区| 久久一区免费| 亚洲欧美精品中文字幕在线| 夜夜爽99久久国产综合精品女不卡| 久久久久99精品国产片| 久久中文字幕一区| 一区二区三区中文在线观看| 亚洲茄子视频| 亚洲精品在线免费| 久久久av网站| 欧美日韩喷水| 亚洲影院一区| 亚洲三级影片| 男男成人高潮片免费网站| 樱花yy私人影院亚洲| 欧美精品99| 欧美日韩国产一级片| 老司机免费视频一区二区| 美女图片一区二区| 激情91久久| 欧美成人高清视频| 国产精品私拍pans大尺度在线| 久久国内精品自在自线400部| 欧美精品日韩三级| 久久男人资源视频| 久久狠狠久久综合桃花| 一区二区电影免费在线观看| 男女激情视频一区| 亚洲激情欧美| 国产精品一区二区久激情瑜伽| 亚洲福利精品| 亚洲第一视频网站| 国产一区二区三区无遮挡| 影音先锋中文字幕一区| 欧美成人a视频| 亚洲精品综合在线| 欧美亚洲在线视频| 最新国产成人在线观看| 欧美一区二区三区四区在线| 亚洲亚洲精品三区日韩精品在线视频| 国产亚洲成av人片在线观看桃| 每日更新成人在线视频| 欧美14一18处毛片| 欧美福利电影在线观看| 欧美在线播放高清精品| 亚洲国产欧美日韩另类综合| 国产精品爽爽爽| 欧美日韩日本网| 欧美日韩国产探花| 欧美激情女人20p| 欧美天堂亚洲电影院在线播放| 农夫在线精品视频免费观看| 亚洲影院高清在线| 国产日韩欧美视频| 亚洲一区二区三区国产| 亚洲女人天堂av| 国产精品伊人日日| 亚洲激情自拍| 国产亚洲精品久| 在线精品观看| 欧美日韩一区二区三区在线视频| 亚洲乱码精品一二三四区日韩在线| 久久国产精品99久久久久久老狼| 亚洲高清久久久| 在线观看的日韩av| 亚洲看片网站| 国产九九视频一区二区三区| 激情婷婷亚洲| 国产日本欧美在线观看| 亚洲国产精品va在线看黑人| 激情亚洲一区二区三区四区| 国产精品三区www17con| 久久久久久久97| 亚洲日本电影| 欧美视频网站| 亚洲视频福利| 亚洲视频在线一区观看| 国产综合视频| 亚洲欧美中文日韩v在线观看| 午夜精品剧场| 亚洲午夜久久久久久久久电影网| 国产精品影视天天线| 黄色资源网久久资源365| 国产欧美日本一区二区三区| 亚洲免费激情| 国产精品久久久久一区二区三区共| 欧美日韩国产精品一卡| 国产欧美日韩中文字幕在线| 欧美日韩精品二区| 亚洲国产精品欧美一二99| 欧美成人精精品一区二区频| 久久综合婷婷| 夜夜爽av福利精品导航|