基于EEM 的網(wǎng)絡(luò)智能卡研究
文章出處:http://www.fang1.net 作者:吳俊軍,周方圓 人氣: 發(fā)表時(shí)間:2011年10月07日
1 引言
隨著Internet的發(fā)展和普及,越來越多的電子設(shè)備可以接入并通過Internet獲取資源和提供服務(wù)。而互聯(lián)網(wǎng)上欺騙、竊聽、病毒、非法入侵等事件的數(shù)量和破壞程度不斷增加,使得網(wǎng)絡(luò)安全越來越來受到重視。智能卡因其可安全存儲(chǔ)秘密信息和安全計(jì)算可以在其內(nèi)部安全完成的特點(diǎn),在信息安全領(lǐng)域得到了廣泛的應(yīng)用。將智能卡同網(wǎng)絡(luò)相結(jié)合無疑可以在增強(qiáng)網(wǎng)絡(luò)安全的同時(shí),使在智能卡上實(shí)現(xiàn)創(chuàng)新應(yīng)用成為可能,因此網(wǎng)絡(luò)智能卡應(yīng)運(yùn)而生。
網(wǎng)絡(luò)智能卡是一種可以通過標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議與主機(jī)或者遠(yuǎn)程計(jì)算機(jī)進(jìn)行通訊的智能卡。由于現(xiàn)有智能卡均沒有45或光纖等以太網(wǎng)常用的物理接口,網(wǎng)絡(luò)智能卡需要通過計(jì)算機(jī)或者其它終端來接入Intemet。同普通智能卡相比,網(wǎng)絡(luò)智能卡支持標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議——TCP/IP協(xié)議。通過對(duì)TCP/IP協(xié)議的支持,可省略傳統(tǒng)智能卡系統(tǒng)中較為復(fù)雜的中間協(xié)議轉(zhuǎn)換部件,從而大大簡(jiǎn)化智能卡系統(tǒng)的結(jié)構(gòu),可以在縮減成本的同時(shí),有效提高智能卡系統(tǒng)的安全性和響應(yīng)速度。但是,由于智能卡的內(nèi)存等硬件資源非常緊張,而且其基于ISO 7816的接口對(duì)于數(shù)據(jù)傳輸速度也是一個(gè)很大的約束,如何在智能卡內(nèi)部實(shí)現(xiàn)高效的TCP/IP協(xié)議棧的同時(shí)解決數(shù)據(jù)接口問題,是網(wǎng)絡(luò)智能卡實(shí)現(xiàn)的關(guān)鍵。
2 網(wǎng)絡(luò)智能卡研究現(xiàn)狀
雖然智能卡技術(shù)的發(fā)展非常迅速,但它的通訊協(xié)議大體上并未改變,仍然采用傳統(tǒng)的ISO 7816協(xié)議。由于ISO7816協(xié)議的限制,其在速度上與主流的因特網(wǎng)協(xié)議TCP/IP不能很好匹配,因此智能卡在網(wǎng)絡(luò)領(lǐng)域方面的應(yīng)用受到很大限制。
為了實(shí)現(xiàn)智能卡和Internet的連接,研究人員做了大量的工作,實(shí)現(xiàn)了許多網(wǎng)絡(luò)智能卡的模型和實(shí)例,如UrienP的iSimplify!、密歇根大學(xué)Rees J和Honeyman P的Webcard[ 、微軟的WebCamSIM、Axalto和Gemplus公司的網(wǎng)絡(luò)智能卡等。
按照有無內(nèi)嵌的TCP/IP協(xié)議??梢詫⒛壳暗木W(wǎng)絡(luò)智能卡模型分為兩大類。一類是無內(nèi)嵌TCP/IP協(xié)議棧的網(wǎng)絡(luò)智能卡模型,如iSimplify!和WebSIM_3]。此方案的特點(diǎn)是不在卡內(nèi)實(shí)現(xiàn)TCP/IP協(xié)議棧,可以節(jié)省卡內(nèi)資源的消耗。不過由于需要主機(jī)實(shí)現(xiàn)協(xié)議的轉(zhuǎn)換,此類網(wǎng)絡(luò)智能卡均需要在主機(jī)上安裝中間件來進(jìn)行通訊。另一類是內(nèi)嵌TCP/IP協(xié)議棧的網(wǎng)絡(luò)智能卡模型,如Webcard、Axalto、Gieseeke& Devrient、Oberthur Card Systems等。與前面的模型相比,此類模型需要消耗更多的存儲(chǔ)空間(RAM和EEPR0M)。由于采用標(biāo)準(zhǔn)的TCP/IP協(xié)議,此類網(wǎng)絡(luò)智能卡不需要在主機(jī)上安裝中間件來進(jìn)行協(xié)議的轉(zhuǎn)換,具有較好的易用性。
隨著智能卡技術(shù)的發(fā)展,智能卡的內(nèi)存容量也越來越大,內(nèi)嵌TCP//P協(xié)議棧是網(wǎng)絡(luò)智能卡的發(fā)展趨勢(shì)。當(dāng)前采用內(nèi)嵌TCP/IP協(xié)議棧的實(shí)現(xiàn)方式所消耗的系統(tǒng)資源比較巨大,這使網(wǎng)絡(luò)智能卡在進(jìn)行網(wǎng)絡(luò)服務(wù)時(shí)性能非常低下。比如,密歇根大學(xué)CITI的Webcard的實(shí)際傳輸速率只有130字節(jié)每秒。
本文針對(duì)這一問題,提出使用基于EEM 的網(wǎng)絡(luò)智能卡模型并在卡內(nèi)實(shí)現(xiàn)TCP/IP協(xié)議棧,通過簡(jiǎn)約化非必要協(xié)議及復(fù)雜協(xié)議對(duì)TCP/IP協(xié)議棧進(jìn)行了有效的空間和時(shí)間優(yōu)化,同時(shí)使用基于鏈?zhǔn)骄彌_區(qū)的設(shè)計(jì)進(jìn)一步提升了網(wǎng)絡(luò)智能卡的空間效率和執(zhí)行效率。
3 基于EEM 的網(wǎng)絡(luò)智能卡模型
EEM(Ethernet Emulation Model,簡(jiǎn)稱EEM)是基于USB總線的以太網(wǎng)仿真模型,目的在于簡(jiǎn)單、高效地在USB總線上傳輸以太網(wǎng)幀。USB接口因其高速、簡(jiǎn)單、即插即用等良好的特性,廣泛使用于PC及各種終端設(shè)備上。當(dāng)前USB接口已經(jīng)在高端智能卡芯片上成了一種必備的配置,基于EEM模型的網(wǎng)絡(luò)智能卡不僅可以實(shí)現(xiàn)高速的數(shù)據(jù)傳輸,從而從接口上解決了數(shù)據(jù)傳輸?shù)钠款i問題;同時(shí),基于EEM 可以不用過多考慮以太網(wǎng)幀的實(shí)現(xiàn)細(xì)節(jié),有利于網(wǎng)絡(luò)智能卡的快速部署。
基于EEM的網(wǎng)絡(luò)智能卡EEM-NSC是一個(gè)可在邏輯上獨(dú)立存在的節(jié)點(diǎn)。在其內(nèi)部實(shí)現(xiàn)TCP/IP協(xié)議棧,通過EEM協(xié)議同H0ST進(jìn)行數(shù)據(jù)包的通信,從而可使應(yīng)用程序通過高層的應(yīng)用層協(xié)議來訪問智能卡內(nèi)部的資源,同時(shí)結(jié)合智能卡天生所具備的安全性,極大方便了安全應(yīng)用程序的開發(fā)?;贓EM的網(wǎng)絡(luò)智能卡的框架如圖1所示。
該模型包括主機(jī)和網(wǎng)絡(luò)智能卡兩個(gè)部分。主機(jī)是連接網(wǎng)絡(luò)智能卡和Internet的計(jì)算機(jī)或終端設(shè)備。其工作機(jī)理如下所述:首先,主機(jī)將目的主機(jī)為EEM-NSC的IP數(shù)據(jù)包路由給主機(jī)中的USB虛擬網(wǎng)卡,同時(shí)將USB虛擬網(wǎng)卡接收到的IP包發(fā)送至Internet;接著,USB虛擬網(wǎng)卡將待發(fā)送的IP數(shù)據(jù)包依次打包為以太網(wǎng)數(shù)據(jù)包、EEM數(shù)據(jù)包、USB數(shù)據(jù)包,并將接收到的USB數(shù)據(jù)包依次解包為EEM數(shù)據(jù)包、以太網(wǎng)數(shù)據(jù)包、IP數(shù)據(jù)包;最后,主機(jī)通過USB總線完成與EEM網(wǎng)絡(luò)智能卡之間的USB數(shù)據(jù)包的傳遞。
而EEM網(wǎng)絡(luò)智能卡是EEM網(wǎng)絡(luò)智能卡框架的主體。
主要包括EEM接口、TCP/IP協(xié)議棧、智能卡操作系統(tǒng)、網(wǎng)絡(luò)應(yīng)用程序四個(gè)部分。EEM接El對(duì)接收到的USB數(shù)據(jù)包進(jìn)行校驗(yàn),將USB數(shù)據(jù)包依次解包為EEM數(shù)據(jù)包、以太網(wǎng)數(shù)據(jù)包。同時(shí),將TCP/IP協(xié)議棧傳送的以太網(wǎng)包打包為EEM數(shù)據(jù)包、USB數(shù)據(jù)包,通過USB總線傳送至主機(jī)。TCP/IP協(xié)議棧是EEM 網(wǎng)絡(luò)智能卡模型的核心,用于實(shí)現(xiàn)TCP/IP層的連接、認(rèn)證、數(shù)據(jù)傳輸、數(shù)據(jù)校驗(yàn)等工作。該模塊為智能卡操作系統(tǒng)提供可靠的數(shù)據(jù)傳輸。智能卡操作系統(tǒng)屏蔽底層的數(shù)據(jù)交換,為網(wǎng)絡(luò)應(yīng)用程序提供數(shù)據(jù)傳輸?shù)慕涌?。網(wǎng)絡(luò)應(yīng)用程序?yàn)檫\(yùn)行在EEM 網(wǎng)絡(luò)智能卡上的提供網(wǎng)絡(luò)服務(wù)的應(yīng)用程序,這些程序可以通過智能卡操作系統(tǒng)提供的API實(shí)現(xiàn)安全網(wǎng)絡(luò)應(yīng)用。
相比傳統(tǒng)智能卡,EEM-NSC有諸多優(yōu)勢(shì)。協(xié)議方面。采用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議——TCP/IP協(xié)議,消除了傳統(tǒng)智能卡因協(xié)議不兼容需要進(jìn)行協(xié)議轉(zhuǎn)換的問題;接I:1方面,采用目前普遍使用的USB接口,不需要讀卡器等硬件中間件。不過,任何外設(shè)均需要驅(qū)動(dòng)程序。在附有EEM 驅(qū)動(dòng)的主機(jī)上,EEM-NSC無需任何軟硬中間件即可實(shí)現(xiàn)互聯(lián)網(wǎng)接入。
目前,微軟、蘋果等操作系統(tǒng)供應(yīng)商都紛紛表示將在其下一代操作系統(tǒng)中集成EEM驅(qū)動(dòng)。
4 面向智能卡的TCP/IP協(xié)議棧
智能卡的處理能力和存儲(chǔ)資源都相當(dāng)有限,直接使用標(biāo)準(zhǔn)的TCP/IP協(xié)議棧是不合適的。為了在實(shí)現(xiàn)相應(yīng)的網(wǎng)絡(luò)功能的同時(shí)盡量縮減資源的消耗,必須依據(jù)智能卡的特點(diǎn)有針對(duì)性地對(duì)TCP/IP協(xié)議棧的結(jié)構(gòu)和運(yùn)行機(jī)制進(jìn)行空間和時(shí)間上的優(yōu)化。
4.1 優(yōu)化策略
本文主要從兩方面對(duì)智能卡TCP/IP協(xié)議棧進(jìn)行優(yōu)化:(1)對(duì)TCP/IP協(xié)議棧的代碼進(jìn)行裁剪,保證正常使用的同時(shí)有效地縮減代碼量,減少TCP/IP協(xié)議棧本身所占的內(nèi)存空間,即空間上的優(yōu)化;(2)采用鏈?zhǔn)骄彺婧土憧截悪C(jī)制,減少RAM 的消耗及拷貝數(shù)據(jù)帶來的系統(tǒng)開銷,從而提高TCP/IP協(xié)議棧的運(yùn)行速度,即時(shí)間上的優(yōu)化。完整實(shí)現(xiàn)TCP/IP協(xié)議棧的代碼量為70KB~150KB,對(duì)于資源有限的智能卡來說是不能承受之重。在網(wǎng)絡(luò)智能卡中,我們只需要實(shí)現(xiàn)可靠的數(shù)據(jù)傳輸和簡(jiǎn)單的地址解析。傳輸層協(xié)議包括TCP和UDP兩種協(xié)議。TCP提供一種面向連接的、可靠的字節(jié)流服務(wù),具有較高的安全性和穩(wěn)定性。UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的傳輸層協(xié)議,提供不可靠的服務(wù)。兩者只需實(shí)現(xiàn)其-lp可。智能卡對(duì)可靠性及安全性要求較高,若選擇UDP,則需在應(yīng)用程序中設(shè)計(jì)相應(yīng)的機(jī)制來保證數(shù)據(jù)的正確性和完整性,不僅增加了程序設(shè)計(jì)的復(fù)雜度,而且重復(fù)設(shè)計(jì)將造成代碼冗余,浪費(fèi)空間。因此,在網(wǎng)絡(luò)智能卡中,我們選用較為復(fù)雜但具有較高安全性和穩(wěn)定性的TCP協(xié)議。
網(wǎng)絡(luò)層協(xié)議包括IP、ICMP和IGMP協(xié)議。IP協(xié)議是網(wǎng)絡(luò)層上的主要協(xié)議,所有的TCP/IP數(shù)據(jù)包均通過IP協(xié)議在互聯(lián)網(wǎng)上進(jìn)行傳播,是TCP/IP協(xié)議的核心,必須予以實(shí)現(xiàn)。ICMP是IP協(xié)議的附屬協(xié)議。IP層用它來與其他主機(jī)或路由交換錯(cuò)誤報(bào)文和其他重要信息。網(wǎng)絡(luò)智能卡只需要進(jìn)行簡(jiǎn)單的數(shù)據(jù)傳輸即可,因此ICMP協(xié)議的大多內(nèi)容可以不予以實(shí)現(xiàn)。為了方便測(cè)試傳輸層是否正常,實(shí)現(xiàn)ICMP協(xié)議中的ping應(yīng)答即可。ICMP用于把一個(gè)UDP包多播到多個(gè)主機(jī)。由于選用TCP協(xié)議作為傳輸層協(xié)議,所以ICMP不予實(shí)現(xiàn)。
數(shù)據(jù)鏈路層協(xié)議包括ARP和RARP協(xié)議。以太網(wǎng)上的數(shù)據(jù)幀傳輸是通過MAC地址來進(jìn)行識(shí)別的,主機(jī)需要通過ARP協(xié)議建立IP地址和MAC地址的動(dòng)態(tài)映射,所以ARP協(xié)議必須實(shí)現(xiàn)。RARP為逆向地址解析協(xié)議。無法存儲(chǔ)IP地址的主機(jī)可以通過該協(xié)議廣播MAC反向獲取IP,主要用于無盤工作站,在網(wǎng)絡(luò)智能卡中可以不予實(shí)現(xiàn)。
由于采用EEM協(xié)議,EEM-NSC的物理層及以太網(wǎng)數(shù)據(jù)幀的傳輸在EEM規(guī)范和USB規(guī)范中有詳細(xì)描述,本文不再贅述。裁剪后的TCP/IP協(xié)議棧如圖2所示。
4.2 基于EEM 的TCP/IP協(xié)議棧實(shí)現(xiàn)
依據(jù)以上優(yōu)化策略,分別對(duì)ARP協(xié)議、IP協(xié)議和TCP協(xié)議模塊進(jìn)行相應(yīng)的優(yōu)化。首先是ARP協(xié)議模塊的優(yōu)化。當(dāng)一主機(jī)把以太網(wǎng)數(shù)據(jù)幀發(fā)送到位于同一局域網(wǎng)上的另一臺(tái)主機(jī)時(shí),是根據(jù)48 bit的以太網(wǎng)地址來確定目的接口的l4J。ARP實(shí)現(xiàn)了32bit IP地址和48bit以太網(wǎng)地址之間的轉(zhuǎn)換。具體過程為:源主機(jī)廣播名為ARP請(qǐng)求的以太網(wǎng)幀。其中,ARP應(yīng)答包內(nèi)包含源主機(jī)的IP地址、MAC地址及目的主機(jī)的IP。目的主機(jī)收到ARP廣播報(bào)文后,識(shí)別出這是發(fā)送端在詢問它的IP地址,于是發(fā)送一個(gè)ARP應(yīng)答。這個(gè)應(yīng)答包含IP地址及對(duì)應(yīng)的MAC地址。收到ARP應(yīng)答后即可進(jìn)行IP數(shù)據(jù)包的傳輸。因?yàn)镋EM—NSC工作時(shí)只是被動(dòng)地處理應(yīng)答,而且同時(shí)處理的請(qǐng)求不會(huì)太多,因而可以對(duì)ARP協(xié)議進(jìn)行簡(jiǎn)化??梢远x一個(gè)如圖3所示的固定長(zhǎng)度的結(jié)構(gòu)數(shù)組。
在此條件下,EEM-NSC不主動(dòng)發(fā)送ARP請(qǐng)求。當(dāng)收到主機(jī)請(qǐng)求時(shí)發(fā)送應(yīng)答,并搜索arp—cache數(shù)組里active不為True的位置。將主機(jī)請(qǐng)求包里的主機(jī)IP地址和物理
地址存人數(shù)組arp—cache中,并將active設(shè)置為True。EEM-NSC通過查找數(shù)組arp—cache獲得MAC地址并與發(fā)出請(qǐng)求的主機(jī)進(jìn)行通訊。當(dāng)通訊結(jié)束后將該主機(jī)對(duì)應(yīng)的記錄的active屬性設(shè)置為False。簡(jiǎn)化后的ARP協(xié)議只實(shí)現(xiàn)了ARP響應(yīng),并且將計(jì)算機(jī)中常用的雙向鏈表結(jié)構(gòu)的arp—cache改為線性數(shù)組結(jié)構(gòu)。不僅可以節(jié)約存儲(chǔ)窄間,而且具有較快的查找速度。
然后是IP協(xié)議模塊的優(yōu)化。IP協(xié)議是網(wǎng)絡(luò)層的主要協(xié)議,它負(fù)責(zé)為傳輸層提供無連接的數(shù)據(jù)分組傳送服務(wù),是TCP/IP協(xié)議棧的核心。EEM-NSC作為一個(gè)單純的嵌入式服務(wù)器,不需要實(shí)現(xiàn)IP層中的路由功能,當(dāng)以太網(wǎng)數(shù)據(jù)包中的IP地址跟本機(jī)IP不匹配時(shí)直接丟棄該以太網(wǎng)數(shù)據(jù)包即可。發(fā)送數(shù)據(jù)時(shí)通過((destip locip)&locmask)=一0是否成立直接判斷出目的地址是否在本地子網(wǎng)內(nèi),若是則直接發(fā)送.否則將數(shù)據(jù)包發(fā)送給默認(rèn)網(wǎng)關(guān)。
另外,標(biāo)準(zhǔn)IP協(xié)議具有數(shù)據(jù)包的分段和重組功能。數(shù)據(jù)包的分段和重組校 復(fù)雜,會(huì)帶來較大的系統(tǒng)開銷。可根據(jù)EEM-NSC的具體應(yīng)用選擇性地實(shí)現(xiàn)IP協(xié)議的分段重組機(jī)制。例如,Web服務(wù)應(yīng)用時(shí),請(qǐng)求數(shù)據(jù)包較小,發(fā)送數(shù)據(jù)包大,只實(shí)現(xiàn)分段機(jī)制即可;身份驗(yàn)證、網(wǎng)絡(luò)授權(quán)應(yīng)用發(fā)送、接受數(shù)據(jù)量都很小,分段重組呵均不實(shí)現(xiàn)。這樣,可在保證正常使用的前提下有效減少IP協(xié)議的代碼量。
最后是TCP協(xié)議模塊的優(yōu)化。TCP是一種面向連接的協(xié)議,無論哪一方向另一方發(fā)送數(shù)據(jù)之前,都必須先在雙方之間建立一條連接。TCP協(xié)議在數(shù)據(jù)傳輸?shù)倪^程能夠通過確認(rèn)應(yīng)答機(jī)制來保證數(shù)據(jù)的可靠傳輸。TCP模塊的優(yōu)化主要從兩個(gè)方面著手:(1)刪除TCP狀態(tài)機(jī)中不必要的狀態(tài);(2)簡(jiǎn)化TCP的數(shù)據(jù)傳輸機(jī)制。
EEM-NSC運(yùn)行的均是服務(wù)器端的應(yīng)用,不需要主動(dòng)向其它主機(jī)發(fā)出請(qǐng)求。因此,在建立連接過程中,EEMNSC只需保留被動(dòng)打開的連接狀態(tài),SYN—SENT狀態(tài)可以省略。當(dāng)TCP協(xié)議被調(diào)用時(shí),讓TCP協(xié)議直接處于LISTEN狀態(tài)來監(jiān)聽客戶端的連接請(qǐng)求,傳輸完數(shù)據(jù)后主動(dòng)斷開連接,這樣可以及時(shí)地釋放套接字,節(jié)約系統(tǒng)資源。
在計(jì)算資源和存儲(chǔ)資源充足的情況下,TCP/IP協(xié)議棧均采用滑動(dòng)窗口協(xié)議即多個(gè)TCP包的發(fā)送、確認(rèn)、重發(fā)同時(shí)進(jìn)行。數(shù)據(jù)量不大時(shí)可以采用“發(fā)送一停止一等待一確認(rèn)一發(fā)送”的方式。不實(shí)現(xiàn)滑動(dòng)窗口協(xié)議,TCP協(xié)議每次只發(fā)送一個(gè)數(shù)據(jù)包,等待先前的數(shù)據(jù)包被確認(rèn)以后再繼續(xù)發(fā)送。簡(jiǎn)化后的TCP協(xié)議可以在最少計(jì)算資源和存儲(chǔ)資源消耗的前提下完成被動(dòng)連接和正常的數(shù)據(jù)傳輸。
4.3 基于緩沖區(qū)的數(shù)據(jù)交換
EEM-NSC的緩沖區(qū)是指其I/O接口和各層之間進(jìn)行數(shù)據(jù)交換時(shí)使用的臨時(shí)存儲(chǔ)區(qū)域。緩沖區(qū)的設(shè)計(jì)直接決定網(wǎng)絡(luò)智能卡的吞吐速度及整體性能。
EEM-NSC采用鏈表來存儲(chǔ)需要輸入輸出的數(shù)據(jù),這種機(jī)制被用于各種BSD風(fēng)格的TCP/IP的實(shí)現(xiàn)以及一些嵌入式的開發(fā)中。
根據(jù)局部性原理,在前面幾條指令中使用頻繁的頁面很可能在后面的幾條指令中也頻繁使用。反過來說,已經(jīng)很久沒有使用的頁面很可能在未來較長(zhǎng)的一段時(shí)間內(nèi)也不會(huì)被用到。因此,我們?cè)O(shè)計(jì)緩沖區(qū)時(shí),找到最近最少使用的那個(gè)頁面調(diào)出內(nèi)存即可。EEM 網(wǎng)絡(luò)智能卡鏈?zhǔn)骄彌_區(qū)采用數(shù)組與鏈表相結(jié)合的結(jié)構(gòu),不僅可以有效地節(jié)約空間,而且擁有較快的查詢速度,其結(jié)構(gòu)如圖4所示。
緩沖區(qū)工作流程分為初始化、數(shù)據(jù)輸人和數(shù)據(jù)輸出。在緩沖區(qū)初始化時(shí),創(chuàng)建數(shù)組index—tables[],并且設(shè)置所有元素的used屬性為False,tmier及l(fā)ength屬性為0,data屬性為null。在數(shù)據(jù)輸入時(shí),查找緩沖Ⅸ中最少使用的頁面,即used為False,且timer值最大的數(shù)據(jù)頭,分配空問并將得到的指針值賦給Heade~‘.data,將數(shù)據(jù)寫入Header.data指向的內(nèi)存空間,設(shè)置Header.1ength為數(shù)據(jù)長(zhǎng)度、Header.used的值為True,Header.timer值為0,將數(shù)組中其它所有元素的timer屬性置1。在數(shù)據(jù)輸出階段,根據(jù)數(shù)據(jù)坐標(biāo)z獲取數(shù)據(jù)指針index—table[x].data,取出數(shù)據(jù),釋放數(shù)據(jù)指針?biāo)傅膬?nèi)存空間,設(shè)置數(shù)據(jù)頭的used屬性為False,length屬性為0,data屬性為null。
N個(gè)長(zhǎng)度為L(zhǎng) n 的數(shù)據(jù)包存放在數(shù)組中需要的空間如Mem array=N*Max(Ln),而采用基于EEM 的鏈?zhǔn)骄彌_區(qū)的方式需要的空間。例如,長(zhǎng)度分別為71、217、52、255、106、59、148、215、124、146的10個(gè)數(shù)據(jù)包Mem array= 255*10=2 550B,MemEEM=1O*16+1 393=1 553B。顯然,采用EEM-N8(2的鏈?zhǔn)骄彌_區(qū)需要的空間只有數(shù)組的61 。在時(shí)間上,查找n個(gè)長(zhǎng)度的鏈表的時(shí)間復(fù)雜度為O(n),查找EEM-NSC的鏈?zhǔn)骄彌_區(qū)的時(shí)間復(fù)雜度為O(1)。
5 結(jié)束語
本文所論述的基于EEM 的網(wǎng)絡(luò)智能卡模型及相應(yīng)機(jī)制已經(jīng)在中興公司的智能卡芯片Zi1221上實(shí)現(xiàn)。實(shí)踐表明,通過優(yōu)化設(shè)計(jì)使得TCP/IP協(xié)議棧能夠在網(wǎng)絡(luò)智能卡內(nèi)穩(wěn)定運(yùn)行,ROM、RAM 占有率及吞吐速度均達(dá)到了預(yù)期的效果。所采用的手段有兩點(diǎn):(1)采用基于EEM 的網(wǎng)絡(luò)智能卡模型,從接口上保證了數(shù)據(jù)的吞吐速率;(2)采用基于對(duì)TCP/IP協(xié)議棧的代碼進(jìn)行裁剪和鏈?zhǔn)骄彺鏅C(jī)制來實(shí)現(xiàn)空間和時(shí)間上的性能提升。
(文/華中科技大學(xué)機(jī)械科學(xué)與工程學(xué)院,吳俊軍,周方圓)