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

基于UML的嵌入式系統UDP模塊設計

2008-12-31 00:00:00蔣維成
電腦知識與技術 2008年34期

摘要:將UDP協議劃分成粒度更細的功能模塊,該文給出了嵌入式系統中UDP協議的UML實現方法,從軟件體系結構的角度詳細的分析了UDP協議的具體建模過程。面向對象的實現方法,具有軟件重用,可擴展性,多態性,函數覆蓋與重載,使嵌入式系統的可移植性和可重用性大大提高。

關鍵詞:UML;UDP;面向對象;嵌入式

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)34-1655-03

The Design for Embedded System of UDP Modeling Based on UML

JIANG Wei-cheng

(Department of Computer Science, Hunan Normal University, Changsha 410081, China)

Abstract: Based on Unified Modelling Language, an Object-Oriented method was given to design User Datagram Protocol which is used in the embedded system. The process and methods to desige model are described in detail. Object-Oriented method has many characers, such as flexility, Polymorphism and Overload. It improves sofrware reuse and reconfigurability.

Key words: UML; UDP; Object-Oriented; Embedded system

1 引言

UDP 是User Datagram Protocol的縮寫,即用戶數據報協議。屬于網絡協議中的傳輸層協議。由于UDP協議不需建立連接,具有效率高、速度快和占用資源少等優點,在基于消息通信和實時系統中可以提高系統傳輸數據的效率。主要的用途是網際名稱服務器和簡單文件傳輸協議。UDP具有組播和廣播功能,是分發信息的一個理想協議。現在UDP廣泛用在多媒體應用中,視頻會議,網絡點播以及大多數因特網電話軟件產品也都運行在UDP之上。

嵌入式系統中使用的TCP/IP協議棧有LWIP、uIP、Linux IP等等,它們具有一定的通用性,但在具體的移植過程中要考慮很多的問題,特別是各個庫文件和全局變量相互交叉引用,大大地增加了移植的難度,代碼的重用率也不高。

統一建模語言(Unified Modeling Language)簡稱UML,是一種“通用的可視建模語言,用于說明、可視化、構造并文檔化軟件體系的體系結構”[1]。它讓系統構造者用標準的、易于理解的方式建立能夠表達他們想象力的系統藍圖,并提供一種機制以便不同人之間有效地共享交流設計結果[2]。UML是一種面向對象的語言,提供了定義對象和無需修改定義就可以操作對象的方法。數據封裝,繼承和多態,可重用軟件組件等都是面向對象方法的優點。用UML的建模方法,本文給出了面向對象的UDP實現方法。

2 UDP協議實現過程

2.1 理論原理

UDP處于應用層和網絡層之間,提供進程到進程的通信服務。當應用進程有報文要通過UDP發送時,它將這個報文和套接字地址傳遞給UDP。UDP對數據進行處理,加上UDP首部,封裝成UDP報文,然后交給網絡層IP協議處理。當這個報文到達目的主機后,網絡層IP將用戶數據報連同發送端和接收端的IP地址一起傳給接收端UDP處理。接收端UDP使用校驗和對整個用戶數據報進行檢查。若無差錯,則削去UDP首部,將應用數據連同發送端的套接字地址一起交給接收進程[3]。UDP的任務也就是完成UDP報文的封裝和拆裝的過程。

UDP的報文格式如圖1。

UDP數據報的字段有:源端口號(Source Port),是源主機上進程的端口號;目的端口號(Destination Port),是目的主機上進程的端口號;數據長度(Length),它包含UDP數據報的總長度;檢驗和(Checksum),用來檢驗UDP數據報是否出錯;數據(data octets),具體的報文數據。

去復用方式有兩種:使用目的協議端口號的輸入數據報選擇一個隊列,和同時使用源站點和目的站點的協議端口號[4]。本文采用前者,主要考慮在嵌入式系統中不但可以節約存儲資源,而且又能有效地進行復用處理,允許應用程序與多個站點同時通信。

2.2 具體實現

根據UML的經典著作Design patterns :elements of reusable object-oriented software [5]提出的方法和原理,本文定義了接口類和控制類。由于UDP處于網絡層IP和應用層之間,定義兩個接口器。一個是UDP與應用程序進程的接口器UDP-API-er類,負責UDP和應用進程的交互工作。進程到進程的通信,需要有通訊雙方的地址信息和數據。在UDP-API-er類中sourceip屬性表示本地主機地址,dstip屬性表示目的主機地址,srcport屬性表示本地端口號,dstport屬性表示目的端口號,APIbuffer屬性表示應用進程的交給UDP的緩沖區數據。UDP-API-er類還定義了兩個操作,一個是應用進程發送UDP報文請求的Udp_usereq( )操作,另一個是UDP將處理好的數據報文交給應用進程的ToAPI( )操作,如表2所示。

另一個接口類是IP-UDP-Interface類,是UDP和網絡層IP的接口,如表3所示,它主要完成兩個操作, 一個是UDP將封裝好的UDP報文數據交給網絡IP處理的操作IpOutput(),另一個是ipintr()操作,它將來自網絡層IP處理好的數據報傳入給UDP進行處理。

由于在數據的傳輸過程有可能出現錯誤,規定在發送端和接受端都要進行檢驗和計算,以確定數據是否出錯。而UDP檢驗和的計算是UDP在接受數據和發送數據的重要環節,因此定義一個檢驗和計算器Accoutcksum類處理UDP檢驗和的計算。UDP檢驗和的計算是對UDP偽首部進行計算,數據可以通過Readpudp( )操作獲取,沒有定義偽首部的成員變量,只定義了供其他類讀取檢驗和的cksum成員如表4所示。(其詳細的實現見圖4)

對于UDP報文頭的添加,根據User Datagram Protocol文檔[6]UDP數據報頭的格式來定義如表5所示的報文頭添加器Appendudphdr類來實現。sourceipn屬性是網絡中源IP地址, srcportn屬性是網絡中源端口號,dstipn屬性是網絡中目的IP地址, dstportn屬性是網絡中目的端口號,ulenn屬性是UDP數據報長度。由于網絡字節順序和本機字節順序的不同,因此Appendudphdr類定義的屬性值與UDP-API-er類定義的屬性值是不一樣的。該類還定義了設置UDP報文頭的內容的Setudphdr( )操作,Getudph( )操作是從緩沖區中獲取封包的數據。

UDP的封包過程如下:應用進程通過UDP-API-er類將數據和套接字地址交給UDP,UDP中的報文頭添加器Appendudphdr類通過Getudph()操作從接口類中獲取數據信息,并由Setudph()操作設置偽首部報文頭字段;檢驗和計算器通過Readpudp()操作獲取偽首部信息并對數據報進行UDP檢驗和的計算,并將計算結果送給報文頭添加器,報文頭添加器再設置好相應的字段,并通過IpOutput()交給IP-UDP-Interface類。整個發送UDP數據報的過程如圖1所示。

圖1 UDP數據報發送過程序列圖

對于數據的傳入過程,定義一個檢查控制器來完成各種檢查操作,它是一個控制類。具體完成如下三個功能,如圖2所示:

1) 檢查檢驗和是否正確。它讀取檢驗和計算器的計算結果,然后進行判斷,如果不正確則丟棄該報文,正確則進一步處理。

2) 檢查傳入的數據報的目的端口號是否正確。如果在進程控制塊表PCB-Table中找不到傳入的端口號,則表示沒有進程要接受它,發ICMP端口號不可達錯誤報告;如果找到,則該端口號所對應的進程ID為接受進程。

3) 檢查是否為輸入數據報分配輸入隊列。檢查進程控制塊表PCB-Table中該欄的隊列標識號是否小于零,如果不小于零則已經發配輸入隊列,將數據報插入隊列標識號中的隊列中;反之,則還需要PCB-Table為數據報分配輸入隊列才能入隊。

圖2 檢查控制行為狀態圖

如表6所示,檢查控制Checkcontroler類中iscksum用于檢驗和計算器與檢查控制器之間的通信,當檢驗和計算器已經將計算結果發送過來時為true,反之則為 1。操作Getudpbuff()是檢查控制器從輸入緩沖區中獲取所要的數據。Queryport()操作用于從PCB-Table中讀取端口號,以檢查輸入數據報的目的端口號是否正確。ReadQueueID()操作從PCB-Table中讀取輸入隊列標識,以進一步確定下一步操作。

進程啟動時,它從系統請求一個端口號,系統把熟知端口號指派給服務器,把短暫端口號指派給客戶[7]。在進程控制塊表PCB -Table類中有進程ID和端口號port,它們的屬性名稱是processID和port。state屬性記錄進程控制塊表各項使用的情況,如果為IN-USE 則表示該項已經分配給某進程,FREE則表示還未分配使用。queueID為輸入隊列對應的標號,如果是-1表示還沒有為該進程分配輸入隊列,如表7所示。

輸入隊列InputQueue類中,insert()操作將數據報放入相應的隊列中,addqueue()則表示請求從輸入隊列中新分配一個隊列,然后再將數據報插入該隊列,如表8所示。

UDP數據報的接收過程比較復雜。網絡層IP通過IP-UDP-Interface類將數據報交給UDP處理,檢驗和計算器Accoutcksum對其進行檢驗和計算,檢查控制器Checkcontroler查找進程控制塊表PCB-Table對其目的端口檢查,并根據PCB-Table中的隊列分配情況進行相應的操作。整個接收過程如圖3所示。

圖3 UDP數據報接收過程序列圖

此外,由于UDP校驗和的計算是個比較復雜的過程,將它進一步細化命令類,由圖4的三個類來實現。Initialpudp類為檢驗和的計算準備偽首部,Readpudp( )操作獲取所要的數據,Creatpudp()操作把偽首部成員設置成相應的值,其中將udpcksum設置為零。計算的過程和法則由Accumulationcksum類中的Accumulate( )操作來實現,sum和len是計算過程用到的中間變量。最終的結果保存在Finalvalue類的result中。

圖4 UDP檢驗和計算詳細過程

3 結論

本文用UML對UDP協議的實現作了詳細的分析和設計,對內存不太受限的嵌入式系統可以很好的實現。但是,如何處理多繼承、虛基類,以滿足運行時對RAM的需要是個重要的問題;另外,對存儲器的優化,在不影響代碼性能的情況下,如何使代碼被壓縮在較小的存儲空間,減小CPU周期總數;如何避免使用庫函數,減少通用函數的對存儲空間的使用等等一系列優化,仍是一個不斷探索的問題。

參考文獻:

[1] Priestley M.Practical object-oriented design with UML[M].北京:清華大學出版社,2004.

[2] Schmuller J.UML基礎、案例與應用[M].北京:人民郵電出版社,2004.

[3] Forouzan B A,Fegan S C.TCP/IP協議族[M].北京:清華大學出版社,2003.

[4] Comer D E,Stevens D L.用TCP/IP進行網際互連.第2卷:設計、實現和內部構成[M].北京:電子工業出版社,1998.

[5] Gamma E,Helm R,Johnson R,et al.Design patterns :elements of reusable object-oriented software[M].北京:China Machine Press,2002.

[6] Postel J.RFC 768[S].

主站蜘蛛池模板: 中文字幕人成人乱码亚洲电影| 国产精品亚洲天堂| 日韩无码黄色| 国产网友愉拍精品视频| 最新加勒比隔壁人妻| 日韩欧美色综合| 国产成人精品第一区二区| 日本欧美一二三区色视频| 伦精品一区二区三区视频| 67194亚洲无码| 国产小视频免费观看| 蜜臀AV在线播放| 久久精品女人天堂aaa| 国产一区二区精品高清在线观看| 91精品在线视频观看| 丁香五月婷婷激情基地| 人人澡人人爽欧美一区| 国产二级毛片| 亚洲国产天堂久久九九九| 中文字幕伦视频| 无码专区第一页| 高清无码手机在线观看| 国产毛片久久国产| 国产欧美日韩资源在线观看| 亚洲一区无码在线| 日韩a级毛片| 91最新精品视频发布页| 伊人久综合| 秋霞国产在线| 另类综合视频| 国产视频一区二区在线观看 | 毛片基地视频| 久久久久国产一级毛片高清板| 欧美激情福利| 国产1区2区在线观看| 免费一看一级毛片| 欧美一区二区啪啪| 国产精品漂亮美女在线观看| 久久精品人妻中文系列| 久久久噜噜噜久久中文字幕色伊伊| 又大又硬又爽免费视频| 亚洲精品国产精品乱码不卞 | 欧美专区在线观看| 欧美亚洲另类在线观看| 国产精品无码AV中文| 亚洲国产精品无码久久一线| 成人韩免费网站| 国产高清在线精品一区二区三区 | 尤物成AV人片在线观看| 国产精品亚洲精品爽爽| 国产全黄a一级毛片| 中文字幕在线日本| 99re热精品视频国产免费| 国产精品福利社| 91小视频在线观看| 国产人碰人摸人爱免费视频| 99资源在线| 国产丝袜无码一区二区视频| 日韩中文欧美| 香蕉久人久人青草青草| 激情爆乳一区二区| 国产欧美在线视频免费| 国产欧美日韩综合一区在线播放| 国产在线精品人成导航| 欧美怡红院视频一区二区三区| 久久中文字幕2021精品| 热久久综合这里只有精品电影| 日韩成人午夜| av在线无码浏览| 午夜毛片免费观看视频 | 2021天堂在线亚洲精品专区| 国产成人综合久久精品尤物| 91毛片网| 国产亚洲精品yxsp| 成人中文在线| 日本a级免费| 国产亚洲视频中文字幕视频| 久久久91人妻无码精品蜜桃HD | 国产人妖视频一区在线观看| 婷婷激情亚洲| 美女免费精品高清毛片在线视| 精品一区二区三区自慰喷水|