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

        ?

        uIP中UDP協(xié)議實現(xiàn)的改進*

        2010-05-11 11:57:54曹欲曉
        關(guān)鍵詞:嵌入式系統(tǒng)

        曹欲曉,韓 磊

        (南京工程學(xué)院 計算機工程學(xué)院,江蘇 南京 211167)

        隨著嵌入式技術(shù)、網(wǎng)絡(luò)技術(shù)的發(fā)展,實現(xiàn)網(wǎng)絡(luò)互聯(lián)已經(jīng)成為嵌入式系統(tǒng)發(fā)展的一個必然趨勢。在目前的技術(shù)條件下,越來越多的嵌入式系統(tǒng)選擇了TCP/IP作為與其他計算機系統(tǒng)互聯(lián)的網(wǎng)絡(luò)協(xié)議。嵌入式TCP/IP協(xié)議棧已經(jīng)成為嵌入式系統(tǒng)研究與應(yīng)用中的一個重要領(lǐng)域。

        由于嵌入式系統(tǒng)的軟硬件資源都較為有限,大多數(shù)嵌入式系統(tǒng)中運行的TCP/IP協(xié)議棧均根據(jù)嵌入式系統(tǒng)的特點進行了相應(yīng)的裁剪。目前應(yīng)用比較廣泛的嵌入式TCP/IP 協(xié) 議 棧 有 :ucTCP-IP、LWIP、uIP、Linux TCP/IP等。其中uIP是專為8 bit和16 bit的嵌入式微控制器設(shè)計的微型TCP/IP協(xié)議棧,它具有良好的互操作性,并遵循RFC標(biāo)準(zhǔn)。uIP協(xié)議棧的特點是具有很小的代碼量,運行時需要的內(nèi)存很少,實現(xiàn)了常用的TCP/IP協(xié)議;代碼注釋詳盡,可以用于商業(yè)或非商業(yè)用途[1]。由于具有上述特點,uIP被廣泛應(yīng)用在嵌入式系統(tǒng)的網(wǎng)絡(luò)互聯(lián)中。

        1 uIP協(xié)議棧的體系結(jié)構(gòu)

        在使用uIP的嵌入式系統(tǒng)的軟件體系結(jié)構(gòu)中,uIP協(xié)議棧相當(dāng)于一個代碼庫,它通過一系列的函數(shù)實現(xiàn)與底層硬件和上層應(yīng)用程序的通信。uIP協(xié)議棧與系統(tǒng)底層和上層應(yīng)用之間的關(guān)系如圖1所示[2]。

        圖1 uIP協(xié)議棧體系結(jié)構(gòu)

        從圖 1可以看出,uIP協(xié)議棧主要提供了uip_input()和uip_periodic()2個函數(shù)供系統(tǒng)底層調(diào)用。uIP協(xié)議棧與應(yīng)用程序的主要接口是UIP_APPCALL()和UIP_UDP_APPCALL()。

        uIP初始化時調(diào)用uip_init()函數(shù),它的主要功能是初始化協(xié)議棧的監(jiān)聽端口,并把所有連接設(shè)置為關(guān)閉狀態(tài)。當(dāng)網(wǎng)絡(luò)控制芯片驅(qū)動程序接收到一個數(shù)據(jù)包時,驅(qū)動程序?qū)?shù)據(jù)包放入全局緩沖區(qū)uip_buf中,同時把包的大小賦給全局變量uip_len。然后uIP的主控部分調(diào)用uip_input()函數(shù),該函數(shù)將會根據(jù)數(shù)據(jù)包首部的協(xié)議標(biāo)識處理這個包,并在需要時調(diào)用上層應(yīng)用程序。當(dāng)uip_input()返回時,一個輸出數(shù)據(jù)包被放在同一個全局緩沖區(qū)uip_buf中,其大小賦給uip_len。如果uip_len是0,則說明沒有包要發(fā)送,否則主控部分調(diào)用底層系統(tǒng)的發(fā)包函數(shù)將數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)上[3]。

        uIP周期計時用于驅(qū)動所有的uIP內(nèi)部時鐘事件。當(dāng)周期計時激發(fā)后,每一個TCP連接都會調(diào)用uIP函數(shù)uip_periodic()。 類似于 uip_input()函數(shù),uip_periodic()函數(shù)返回時,輸出的IP包要放到uip_buf中,供底層系統(tǒng)查詢uip_len的大小以決定是否發(fā)送。

        由于使用TCP/IP的應(yīng)用很多,因此應(yīng)用程序作為單獨的模塊由用戶實現(xiàn)。uIP提供一系列接口供用戶程序調(diào)用,其中大部分接口是作為C的宏命令出現(xiàn)的,之所以這樣做主要是考慮到速度、代碼大小、效率和堆棧的使用。用戶需要把對網(wǎng)絡(luò)數(shù)據(jù)包的處理函數(shù)作為接口提供給uIP,并將這個函數(shù)定義為宏UIP_APPCALL()或者 UIP_UDP_APPCALL()。UIP_APPCALL()是用戶對 TCP數(shù)據(jù)包的處理,UIP_UDP_APPCALL()是用戶對 UDP數(shù)據(jù)包的處理[4]。這樣,uIP在接收到底層傳來的數(shù)據(jù)包后,在需要送到上層應(yīng)用程序處理的地方,直接調(diào)用UIP_APPCALL()或者 UIP_UDP_APPCALL()即可,無需修改uIP。

        2 uIP的UDP協(xié)議分析

        2.1 UDP協(xié)議的實現(xiàn)

        當(dāng)uIP接收到一個UDP數(shù)據(jù)包后,首先從包頭中取出數(shù)據(jù)的長度,然后重新對包進行校驗,如果校驗和不對,則直接丟掉這個包。如果校驗無誤,則對收到的包進行解復(fù)用。此時進行如下判斷:

        上述代碼中用到的主要變量、數(shù)據(jù)結(jié)構(gòu)和函數(shù)的含義是:

        在uIP的實現(xiàn)中,如果以上判斷語句為真,則對接收到的數(shù)據(jù)包進行處理,處理過程包括調(diào)用用戶上層處理程序 UIP_UDP_APPCALL()、構(gòu)造新包的包頭、計算新包的校驗和等,然后將構(gòu)造好的返回UDP包送到IP層進行處理。

        2.2 UDP實現(xiàn)的不足

        通過對uIP中UDP協(xié)議實現(xiàn)過程的分析可以發(fā)現(xiàn),uIP沒有提供初始化指定端口的函數(shù),僅提供了一個對給定IP地址上給定端口建立UDP連接的函數(shù),其原型是struct uip_udp_conn*uip_udp_new(uip_ipaddr_t*ripaddr,u16_t rport)。由于作為服務(wù)端運行時必須指定監(jiān)聽端口[5],而 uIP沒有提供此功能,因此要讓uIP作為服務(wù)端運行,必須對uIP進行改進。

        3 uIP中UDP協(xié)議的改進

        3.1 增加初始化UDP服務(wù)端口

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

        圖2 UDP服務(wù)端口初始化

        3.2 IP地址、端口號的判斷及匹配

        uip_process函數(shù)接收到網(wǎng)絡(luò)控制芯片驅(qū)動程序送來的數(shù)據(jù)包后,當(dāng)判斷出收到的包是UDP包,執(zhí)行2.1中的判斷并且得到結(jié)果為真后,但還需要再做以下工作:如果uip_udp_conn中的目的端口號為0,則說明這是一個來自客戶端的首次與服務(wù)端進行通信的數(shù)據(jù)包,服務(wù)端尚不知道此客戶端的源端口,因此要把uip_udp_conn中的目的端口號設(shè)為收到的包中的源端口號,把uip_udp_conn中的目的IP地址設(shè)為收到的包中的源IP地址,具體代碼如下:

        3.3 UDP服務(wù)端目的端口的釋放

        UDP服務(wù)端的端口應(yīng)該可以為來自多個客戶端的請求提供服務(wù),而UDP本身是一種無連接的傳輸層協(xié)議,因此在每次uIP作為服務(wù)端的UDP通信結(jié)束之后,還要釋放uip_udp_conn中記錄的目的端口號,以便下次接收來自不同IP、不同端口的新請求,否則當(dāng)來自其他端口的請求到達時,uIP會不予響應(yīng)。

        在uIP的官方網(wǎng)站上下載到uIP 1.0的源代碼之后,按照本文給出的幾個步驟對uIP 1.0進行改造之后,利用gcc編譯器把uIP 1.0編譯成S3C2410上的可執(zhí)行代碼,把基于S3C2410的開發(fā)板作為UDP服務(wù)器,運行Windows XP的PC機作為客戶端,兩者通過一條交叉網(wǎng)線相聯(lián),在PC機上的測試程序發(fā)出UDP請求后,運行在S3C2410上的uIP可以對PC通過UDP協(xié)議發(fā)出的數(shù)據(jù)進行處理,并給PC作出正確的回復(fù)。實驗證明,通過對uIP進行本文所述的改進之后,uIP具有了作為UDP服務(wù)端的能力。

        [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,F(xiàn)EGAN S C著.TCP/ZP協(xié)議簇 [M].謝希仁等,譯.北京:清華大學(xué)出版社,2006.

        猜你喜歡
        嵌入式系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
        電子制作(2019年7期)2019-04-25 13:17:14
        嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:16
        搭建基于Qt的嵌入式開發(fā)平臺
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        狠狠久久av一区二区三区| 最近免费中文字幕| 日韩精品电影在线观看| 蜜桃网站在线免费观看视频| 二区三区日本高清视频| 玩弄人妻少妇精品视频| 国产精品.xx视频.xxtv| 亚洲欧洲日韩另类自拍| 蜜桃码一区二区三区在线观看| 日本妇人成熟免费2020| 国产高潮刺激叫喊视频| 久久精品国产99久久丝袜| 亚洲一区二区在线视频,| 国产欧美va欧美va香蕉在线| 欧美艳星nikki激情办公室| 国产短视频精品区第一页| 风流少妇一区二区三区91| 人与人性恔配视频免费| 中文字幕无码av激情不卡| 日本a在线天堂| 国产在线精品观看一区二区三区| 国产av国片精品有毛| 中文字幕精品久久久久人妻红杏1 丰满人妻妇伦又伦精品国产 | 很黄很色的女同视频一区二区 | 开心五月天第四色婷婷| 农村欧美丰满熟妇xxxx| 亚洲最大在线精品| 精品人妻一区二区视频| 国产成人精品优优av| 女人夜夜春高潮爽a∨片| 97碰碰碰人妻视频无码| 亚洲毛片在线观看免费| 成年免费视频黄网站zxgk| 亚洲av美女在线播放啊| 国产一区二区三区中出| 无码人妻一区二区三区兔费 | 午夜免费福利一区二区无码AV| 精品久久一品二品三品| 国产二级一片内射视频播放| 国产一国产一级新婚之夜| 亚洲爆乳少妇无码激情|