摘要:嵌入式系統(tǒng)的Internet網(wǎng)絡(luò)化的研究與應(yīng)用是近幾年來嵌入式應(yīng)用領(lǐng)域的一個(gè)研究熱點(diǎn)。該文針對(duì)應(yīng)用廣泛的ARM7系列的處理器為核心的嵌入式系統(tǒng),對(duì)網(wǎng)絡(luò)層協(xié)議進(jìn)行了研究分析,提出了基于嵌入式封裝、分用、重組方案、附屬協(xié)議ICMP的回顯應(yīng)答功能等方案,使之適應(yīng)嵌入式系統(tǒng)。
關(guān)鍵詞:嵌入式系統(tǒng);網(wǎng)絡(luò)層協(xié)議;ICMP協(xié)議
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)24-1168-02
Research on TCP/IP Network Layer Protocol Based on Embedded System
XIA Zhong-hua, ZHANG Dong-liang
(Qinghuangdao Institute of Technology,Qinhuangdao 066100,China)
Abstract: In recent years, research on connecting embedded system with Internet has become one of the focuses in applications of embedded system. This paper design a light TCP/IP protocol stack suitable for embedded system with ARM7 series MCU ,Embedded system is close to production and life of human being. Analyzed the Network Layer protocol and presented embedded encapsulation, demultiplexing, recomposement and the Echo Relply function of affiliated ICMP.
Key words: embedded system;Network Layer protocol;ICMP protocol
1 引言
嵌入式系統(tǒng)與TCP/IP網(wǎng)絡(luò)的互聯(lián),這一技術(shù)在許多領(lǐng)域得到廣泛的應(yīng)用。但由于網(wǎng)絡(luò)協(xié)議的復(fù)雜性與嵌入式系統(tǒng)的處理器相對(duì)簡(jiǎn)單之間的矛盾,這就要求簡(jiǎn)化TCP/IP協(xié)議[1]。
嵌入式TCP/IP協(xié)議[2]即是以滿足嵌入式系統(tǒng)的實(shí)際需要為目的的這一指導(dǎo)思想出發(fā),建立在嵌入式Internet理論的基礎(chǔ)上,通過對(duì)龐大、功能齊全的TCP/IP協(xié)議棧的研究,對(duì)標(biāo)準(zhǔn)的TCP/IP協(xié)議進(jìn)行了一定的取舍和優(yōu)化,從而制定出一套簡(jiǎn)單的、適合于嵌入式系統(tǒng)的并且能完成相應(yīng)網(wǎng)絡(luò)功能的協(xié)議棧。
本文針對(duì)應(yīng)用廣泛的ARM7系列的處理器為核心的嵌入式系統(tǒng)[3],對(duì)TCP/IP網(wǎng)絡(luò)層協(xié)議進(jìn)行了研究分析,提出了基于嵌入式封裝、分用、重組方案、附屬協(xié)議ICMP的回顯應(yīng)答功能等方案,使之適應(yīng)嵌入式系統(tǒng)。
2 網(wǎng)絡(luò)層協(xié)議簡(jiǎn)介
IP協(xié)議[4]是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報(bào)格式傳輸。IP協(xié)議提供的是一種不可靠、無連接的服務(wù)。不可靠(unreliable)的意思是它不能保證IP數(shù)據(jù)報(bào)能成功地到達(dá)目的地。IP僅提供最好的傳輸服務(wù)。無連接(connectionless)這個(gè)術(shù)語(yǔ)的意思是IP并不維護(hù)任何關(guān)于后續(xù)數(shù)據(jù)報(bào)的狀態(tài)信息。每個(gè)數(shù)據(jù)報(bào)的處理是相互獨(dú)立的。這也說明,IP數(shù)據(jù)報(bào)可以不按發(fā)送順序接收.如果一信源向相同的信宿發(fā)送兩個(gè)連續(xù)的數(shù)據(jù)報(bào)(先是A,然后是B),每個(gè)數(shù)據(jù)報(bào)都是獨(dú)立地進(jìn)行路由選擇,可能選擇不同的路線,因此B可能在A到達(dá)之前先到達(dá)。IP協(xié)議最基本的功能是路由選擇、分片和重組。
3 網(wǎng)絡(luò)層的嵌入式研究
3.1 路由功能
常規(guī)的實(shí)現(xiàn)要考慮較多的問題:協(xié)議必須具有通用性,無論是在網(wǎng)絡(luò)中的一臺(tái)主機(jī),還是在連接不同網(wǎng)絡(luò)的網(wǎng)關(guān)上都要運(yùn)行。
由于本設(shè)計(jì)的目的是實(shí)現(xiàn)一個(gè)嵌入式WEB服務(wù)器應(yīng)用,而不是做嵌入式網(wǎng)關(guān)、路由器,所以在這里,裁減掉路由功能。有關(guān)路由的問題均不欲考慮。一切都交給默認(rèn)網(wǎng)關(guān)去處理。這樣做,簡(jiǎn)化了IP協(xié)議,節(jié)約嵌入式系統(tǒng)資源。
3.2 分片和重組
對(duì)于大小超過網(wǎng)絡(luò)硬件所允許的最大值(MTU)的數(shù)據(jù)報(bào)的發(fā)送,IP有個(gè)簡(jiǎn)單的解決辦法,即將這些數(shù)據(jù)報(bào)在傳輸時(shí)進(jìn)行分片,然后進(jìn)行重組。但是分片重組會(huì)付出明顯的性能代價(jià),因?yàn)樵诎阉鼈冎匦陆M裝起來的時(shí)候會(huì)占用大量的空間,這在嵌入式系統(tǒng)中是一個(gè)不小的負(fù)擔(dān)[5]。
所以本設(shè)計(jì)中,我們?cè)O(shè)計(jì)發(fā)送的數(shù)據(jù)報(bào)文小于網(wǎng)絡(luò)硬件的最大值,這樣就可以避免分片。這樣可以簡(jiǎn)化代碼,提高效率。但是不支持重組,遠(yuǎn)程客戶端發(fā)送的數(shù)據(jù)報(bào)如果在中間路由時(shí)候進(jìn)行了分片,我們將無法處理,所以本設(shè)計(jì)中實(shí)現(xiàn)了重組的功能。
3.3 IP服務(wù)類型
本設(shè)計(jì)發(fā)送IP數(shù)據(jù)報(bào)時(shí),將該字段設(shè)置為0,表示該數(shù)據(jù)報(bào)為正常的優(yōu)先級(jí)。在接收IP數(shù)據(jù)報(bào)時(shí),將忽略該信息,實(shí)際上大部分路由器都是這樣做的[6]。
3.4 選項(xiàng)字段的處理
當(dāng)接收到的IP數(shù)據(jù)報(bào)含選項(xiàng)字段時(shí),處理該數(shù)據(jù)報(bào)時(shí),將直接跳過該字段。這些選項(xiàng)的作用是允許更嚴(yán)格地控制路由過程和增加安全性,所有這些信息可以被忽略,并不會(huì)引起錯(cuò)誤[7]。
3.5 嵌入式IP數(shù)據(jù)結(jié)構(gòu)
協(xié)議棧定義為512個(gè)字節(jié)的緩沖區(qū)。發(fā)送和接收的數(shù)據(jù)包公用一個(gè)緩沖區(qū),這樣的好處是不但可以節(jié)約存儲(chǔ)資源,還可以實(shí)現(xiàn)數(shù)據(jù)包在協(xié)議棧中的“零拷貝”[8]。
3.6 附屬協(xié)議的處理
網(wǎng)絡(luò)層除了IP協(xié)議外,一般我們把ICMP和IGMP歸到這一層[9]。本設(shè)計(jì)沒有實(shí)現(xiàn)廣播和多播的功能,ICMP報(bào)文也只是實(shí)現(xiàn)了對(duì)ping報(bào)文的回顯應(yīng)答功能——既對(duì)ping報(bào)文回顯請(qǐng)求分析,給出ping報(bào)文的回顯應(yīng)答。
所有報(bào)文的前4個(gè)字節(jié)都是一樣的,但剩下的其它字節(jié)則互不相同。ICMP報(bào)文是在IP數(shù)據(jù)報(bào)內(nèi)部傳輸?shù)模鐖D1所示。報(bào)文格式,如圖2所示。

圖1 ICMP封裝在IP數(shù)據(jù)報(bào)內(nèi)部

圖2 ICMP報(bào)文
Ping 程序可以測(cè)試一臺(tái)主機(jī)是否可以到達(dá)[10]。程序發(fā)送一份ICMP回顯請(qǐng)求報(bào)文給主機(jī),并等待返回ICMP回顯應(yīng)答。一般說來,如果不能Ping到某主機(jī),那么就不能Telnet或者FTP到那臺(tái)主機(jī)。反過來,如果不能Telnet到某臺(tái)主機(jī),那么通常可以用Ping程序來確定問題出在哪里。Ping程序還能測(cè)到這臺(tái)主機(jī)的往返時(shí)間,以表示該主機(jī)離我們有“多遠(yuǎn)”。ICMP回顯請(qǐng)求和回顯應(yīng)答格式報(bào)文如圖3所示。

圖3 ICMP回顯請(qǐng)求和回顯應(yīng)答報(bào)文格式
4 結(jié)論
本文在分析了嵌入式系統(tǒng)和TCP/IP網(wǎng)絡(luò)層協(xié)議的基礎(chǔ)上,提出了實(shí)現(xiàn)嵌入式TCP/IP網(wǎng)絡(luò)層協(xié)議的方法。對(duì)網(wǎng)絡(luò)層協(xié)議的路由功能、分片和重組、附屬協(xié)議的處理等方面進(jìn)行了針對(duì)性的改進(jìn),使之成為適應(yīng)嵌入式系統(tǒng)的網(wǎng)絡(luò)層協(xié)議。
參考文獻(xiàn):
[1] 王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)[M].北京:清華大學(xué)出版社,2003:1-30.
[2] 付宏,袁兵.嵌入式Internet應(yīng)用研究[J].計(jì)算機(jī)工程與應(yīng)用,2003,30:180-185.
[3] 陳瑾,羅敏,張煥國(guó).入侵檢測(cè)技術(shù)概述[J].計(jì)算機(jī)工程與應(yīng)用,2004(2):133-136.
[4] 李陽(yáng)明,齊志強(qiáng),師麗彩.嵌入式Internet的應(yīng)用[J].電子技術(shù),2005,5:62-64.
[5] 張懿慧,陳泉林.源碼公開的TCP/IP協(xié)議棧在遠(yuǎn)程監(jiān)測(cè)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004(11):61-64.
[6] Bhatia Sapan, Consel Charles, Le Meur, et al. Automatic Specialization of Protocol Stacks in operating System Kernels[C].Proceedings -29th Annual IEEE International Conference on Local Computer Networks LCN 2004.Tampa Fl United States,2004:152-15.
[7] Dave R N,Bhaswan K.Adaptive fuzzy c-shells clustering and detection of ellipses[J].IEEE Trans,on Neural Networks,1992,3(5):643-662.
[8] Timm C R,Kruse R.A modification to improve possibilistic fuzzy cluster analysis[C].Proceedings of the IEEE Int Conf on Fuzzy Systems,Honululu,2002.
[9] 李善平,劉文峰,王煥龍,等.Linux與嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,2003:266-267.
[10] 陳渝,李明,楊曄.源碼開放的嵌入式系統(tǒng)軟件分析與實(shí)踐——基于SkyEye和ARM開發(fā)[M].北京:北京航空航天大學(xué)出版社,2004:3-13.