嵌入式WEB服務(wù)器中TCP/IP協(xié)議棧的設計與實(shí)現
3.2 IP協(xié)議實(shí)現
IP協(xié)議主要功能是用于主機之間發(fā)送數據報的傳輸,實(shí)現比較復雜,但對于Web服務(wù)器來(lái)說(shuō),只需完成IP協(xié)議兩項最基本的功能:第一,處理接收到的IP數據報,向上層網(wǎng)絡(luò )提交。第二,負責對TCP報文、ICMP報文進(jìn)行封裝,交給數據鏈路層進(jìn)行裝幀。
當Web服務(wù)器收到發(fā)給自己的數據幀后,需要對以太網(wǎng)首部中的幀類(lèi)型字段進(jìn)行判斷,如果該字段為0x0800,說(shuō)明后面的數據是IP數據報,將此數據提交IP層處理。IP協(xié)議判斷此數據報的IP頭部中目的IP地址字段與本地IP地址是否一致,若不一致,則丟棄該數據報;若一致,進(jìn)行IP頭部校驗和檢查,當證明數據在傳輸中沒(méi)有出現錯誤時(shí),去掉IP頭部,將IP數據提交上層處理,即根據IP首部中的協(xié)議字段決定交給ICMP 協(xié)議還是TCP協(xié)議處理。在程序運行時(shí),當所接收的數據被判定為IP數據報后,IP處理程序將嚴格按照以上的過(guò)程接收處理數據并進(jìn)行處理。
IP協(xié)議還要查詢(xún)是否有上層數據要發(fā)送,如果有數據發(fā)送,則將上層數據進(jìn)行IP封裝,交給數據鏈路層裝幀發(fā)送。
3.3 ICMP協(xié)議實(shí)現
ICMP提供了一種讓互聯(lián)網(wǎng)中的路由報告錯誤或提供有關(guān)意外情況信息的報文機制。它不是獨立的,是IP的一部分,在每個(gè)IP實(shí)現中必須有它。雖然它提供的信息十分豐富,但在嵌入式Web服務(wù)器應用中,只要實(shí)現回送請求(echo request)和回送應答(echo reply)就足夠了。
3.4 TCP協(xié)議實(shí)現
TCP是嵌入式Web服務(wù)器的核心。在設計嵌入式Web服務(wù)器時(shí),系統應用層只需支持HTTP協(xié)議。嵌入式系統把要傳送的數據,參數等存入網(wǎng)頁(yè)的相關(guān)位置。對于任何TCP連接,每次只需支持HTTP協(xié)議發(fā)送網(wǎng)頁(yè)服務(wù)。在單片機這樣的系統中,資源十分有限,因此要精簡(jiǎn)TCP 協(xié)議,簡(jiǎn)化的原則有兩個(gè):第一,不能改變其面向連接的特性;第二,簡(jiǎn)化必須能配合其所采用的應用層協(xié)議。
作為嵌入式Web服務(wù)器,TCP連接時(shí)只需處于被動(dòng)服務(wù)的狀態(tài),所以將標準的TCP有限狀態(tài)機的主動(dòng)創(chuàng )建連接的SYN-SENT狀態(tài),主動(dòng)關(guān)閉連接的FIN-WAIT1,FIN-WAIT2,
CLOSING,TIME-WAIT狀態(tài)都省去,在設計中,還可以舍棄CLOSED狀態(tài),讓它開(kāi)始就處于LISTEN狀態(tài)來(lái)監聽(tīng)客戶(hù)端的連接請求。這樣,TCP的三次握手機制中,建立連接的過(guò)程時(shí),嵌入式系統作為監聽(tīng)狀態(tài)的服務(wù)器,始終為被動(dòng)方,相當于被動(dòng)打開(kāi)后的LISTEN狀態(tài),等待對方發(fā)起連接。當它接收到SYN數據片,它發(fā)出SYN+ACK數據片并確認它己經(jīng)收到對方的SYN,此時(shí)變?yōu)镾YN_RECEIVED狀態(tài)。再接收到對方返回的一個(gè)僅含ACK的空數據片,則三次握手完成,進(jìn)入ESTABLISHED狀態(tài),之后可以進(jìn)行TCP數據通訊。這樣,既節省了系統開(kāi)銷(xiāo),同時(shí)也保證了所有的數據段都能安全正確地到達目的端。
4 結語(yǔ)
本文的創(chuàng )新之處在于對應用于嵌入式Web服務(wù)器的TCP/IP協(xié)議棧進(jìn)行了精簡(jiǎn),既兼顧了TCP/IP協(xié)議的主要功能的實(shí)現,又照顧到嵌入式系統本身的弱點(diǎn),利用嵌入式TCP/IP協(xié)議棧能擴展許多非智能設備的網(wǎng)絡(luò )功能,使之方便接入Internet,具有很高的實(shí)用價(jià)值。
參考文獻:
[1] Jeremy Bentham.嵌入式系統Web服務(wù)器:TCP/IP Lean.機械工業(yè)出版社.2003.5
[2] 李素俠,段友祥,嵌入式TCP/IP協(xié)議的分析與研究.微計算機信息.2005,7-2
[3] 符意德.嵌入式系統設計原理及應用.清華大學(xué)出版社.2004.11
[4] 王海燕.嵌入式Web服務(wù)器的研究與實(shí)現.武漢大學(xué)研究生論文.2003.5
[5] Douglas e.comer.用TCP/IP進(jìn)行網(wǎng)際互連 第1卷:原理、協(xié)議和體系結構.電子工業(yè)出版社.1998.4
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)tcp/ip相關(guān)文章:tcp/ip是什么
評論