畢業(yè)論文:基于單片機(jī)的網(wǎng)絡(luò)通訊協(xié)議研究及應(yīng)用_第1頁
畢業(yè)論文:基于單片機(jī)的網(wǎng)絡(luò)通訊協(xié)議研究及應(yīng)用_第2頁
畢業(yè)論文:基于單片機(jī)的網(wǎng)絡(luò)通訊協(xié)議研究及應(yīng)用_第3頁
畢業(yè)論文:基于單片機(jī)的網(wǎng)絡(luò)通訊協(xié)議研究及應(yīng)用_第4頁
畢業(yè)論文:基于單片機(jī)的網(wǎng)絡(luò)通訊協(xié)議研究及應(yīng)用_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、今天,嵌入式internet的應(yīng)用己經(jīng)深入到口常生活的各個方面。研究嵌入式 tcp/ip協(xié)議在內(nèi)部資源冇限微處理器上的實現(xiàn),具冇重要的現(xiàn)實意義和經(jīng)濟(jì)價 值。論文首先介紹了歐入式系統(tǒng)的組成及對歐入式internet產(chǎn)生。通過對現(xiàn)有的 嵌入internet及比較了目前幾種單片機(jī)接入internet實現(xiàn)方案的前提下,應(yīng)用了 一種基于單片機(jī)自身特點的具體的解決方案:嵌入式tcp/ip協(xié)議。通過對tcp/ip 網(wǎng)絡(luò)協(xié)議的深入分析,對tcp/ip協(xié)議進(jìn)行合理的簡化,將其恢入到內(nèi)部資源有 限的微處理器中,實現(xiàn)以電子郵件方式進(jìn)行遠(yuǎn)程數(shù)據(jù)傳輸。關(guān)鍵字:嵌入式;internet; tcp/ip;單片機(jī)摘要i第1章

2、引言11.1論文選題的背景及意義11.2本文主要工作1第2章方案的選取2第3章網(wǎng)絡(luò)協(xié)議33. 1 tcp/ip分層模型33. 2數(shù)據(jù)封裝53.3數(shù)據(jù)幀分用63. 4協(xié)議層簡介73.4.1網(wǎng)際層協(xié)議73.4. 1. 1ip地址分配83.4. 1.2地址解析協(xié)議93.4. 1.3ip 分片/重組103.4. 1.4icmp 協(xié)議103.4.2傳輸控制協(xié)議113. 4. 2. 1 tcp連接和釋放113. 4. 2. 2用戶數(shù)據(jù)報協(xié)議12第4章系統(tǒng)總體設(shè)計124.1硬件總體功能結(jié)構(gòu)設(shè)計134. 2 tcp/ip協(xié)議層選擇及分析144.2.1鏈路層協(xié)議選擇及分析154.2.2網(wǎng)絡(luò)層協(xié)議選擇及分析154

3、.2.3傳輸層協(xié)議選擇及分析154.2.4應(yīng)用層協(xié)議選擇16第5章tcp/ip協(xié)議棧的實現(xiàn)175. 1 arp協(xié)議的實現(xiàn)175arp分組格式175.1.2 arp協(xié)議軟件實現(xiàn)185.2 ip協(xié)議及其實現(xiàn)21521 ip數(shù)據(jù)報格式21522 ip軟件實現(xiàn)215. 3 icmp報文協(xié)議的實現(xiàn)235.4 tcp協(xié)議的實現(xiàn)24541 tcp的報文段245.4.2 tcp協(xié)議的實現(xiàn)255. 4. 2. 1運輸控制塊tcb255. 4. 2. 2處理傳入數(shù)據(jù)模塊265. 4. 2. 3處理數(shù)據(jù)輸出模塊275. 4. 2. 4定時管理器285.5 smtp協(xié)議的實現(xiàn)305.5.1客戶機(jī)與服務(wù)器之間的交互30

4、5.5.2 smtp郵件協(xié)議的實現(xiàn)31第6章參考文獻(xiàn)32參考文獻(xiàn)32第1章引言1.1論文選題的背景及意義嵌入式internet是本世紀(jì)計算機(jī)世界的一項熱門技術(shù)。目前,嵌入式系統(tǒng)已 經(jīng)成為我們生活的一部分,應(yīng)用領(lǐng)域不斷擴(kuò)大。嵌入式設(shè)備的聯(lián)網(wǎng)已經(jīng)開始。但 是,由于嵌入式系統(tǒng)資源有限,一些傳統(tǒng)的internet技術(shù)和設(shè)備無法直接應(yīng)用。 這種趨勢使著嵌入式internet技術(shù)的產(chǎn)生和迅速發(fā)展。嵌入式internet (簡稱ei, embedded internet)通??梢岳斫鉃榘裻cp/ip協(xié)議作為一種嵌入式的應(yīng)用,從 而實現(xiàn)嵌入式設(shè)備internet的技術(shù)"。近年來以單片機(jī)(micro

5、computer unit, mcu)為代表的嵌入式系統(tǒng)在工業(yè)探 測系統(tǒng)、智能儀器、智能家電和信息家電領(lǐng)域得到了廣泛應(yīng)用。如今嵌入式系統(tǒng) 帶來的年產(chǎn)值早己超過萬億美元,1997年來口美國嵌入式系統(tǒng)大會的報告指出, 未來兒年僅基于嵌入式的全數(shù)字電視產(chǎn)品,就將在美國產(chǎn)生一個毎年上千億美元 的新市場。在這樣的背景下,嵌入網(wǎng)絡(luò)得以快速發(fā)展,口前世界許多國家的科 研機(jī)構(gòu)和各大公司紛紛加入了嵌入式internet技術(shù)的研究行列。另據(jù)網(wǎng)絡(luò)專家預(yù) 測,將來在internet 傳輸?shù)男畔⒅?,將?0%的信息來自于小型嵌入式系統(tǒng)“。 現(xiàn)正的我們可以說是正由pc機(jī)成熟技術(shù)向嵌入式產(chǎn)品轉(zhuǎn)化的后pc吋期。因此, 研究嵌

6、入式系統(tǒng)的internet接入技術(shù),將會有極具現(xiàn)實意義和經(jīng)濟(jì)價值。如何利 用單片機(jī)接入internet網(wǎng)絡(luò)是當(dāng)今最熱門的技術(shù)之一。鑒于8/16位單片機(jī)大量存在于嵌入式領(lǐng)域,在單片機(jī)上實現(xiàn)tcp/ip協(xié)議吋 嵌入式internet的關(guān)鍵技術(shù)z。木文在這樣的背景下,試圖開展一些有益的研 究。1.2本文主要工作本文主耍工作是將tcp/ip協(xié)議嵌入低檔單片機(jī)中。通過89c51系列單片機(jī) 和網(wǎng)卡芯片rtl8019as在單片機(jī)上實現(xiàn)internet接入,在對tcp/ip協(xié)議深入分 析的基礎(chǔ)上,對tcp/ip協(xié)議棧進(jìn)行合理的簡化后嵌入到單片機(jī)中。具體的工作 有:1. 對tcp/ip協(xié)議嵌入低檔單片機(jī)的硬件系

7、統(tǒng)框圖的設(shè)計。2. 對tcp/ip協(xié)議棧進(jìn)行研究,并分析各協(xié)議,完成軟件結(jié)構(gòu)的總體規(guī)劃設(shè) 計。3. 對我們需要的協(xié)議進(jìn)行必要的精簡,以達(dá)到軟件的實現(xiàn)。課題的難點在于要對tcp/ip協(xié)議熟悉,要對其有較為全而和深入的研究, 由于低檔單片機(jī)資源有限,就必須根據(jù)需求對tcp/ip協(xié)議進(jìn)行精簡,精簡后固 化到單片機(jī)屮實現(xiàn)單片機(jī)屮數(shù)據(jù)的遠(yuǎn)程傳輸。第2章方案的選取嵌入式internet技術(shù)的實現(xiàn)方法有很多種,體系結(jié)構(gòu)不同、使用的芯片不同 采用的底層技術(shù)不同,采用的軟件技術(shù)不同等等。大體可冇以下幾種方式:1. pc網(wǎng)關(guān)與專用網(wǎng)結(jié)合接入internet嵌入式系統(tǒng)和pc網(wǎng)關(guān)連接通信,連接方式采用rs482. r

8、s232、rs485等 總線技術(shù)組成專用網(wǎng)。在專用網(wǎng)屮由pc網(wǎng)關(guān)實現(xiàn)tcp/ip辦議,并完成與internet 連接,實現(xiàn)嵌入式系統(tǒng)與internet z間的信息交換。pc網(wǎng)關(guān)為嵌入式系統(tǒng)提供通 信和管理服務(wù)。如安全防護(hù)、協(xié)議處理、監(jiān)聽設(shè)備的運行情況、向外界則提供 web服務(wù)器等。這種技術(shù)需要一個專用的pc網(wǎng)關(guān),而且pc網(wǎng)關(guān)跟嵌入式系統(tǒng) z間通信也會受到網(wǎng)絡(luò)協(xié)議的制約。這種方案對恢入式系統(tǒng)處理器和資源要求都 比較低,開發(fā)相對容易,足以解決嵌入式系統(tǒng)與internet z間通信的問題,特別 適合在嵌入式系統(tǒng)多但集中的環(huán)境中應(yīng)用。不足z處在于接入成本高,不適合大 范帀的推廣。該方案適合于大型和昂貴

9、工業(yè)設(shè)備的上網(wǎng)需求,不適合在信息家電 及網(wǎng)絡(luò)智能等領(lǐng)域推廣?;谶@種技術(shù)模型,emware公司開發(fā)出嵌入式微 internet 網(wǎng)絡(luò)技術(shù) emit ( embedded micro internetworking technology) o emit 由 emmicro>emgateway和網(wǎng)絡(luò)瀏覽器組成,并在mcu內(nèi)部以軟件方式嵌入emnet 協(xié)議。如圖21所示。emmirco應(yīng)用系統(tǒng)+emnetrs232、 emgateway(pc 機(jī))7rs48<圖2-1采用專用嵌入式網(wǎng)絡(luò)協(xié)議方式2. 高性能 mcu+rtos采用高檔片機(jī)在rtos平臺上進(jìn)行軟件的開發(fā),在單片機(jī)上實現(xiàn)對協(xié)議的

10、處 理。由于采用高檔單片機(jī),可以實現(xiàn)很多復(fù)雜功能。這種方法的缺點是:對程序員的耍求高,須對rtos和tcp/ip協(xié)議都要很熟悉,開發(fā)周期也較長,難度較大。 同時高檔單機(jī)價格不菲,因此硬件開發(fā)成本較高。如圖22所示。rtostcp/ipinternet2mcu圖2-2在嵌入式實時操作系統(tǒng)rtos上運行tcp/ip3. 使用專用的嵌入式芯專用嵌入式芯片是一種內(nèi)置了通信和控制功能的單片機(jī),采用這種方案的芯 片有ubicom公司的ip2022, iready公司的internet tuner, seiko instruments公司 的s7600a , connect one公司的ichip等。這些芯

11、片固化了tcp/ip協(xié)議棧,支持 http, smtp, mime, pop3等協(xié)議,可進(jìn)行e_mail的收發(fā)及web瀏覽。此方案 更為方便,無需操作系統(tǒng),大大的節(jié)省資源,開發(fā)難度相對較低,要求對tcp/ip i辦議與相關(guān)接口熟悉,技術(shù)實現(xiàn)也相對困難,且對處理器性能要求較高,需耍捉 供大容量存儲器。這類芯片功能強(qiáng),能夠?qū)崿F(xiàn)多種網(wǎng)絡(luò)協(xié)議,一般提供有相應(yīng)的 tcp/ip網(wǎng)絡(luò)協(xié)議棧。但是這種芯片價格偏高,用戶需要支付軟硬件費用,不易于 實現(xiàn)市場的廣泛應(yīng)用。如圖23所示。4. 使用普通單片機(jī)和網(wǎng)絡(luò)控制芯片通過在系統(tǒng)中集成網(wǎng)絡(luò)接口芯片,采用軟件方式實現(xiàn)tcp/ip協(xié)議棧,使得嵌 入式系統(tǒng)具備網(wǎng)絡(luò)功能從而

12、接入intemto單片機(jī)通過加載tcp/ip協(xié)議控制網(wǎng)卡來 進(jìn)行數(shù)據(jù)的傳輸,并通過tcp/ip協(xié)議接入互聯(lián)網(wǎng)。遠(yuǎn)程控制端的操作指令的執(zhí)行 通過網(wǎng)絡(luò)找到目標(biāo),經(jīng)網(wǎng)卡接口傳入單片機(jī),通過在單片機(jī)上加載響應(yīng)的程序來 轉(zhuǎn)換成物理幀格式,再讓tcp/ip轉(zhuǎn)換成相應(yīng)的應(yīng)用層控制指令。這種方法實現(xiàn)起 來比較簡單,而且可根據(jù)實際需要進(jìn)行功能擴(kuò)展,但是需要在單片機(jī)上實現(xiàn)嵌入 式tcp/ip網(wǎng)絡(luò)協(xié)議,軟件編程的工作量比較大。曲于采用普通單片機(jī),所以其 優(yōu)點是成本低,單片機(jī)體積小,而且產(chǎn)品可以自己搭建,有利丁產(chǎn)品的維護(hù)和二 次開發(fā),易于以極高的性價比向諸多需要實現(xiàn)嵌入式接入internet的場合推廣。木 文設(shè)計的系

13、統(tǒng)就是采用這種技術(shù)方案。第3章網(wǎng)絡(luò)協(xié)議3. 1 tcp/ip分層模型tcp/ip采用分層體系結(jié)構(gòu),它與開放系統(tǒng)互聯(lián)osi模型的層次結(jié)構(gòu)相似。如表21所示,它可以分為4層,由低到高依次為:鏈路層、網(wǎng)際層、傳輸層和3應(yīng)用層。表2-1 osi參考模型與tcp/ip參考模型比較osi參考模型osi層次號應(yīng)用層7表示層6會話層5傳輸層4網(wǎng)絡(luò)層3數(shù)據(jù)鏈路層2物理層1tcp/ip層次描述二要應(yīng)用協(xié)議應(yīng)用層ftp、e-mail 和 telnet等傳輸層tcp和 udp網(wǎng)際層ip、icmp 和 igmp鏈路層設(shè)備驅(qū)動及接口卡tcp/ip分層模型的四個協(xié)議層分層完成如下功能。(i) 第一層鏈路層鏈路層包括用于協(xié)作

14、ip數(shù)據(jù)在已有網(wǎng)絡(luò)介質(zhì)上傳輸協(xié)議。實際上tcp/ip標(biāo) 準(zhǔn)并不定義與iso數(shù)據(jù)鏈路層和物理層相對應(yīng)的功能。相反它定義像地址解析協(xié) 議這樣的協(xié)議,提供tcp/ip協(xié)議的數(shù)據(jù)結(jié)構(gòu)和實際物理硬件之間的接口。(2) 第二層網(wǎng)際層對應(yīng)于osi 7層參考模型的網(wǎng)絡(luò)層,網(wǎng)絡(luò)層主要解決計算機(jī)之間的通信問題,它負(fù)責(zé)管理不同設(shè)備之間的數(shù)據(jù)交換,它是internet通信子網(wǎng)的最高層,它所提 供的是不可靠的無連接數(shù)據(jù)報服務(wù),無論傳輸是否正確,不做驗證、不發(fā)確認(rèn), 也不保證分組的正確順序。網(wǎng)際層主要有以下協(xié)議。 ip協(xié)議:使用ip地址確定收發(fā)端,提供端到端的“數(shù)據(jù)報”傳遞,是tcp/ip協(xié)議簇的核心協(xié)議。 icmp協(xié)議

15、(網(wǎng)絡(luò)控制報文協(xié)議):處理路由,協(xié)助ip層實現(xiàn)報文傳送的控制機(jī)制,提供錯誤和信息報告。 arp協(xié)議(正向地址解析協(xié)議):將網(wǎng)絡(luò)層地址轉(zhuǎn)換為鏈路層地址。 rarp協(xié)議(逆向地址解析協(xié)議):將鏈路層地址轉(zhuǎn)換為網(wǎng)絡(luò)層地址。(3) 第三層傳輸層對應(yīng)于osi7層參考模型的傳輸層,提供兩種端到端的通信服務(wù)。其中tcp 協(xié)議提供可靠的數(shù)據(jù)流運輸服務(wù),udp協(xié)議提供不可靠的用戶數(shù)據(jù)服務(wù)。該層 冇以下協(xié)議。 tcp協(xié)議:傳輸控制協(xié)議,提供可靠的面向連接的數(shù)據(jù)傳輸服務(wù)。 udp協(xié)議:用戶數(shù)據(jù)報協(xié)議,一種無連接的數(shù)據(jù)傳輸協(xié)議,適合于一次 少量數(shù)據(jù)傳輸情況,通信子網(wǎng)絡(luò)相對可靠時,udp的優(yōu)越性便會得到充 分的體現(xiàn)。(

16、4) 第四層應(yīng)用層對應(yīng)于osi 7層參考模型的應(yīng)用層和表達(dá)層,應(yīng)用層作用是把應(yīng)用程序的 數(shù)據(jù)傳輸?shù)絺鬏攲?,來進(jìn)行信息的交換。它為應(yīng)用程序提供各種使用協(xié)議,標(biāo)注 的應(yīng)用層主要有以下協(xié)議。 ftp文件傳輸i辦議:為文件傳輸捉供路徑,它允許數(shù)據(jù)從一臺主機(jī)傳送 到另一臺主機(jī)上,我們可以在ftp服務(wù)器上下載文件,或者往ftp服務(wù) 器上傳文件。 smtp簡單郵件傳輸協(xié)議:實現(xiàn)互聯(lián)網(wǎng)屮電子郵件的傳輸功能。 http超文本傳輸協(xié)議:用來訪問在www服務(wù)器上的各種頁面。 dns域名服務(wù)系統(tǒng):用于實現(xiàn)主機(jī)域名到ip地址之間的轉(zhuǎn)換。 telne虛擬終端服務(wù):實現(xiàn)互聯(lián)網(wǎng)屮的工作站登陸到遠(yuǎn)程服務(wù)器的能 力。 nfs網(wǎng)絡(luò)

17、文件系統(tǒng):用于實現(xiàn)網(wǎng)絡(luò)中不同主機(jī)之間的文件共享。 rip路由信息i辦議:用于網(wǎng)絡(luò)設(shè)備之間交換路由信息。3. 2數(shù)據(jù)封裝當(dāng)應(yīng)用程序用tcp傳送數(shù)據(jù)時,數(shù)據(jù)被傳送入?yún)f(xié)議棧中,z后逐個通過每 一層直到被當(dāng)做一串比特流送入網(wǎng)絡(luò)。其中毎一層對收到的信息都要增加一些首 部信息,必要時還要增加尾部信息,這個過程如圖31所示。tcp傳給ip的數(shù) 據(jù)單元通常稱tcp報文段,ip傳給鏈路層的數(shù)據(jù)單元稱作ip數(shù)據(jù)報,通過以太 網(wǎng)傳輸?shù)谋忍亓鞣Q作幀。以太網(wǎng)數(shù)據(jù)幀的物理特性是其長度必須在46b1500b 之間。確切的說,圖3-1中所示ip與鏈路接口之間傳送的數(shù)據(jù)單元應(yīng)該是分組,分組可以是一個ip數(shù)據(jù)報,也可以是ip數(shù)據(jù)

18、報的一個片。tcp首部應(yīng)用數(shù)據(jù)tcp報文段以太網(wǎng)ip首部tcp首部應(yīng)川數(shù)據(jù)以a網(wǎng) 首部ip首部tcp首部應(yīng)用數(shù)據(jù)以太網(wǎng) 尾部14bl20b20bb) ixxlbili4bjip報文段圖3-1數(shù)據(jù)進(jìn)入?yún)f(xié)議棧時的封裝過程tcp和udp都用一個16bit的端口號區(qū)分不同的應(yīng)用程序,并將源端口號 與目的端口號分別放入報文首部里,由于tcp、udp> icmp跟igmp都耍向ip 傳送數(shù)據(jù),因此ip必須在生成的ip首部添加某種標(biāo)識。1表示icmp協(xié)議,2 表示igmp協(xié)議,6表示tcp協(xié)議,17表示udp協(xié)議。而鏈路接口分別要接收 和發(fā)送ip、arp和rarp數(shù)據(jù),因此也需要在以太網(wǎng)幀首部中加入標(biāo)

19、識,以指 明生成數(shù)據(jù)的網(wǎng)絡(luò)協(xié)議層。所以,以太網(wǎng)的幀首部也冇一個16bit的幀類型域這 就是數(shù)據(jù)報文的封裝,應(yīng)用層數(shù)據(jù)是被逐層封裝,直到數(shù)據(jù)鏈路層。要指出的是 udp數(shù)據(jù)與tcp數(shù)據(jù)唯一不同是udp傳給ip的信息單元稱作udp數(shù)據(jù)報,而 ft udp的首部長為8b。3. 3數(shù)據(jù)幀分用當(dāng)目的主機(jī)收到一個以太網(wǎng)數(shù)據(jù)幀是,數(shù)據(jù)就開始從辦議戰(zhàn)中由底向上傳 送,與此同時去掉報文首部被各層協(xié)議加上的。每層協(xié)議盒都會檢查報文首部中 的協(xié)議標(biāo)識,以確定接受數(shù)據(jù)的上層協(xié)議,這個過程稱作分用。圖32顯示這 個如何過程如何發(fā)生的。i以tcp或udp首 j部端口號進(jìn)行分用i以ip首部中的協(xié)j議值進(jìn)行分用i以以太網(wǎng)首部小

20、的 j幀類型進(jìn)行分用進(jìn)入的幀圖32以太網(wǎng)數(shù)據(jù)幀的分用過程3. 4協(xié)議層簡介3.4. 1網(wǎng)際層協(xié)議網(wǎng)際協(xié)議是tcp/ip協(xié)議最重要的組成部分,是整個協(xié)議族的核心,主要負(fù) 責(zé)網(wǎng)絡(luò)層ip分組的傳輸。它位于網(wǎng)際層,為運輸層提供服務(wù),并從網(wǎng)絡(luò)接入層 請求服務(wù)。ip提供不可靠的、無連接的、盡垠大努力交付的分組傳輸機(jī)制。ip提供了 3 個重耍定義1) ip定義了數(shù)據(jù)傳輸所用的基木單元,及規(guī)定了傳輸?shù)臄?shù)據(jù)格式。2) ip規(guī)定了 ip分組的路由機(jī)制。3) 除了數(shù)據(jù)格式和路rti機(jī)制以外,ip還包括了一組體現(xiàn)不可靠分組交付思 路的規(guī)則。這些規(guī)則指明了主機(jī)和路由器應(yīng)該如何處理ip分組、何吋及如何發(fā) 現(xiàn)錯誤信息以及在

21、什么情況下可以放棄分組等等。ip是tcp/ip互聯(lián)網(wǎng)設(shè)計里最 基礎(chǔ)的部分。3.4. 1. 1 ip地址分配1.ip地址計算機(jī)網(wǎng)絡(luò)內(nèi)的毎臺計算機(jī)必須具有唯一的身份標(biāo)識符。在tcp/ip協(xié)議 簇中,這種標(biāo)識符叫做ip地址。ip地址有兩部分組成:網(wǎng)絡(luò)號和主機(jī)號。其中 網(wǎng)絡(luò)號標(biāo)識一個物理的網(wǎng)絡(luò),同一個網(wǎng)絡(luò)上所冇主機(jī)需要同一個網(wǎng)絡(luò)號,該號在 互聯(lián)網(wǎng)中是唯一的;而主機(jī)號確定網(wǎng)絡(luò)中的一個工作端、服務(wù)器、路由器或其它 tcp/ip主機(jī)。對于同一網(wǎng)絡(luò)號而言,主機(jī)號是唯一的。ip地址冇兩種表示形式:二進(jìn)制表示和點分十進(jìn)制表示。在ipv4中使用的 ip地址是32位的二進(jìn)制地址。但是為了是32位的二進(jìn)制地址更簡潔和便

22、于閱 讀,通常采用點分十進(jìn)制。在點分十進(jìn)制中,每個ip地址的長度為4個字節(jié), 有4個8位威組成,稱z為八為體。八為體由句點分開,來表示為一個0255 之間的十進(jìn)制書。ip地址的4個域分別標(biāo)明了網(wǎng)絡(luò)號和主機(jī)號。目前,因網(wǎng)絡(luò)大小不同,internet定義了 5種ip地址類型:a類、b類、c 類、d類、e類。如表3所示。表3.1 ip地址分類地址類型特征地址位開始地址結(jié)束地址a類oxxxxxxxbo.o.o.o55b類loxxxxxxb12&0.0.055c類1 loxxxxxb55d類hloxx

23、xxb55e類llllxxxxb55a類地址:用于支持特大型的網(wǎng)絡(luò),最高位為0,緊跟的7位表示網(wǎng)絡(luò)號,其余24為表示主機(jī)號,總共允許有126個網(wǎng)絡(luò)。b類地址:用于支持大型和中型網(wǎng)絡(luò)。最高兩位總置于二進(jìn)制的10,允許 有16384個網(wǎng)絡(luò)。c類地址:用于局域網(wǎng)。高3位置為二進(jìn)制110,允許2097152個網(wǎng)絡(luò)。d類地址:用于多路廣播組用戶。高4位總置為110,余下的為用于標(biāo)明 客戶機(jī)所屬的組e類地址:e類地址沒有網(wǎng)絡(luò)號和主機(jī)號之分,最高位置為1111。整個e類 地址是一種不用的實驗性地址。3.4. 1.2地址解

24、析協(xié)議要想在網(wǎng)上實現(xiàn)通信,主機(jī)必須知道對方主機(jī)的碩件地址。ip地址編號只 是一個邏輯地址,不是碩件地址。在網(wǎng)絡(luò)中傳遞的幀必須含有目的地址的碩件地 址。所以在進(jìn)行底層數(shù)據(jù)傳輸?shù)臅r候必須將ip地址轉(zhuǎn)換為碩件地址,即介質(zhì)訪 問控制地址。arp辦議就是將ip地址映射為碩件地址的過程。1. arp緩存arp在緩存屮保存地址映射以備用。arp緩存保存有動態(tài)和靜態(tài)項。動態(tài) 是自動添加和刪除的,靜態(tài)項則是保留cache屮直金計算機(jī)重啟。2. 主機(jī)ip地址解析為碩件地址arps是使用映射表進(jìn)行工作。映射表指的是地址解析協(xié)議高速緩存。(1) 當(dāng)一臺主機(jī)須要與另一臺主機(jī)通信時,初始化arp請求。當(dāng)該ip斷定 ip地

25、址是本地時,源主機(jī)開始在arp緩存中查找目標(biāo)主機(jī)的碩件地址。(2) 如果找不到映射,arp建立一個請求,源主機(jī)ip地址和硬件地址都會 包括在請求屮,這個請求通過廣播,是所有本地主機(jī)都可以接受處理。(3) 本地網(wǎng)上的每個主機(jī)都收到廣播并尋找與之相符的ip地址。(4) 當(dāng)目標(biāo)主機(jī)斷定請求的ip地址自己相符時,會直接發(fā)送一個arp回復(fù), 將ft己的硬件地址傳給源主機(jī)。讓源主機(jī)的ip地址和碩件地址更新它的arp緩 存。源主機(jī)收到冋復(fù)后就建立起了通信。3. 解析遠(yuǎn)程ip地址arp廣播的源主機(jī)是缺省網(wǎng)關(guān)的。目標(biāo)ip地址如果是遠(yuǎn)程主機(jī),arp將 廣播一個路由器的地址。(1) 通信請求初始化時,得知目標(biāo)ip地

26、址為遠(yuǎn)程地址。源主機(jī)將在本地路 由表屮查找,如果沒冇找到,將認(rèn)為是缺省網(wǎng)關(guān)的ip地址。在arp緩存中查找 符合網(wǎng)關(guān)記錄的ip地址。(2) 如果沒有找該網(wǎng)關(guān)記錄,arp將廣播請求網(wǎng)關(guān)地址不在是目標(biāo)主機(jī)的 地址。路由用自己的硬件地址回應(yīng)源主機(jī)的請求。源主機(jī)則將數(shù)據(jù)報傳送到路由 器以傳送到目標(biāo)主機(jī)的網(wǎng)絡(luò),最終到達(dá)目標(biāo)主機(jī)。(3) 在路由器上,由ip決定目標(biāo)ip地址是本地地址還是遠(yuǎn)程地址。若是本 地,路由器用arp獲得碩件地址。遠(yuǎn)程的話,路喲器則在路由表中找該網(wǎng)關(guān), 然后通過arp獲得碩件地址。數(shù)據(jù)報將直接發(fā)送下一個目標(biāo)主機(jī)。(4) 目標(biāo)主機(jī)接收到請求后,形成icmp響應(yīng)。由于源主機(jī)在遠(yuǎn)程網(wǎng)上,將 在

27、本地路由表找源主機(jī)網(wǎng)的網(wǎng)關(guān)。找到網(wǎng)關(guān)后,arp就獲得了它的%更件地址。(5) 若該網(wǎng)關(guān)硬件地址不在arp屮,則通過arp廣播獲得。一旦獲得碩件 地址,icmp響應(yīng)就傳送到路由器上,后傳到源主機(jī)。3.4. 1.3 ip分片/重組正如上文3.2中描述的一樣,物理網(wǎng)絡(luò)層一般要限制每次發(fā)送幀的的最大 長度。任何時候ip層接受到一份要發(fā)送的ip數(shù)據(jù)報是,它要判斷向本地哪個接 口發(fā)送數(shù)據(jù),并查詢該接口獲得其(mtu最大運輸單元也稱最大數(shù)據(jù)長度), ip把mtu跟數(shù)據(jù)報長度比較。若數(shù)據(jù)報長度大于mtu就需耍分片。ip協(xié)議進(jìn) 行分段的原則就是,一個較長的ip分組經(jīng)過一個mtu值較小的物理網(wǎng)絡(luò)時,會 把長分組分

28、割成較小的分組進(jìn)行傳輸。這個過程稱為分片,每個分片包含一個分 片首部,用來控制數(shù)據(jù)的分片和重組,它含冇標(biāo)識、標(biāo)志和分片偏移3個字段。把一份數(shù)據(jù)報分片以后,只有到達(dá)目的地后才進(jìn)行重組。重組是由目的端ip 層完成。ip首部屮包含的數(shù)據(jù)分為分片和重組提供了足夠的信息。3. 4. 1.4 icmp |辦議ip協(xié)議不是一個可靠的協(xié)議,它不能保證數(shù)據(jù)被送達(dá)。自然地為保證數(shù)拯 的送達(dá)應(yīng)該由其它模塊來完成。這個協(xié)議就是icmp協(xié)議,經(jīng)常被認(rèn)為是ip層 的一個組成部分。所有的ip服務(wù)器和主機(jī)都支持這個協(xié)議。當(dāng)傳送的ip數(shù)據(jù)包發(fā)生錯誤,如主機(jī)不可達(dá),路由不可達(dá)等,icmp協(xié)議將 會把錯誤信息封包,然后傳送給主機(jī),

29、讓主機(jī)處理錯誤。為防止icmp的無限產(chǎn) 生和傳送,icmp差錯報文不會產(chǎn)生icmp報文。icmp協(xié)議提供的差錯服務(wù)有以下:(1) 目的站不可達(dá)當(dāng)路由器無法轉(zhuǎn)發(fā)或者交付ip分組時,就丟棄這個分組, 然后向源站發(fā)回目的站不可達(dá)的報文。(2) 超時為避免循環(huán)路由,毎個ip數(shù)據(jù)報的ttl倒計時為0時,就丟棄該 分組,同時向源站發(fā)送超時文本。(3) 源站抑制由于ip中沒冇流量控制機(jī)制,源站抑制報文為ip增加了流量 控制的能力。當(dāng)路由或目的站因為擁塞丟弄分組時,它就向分組的源站發(fā)送抑制 報文。3. 4. 2傳輸控制協(xié)議3. 4. 2. 1 tcp連接和釋放tcp是一種面向連接的、全手工的、可靠的數(shù)據(jù)流傳輸

30、協(xié)議i。它在每一 次數(shù)據(jù)傳輸前先要在通信雙方建立一條連接otcp中建立連接采用3次握手如圖 3-3所示最簡單情況下進(jìn)行的連接。圖3-3連接建立三次握手示意圖步驟如下:1. 客戶端發(fā)送第一個報文段,即syn段,這個syn報文段為報文段1。 syn標(biāo)志置1, ack標(biāo)志置0。定義客戶端打算建立連接的愿望。2. 服務(wù)器如果同意連接則發(fā)冋報文段2,報文段2屮ack標(biāo)志為1, syn 標(biāo)志為k報文段2也稱為syn+ack文段。3. 客戶端發(fā)送報文段3。這是一個確認(rèn)報文段。報文段中ack標(biāo)志為1, syn標(biāo)志為0o在這3個報文段的交換過程中,即3次握手過程完成連接。在數(shù)據(jù)傳輸結(jié)束后,通信雙方都可以發(fā)出釋放

31、連接請求。一個tcp連接是 全雙工的,每個方向須要單獨的進(jìn)行關(guān)閉。當(dāng)雙方?jīng)]有數(shù)據(jù)發(fā)送吋就發(fā)送一個終 止位fino tcp連接釋放需要4次握手,如圖3-4所示步驟如下:1 首先要進(jìn)行關(guān)閉的客戶端tcp發(fā)送第一個報文段,即fin報文段,fin標(biāo) 志置1。執(zhí)行主動關(guān)閉。2. 服務(wù)器段tcp發(fā)送第二個報文段,即ack報文段,用以確認(rèn)fin報文段。3. 服務(wù)器端tcp可以繼續(xù)向客戶端發(fā)送數(shù)據(jù),當(dāng)服務(wù)器沒數(shù)據(jù)發(fā)送吋,發(fā)送 第三個報文段,即fin報文段,fin標(biāo)志置1。關(guān)閉數(shù)據(jù)傳送。4. 客戶端tcp發(fā)送第四個報文段,即ack報文段,以確認(rèn)服務(wù)器段tcp收 到了 fin報文段。tcp對所有的報文采取一種簡單

32、的格式,包括攜帶數(shù)據(jù)的報文,甚至確認(rèn)和 建立連接和釋放連的消息。tcp用滑動窗口來實現(xiàn)流量控制機(jī)制,接收者用該字 段告訴發(fā)送者還有多少緩沖空間可以用。傳送者一次發(fā)送的數(shù)量總小于可用緩沖 去,則不會引起溢岀。當(dāng)接收者處理完一定的數(shù)據(jù)后,便向發(fā)送者發(fā)送ack, 指出緩沖區(qū)空間已增加。發(fā)送者經(jīng)確認(rèn)及被告知窗口大小來決定發(fā)送數(shù)據(jù)的多 少。tcp提供可靠的服務(wù)所使用的方法之一就是確認(rèn)和重傳。圖3-4 tcp連接釋放的4次握手3. 4. 2. 2用戶數(shù)據(jù)報協(xié)議udp也是ip z上的另外一個傳輸層協(xié)議。udp與tcp不同,它是一個簡 單的面向數(shù)據(jù)報的運輸層協(xié)議,它是一種無連接的傳輸層協(xié)議,它不提供可靠性 的

33、服務(wù)。與tcp不同,它并不提供給ip協(xié)議可靠機(jī)制、流量控制及錯課恢復(fù)等功能。 使用udp數(shù)據(jù)服務(wù)的應(yīng)用程序須門己提供可靠性。另外,udp也不保證數(shù)據(jù)的 傳輸順序。udp是輕權(quán)i辦議,開銷小,因其簡單,適用丁不需??煽繖C(jī)制的情 形。第4章系統(tǒng)總體設(shè)計在本系統(tǒng)的解決方案中,以mcs-51系列的單片機(jī)為cpu,負(fù)責(zé)tcp/ip 協(xié)議棧實現(xiàn)的主休工作。以太網(wǎng)的接口芯片,負(fù)責(zé)收發(fā)以太數(shù)據(jù)包。實現(xiàn)數(shù)據(jù)的 遠(yuǎn)程傳輸。在對數(shù)據(jù)的傳輸方式上選取電子郵件的方式,就是在單片機(jī)上實現(xiàn)的 電子郵件發(fā)送功能,也就實現(xiàn)了對數(shù)據(jù)的遠(yuǎn)程傳輸。系統(tǒng)在單片機(jī)上實現(xiàn)嵌入式 tcp/ip協(xié)議的方式上,選用“單片機(jī)+以太網(wǎng)網(wǎng)卡”方案實現(xiàn)

34、,此種方案充分利 用現(xiàn)冇資源,節(jié)約成本,適合小系統(tǒng)的開發(fā)。4.1硬件總體功能結(jié)構(gòu)設(shè)計完整的tcp/ip協(xié)議是由許多個協(xié)議組成的協(xié)議簇,其功能強(qiáng)大,結(jié)構(gòu)復(fù)雜, 占用系統(tǒng)資源較大。目前嵌入式系統(tǒng)按性能可大致分為兩種:rtos-f-高檔32位 cpu的系統(tǒng)和由8/16位mcu組成的系統(tǒng)。對tcp/ip協(xié)議實現(xiàn),前者軟硬件資源豐 富,實現(xiàn)起來很容易,而后者由于資源和對有限,需直接對硬件操作而較為困難。 因此在后者上實現(xiàn)tcp/ip協(xié)議更具有實際意義。所以我選用mcs-51系列單片機(jī)。 mcs-51系列單片機(jī)優(yōu)點很多,首先,應(yīng)用普及,性價比高,而且形小體輕功耗 低、軟硬件開發(fā)靈活方便。8051單片機(jī)的基

35、本特性如下1.8位cpu, cpu有運算器和控制器組成。;2. 內(nèi)部共有4個雙向的8位并行i/o接口,一個全雙工串行接口。串行接口 內(nèi)帶有緩沖器;3. 片內(nèi)擁有128字節(jié)的靜態(tài)隨機(jī)存取存儲器sram,作為片內(nèi)數(shù)據(jù)存儲器和 4k rom程序存儲器,還有21個特殊功能寄存器sfr,用于編程控制;4片內(nèi)有兩個16為加法計數(shù)器,分別為t0和t1。5程序和數(shù)據(jù)存儲空間分開,可各尋址64k;6片內(nèi)中斷邏輯具有5個中斷源,兩個優(yōu)先級,并且每個中斷源都被設(shè)置固 定的入口地址,是編程簡化;7.片內(nèi)有振蕩電路,述有總線控制邏輯等。要想實現(xiàn)數(shù)據(jù)在internet上的傳輸,就需將單片機(jī)聯(lián)入interneto我們選取

36、rtl8019as芯片實現(xiàn)聯(lián)網(wǎng)。rtl8019as是一種ne2000的兼容網(wǎng)卡芯片,支 持以太網(wǎng)全雙工通信方式,軟件移植性好;跟mcs-51單片機(jī)的接口簡單;對于 mcs-51單片機(jī)來說rtls8019as的帶寬充裕。系統(tǒng)硬件總體功能結(jié)構(gòu)如圖4-1 所示。圖41硬件結(jié)構(gòu)框圖在系統(tǒng)功能的實現(xiàn)上,此次設(shè)計主要是在軟件上著手進(jìn)行設(shè)計,對碩件設(shè)計 并未深入。由于選取mcs-51單片機(jī),故而選取c語言作為開發(fā)語言。因為用c 語言比匯編具有很多的優(yōu)勢。再有就是我口身而言c語言相對熟悉。c語言有如 下特點何:1. 語言簡潔、緊湊,使用靈活、方便。2. 語法限制不太嚴(yán)格,程序設(shè)計口由度大。3用c語言編寫的程序

37、移植性好(與匯編語言比)。基本上不須修改就可以 運用于各種計算機(jī)和操作系統(tǒng)。4. 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。5. 允許直接訪問物理地址,能進(jìn)行位才做,可以直接對硬件進(jìn)行操作。6. 程序模塊化,便于資源共享,軟件的維護(hù)和升級。從而保證系統(tǒng)的可靠 性和安全性。4. 2 tcp/ip協(xié)議層選擇及分析internet網(wǎng)絡(luò)通信屮,tcp/ip協(xié)議簇菲常龐大,需要占用大量的系統(tǒng)資源。嵌 入式系統(tǒng)對信息進(jìn)行tcp/ipi辦議處理,使英變成在internet上可傳輸?shù)膇p數(shù)據(jù)包。 由于51系列單片機(jī)內(nèi)部資源有限,不可能實現(xiàn)標(biāo)準(zhǔn)的intemet的tcp/ip協(xié)議簇,也 不需要實現(xiàn)標(biāo)準(zhǔn)的tcp/ip協(xié)議

38、簇。可根據(jù)具體應(yīng)用需求對標(biāo)準(zhǔn)的tcp/ip協(xié)議簇進(jìn) 行適當(dāng)?shù)牟眉粜薷?,形成一個真正適用的嵌入式tcp /ip亦議子集。通過裁減對 原協(xié)議進(jìn)行有選擇地實現(xiàn)。這樣在實現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸上,我們就可以從tcp/ip 協(xié)議子集上實現(xiàn)。考慮到51系列單片機(jī)資源有限,在對i辦議的選取上我們應(yīng)考慮到系統(tǒng)資源和 保證協(xié)議在功能及機(jī)制上的完整性。4.2.1鏈路層協(xié)議選擇及分析鏈路層主要作用是為其上層協(xié)議提供數(shù)據(jù)傳輸服務(wù)的。根據(jù)物理層的不同, 鏈路層有多種協(xié)議可以選擇。其中主耍有以太網(wǎng)、令牌環(huán)網(wǎng)、fddi及rs- 232串 行線路協(xié)議等。以太網(wǎng)上數(shù)據(jù)的傳輸是采用網(wǎng)絡(luò)的mac地址來進(jìn)行識別的。這就是要求系 統(tǒng)有實現(xiàn)i

39、p地址與mac地址的轉(zhuǎn)換的功能,即arp協(xié)議。其可分為arp請求和 arp響應(yīng)兩種協(xié)議,系統(tǒng)要實現(xiàn)與其它計算機(jī)的通信,就須實現(xiàn)arp響應(yīng)協(xié)議, arp請求協(xié)議在本地建立了一個ip地址與mac地址的映像,保證了對外通信的 有的放矢。rarp (逆向地址解析)協(xié)議主要用于解決如何從mac地址得到ip地址,主 要用于無盤工作站中,可以無需實現(xiàn)。4.2.2網(wǎng)絡(luò)層協(xié)議選擇及分析ip是tcp/ip最重要的組成部分,是整個協(xié)議的基礎(chǔ)。目前版本號是4,也 稱ipv4o所有的tcp、udp、igmp及icmp都是以ip數(shù)據(jù)報格式傳輸。ip提 供不可靠的、無連接的、盡最大努力交付的分組傳輸機(jī)制。“不可靠的”按是指

40、 它不能保證ip分組成功地傳送到廿的站?!盁o連接的”指的是ip數(shù)據(jù)包可以不 按順序收發(fā)。ip提供的是“盡最大努力交付的''傳輸服務(wù),就是說ip協(xié)議盡量的 發(fā)送每一個ip數(shù)據(jù)包,不隨意放棄數(shù)據(jù)包,只有在資源用盡或底層網(wǎng)絡(luò)出現(xiàn)錯 誤時才有可能出現(xiàn)不可靠性。在ip進(jìn)行數(shù)據(jù)交付過程中,如杲遇到不能止常交付的情況,則需要通知源 站采取措施來補(bǔ)救。由于ip自身沒有提供差錯報告和差錯糾正機(jī)制,這就需要 其他協(xié)議來完成,這就是icmp協(xié)議。icmp配合ip使用,提高了數(shù)據(jù)包交付成 功的機(jī)會。第2. 3傳輸層協(xié)議選擇及分析tcp協(xié)議是一種提供可靠的端到端、面向字節(jié)流連接的服務(wù)。udp也是ip 之

41、上的一個傳輸協(xié)議。udp是一個簡單的快速的,但也是不可靠和無連接的。 但是對于大多數(shù)internet應(yīng)用而言,需耍的是可靠的、能按序遞交的傳輸層協(xié)議。 所以這次設(shè)計選取了 tcp而不是udpotcp為ip服務(wù)增加了面向連接和可靠性 的特點。tcp主要特點如下山:1. 面向連接:使用兩個tcp的應(yīng)用在發(fā)生數(shù)據(jù)傳輸之前,必須建立一個連 接,而在數(shù)據(jù)傳送完后要終止連接。2. 全雙工:一旦建立連接,就支持?jǐn)?shù)據(jù)的雙向傳輸。3. 字節(jié)流傳輸:tcp是面向字節(jié)流的。一個tcp連接就是一個字節(jié)流。4. 可靠:利用重發(fā)和流控機(jī)制來保證通信的可靠。5確認(rèn):tcp發(fā)送的每個報文都要被方確認(rèn)。這樣就知道數(shù)據(jù)是否丟失,

42、 是否重傳丟失數(shù)據(jù)。6. 流控制:當(dāng)發(fā)送方以一定的速率發(fā)送數(shù)據(jù)時,而接收方來不及處理時。 tcp采用滑動窗口協(xié)議來進(jìn)行流量控制,以防止數(shù)據(jù)發(fā)送過快導(dǎo)致接收方來不及 處理。7. 校驗和計算:校驗和是對是對偽首部、tcp首部和、用戶數(shù)據(jù)的計算結(jié) 果。計算是為了提供額外的錯誤監(jiān)測。4. 2.4應(yīng)用層協(xié)議選擇電子郵件協(xié)議是最流行的網(wǎng)絡(luò)服務(wù)協(xié)議。smtp協(xié)議是常用的電子郵件傳送 協(xié)議。它是基于tcp/ip的應(yīng)用層的協(xié)議,作用是:當(dāng)發(fā)送方與支持smtp協(xié)議 的服務(wù)器連接時,將郵件由發(fā)送方準(zhǔn)確無誤地傳送到接收方。smtp是一種簡單的基于文本的電子郵件傳輸協(xié)議閭。smtp支持:文本、聲音、圖像和視頻的報文。可

43、以郵件發(fā)送個一個或多個收信人。 可以把報文發(fā)送給internet以外的網(wǎng)上用戶。smtp的通信模型是基于tcp運輸協(xié)議的。模型如圖42所示用戶x、;文件系統(tǒng)、/圖4-2 smtp通信模型示意圖smtp協(xié)議是一種請求響應(yīng)協(xié)議,發(fā)送方發(fā)送命令,接收方給予響應(yīng),兩者 通過這種方式進(jìn)行交付,以完成郵件傳輸?shù)娜齻€階段:建立連接、傳輸數(shù)據(jù)和終 止連接。1. 連接建立客戶端主動與服務(wù)器建立一條tcp連接。服務(wù)器會返回一個響應(yīng)。若客戶 端準(zhǔn)備就緒,客戶端個向服務(wù)器發(fā)送helo報文,以標(biāo)識發(fā)送方的身份。服務(wù) 器給予響應(yīng)。2. 建立連接在客戶端與服務(wù)器建立連接后,就可以進(jìn)行報文傳輸了。首先,客戶端發(fā)送 mail報

44、文標(biāo)識報文的發(fā)送發(fā),服務(wù)器返冋響應(yīng)。若服務(wù)器準(zhǔn)備接收,客戶端發(fā) 送rcpt報文標(biāo)識報文接收方,服務(wù)器返回響應(yīng)。若服務(wù)器能夠識別接收人,客 戶端發(fā)送data報文,指示將要發(fā)送的郵件數(shù)據(jù),服務(wù)器返回響應(yīng)??蛻舳诉B續(xù) 的將郵件按行發(fā)送,服務(wù)器檢測到郵件結(jié)束指示后,給予響應(yīng)。3. 連接終止報文傳送成功后,客戶就終止連接??蛻舭l(fā)送quit命令終止連接。第5章tcp/ip協(xié)議棧的實現(xiàn)5.1 arp協(xié)議的實現(xiàn)在網(wǎng)絡(luò)底層的物理傳輸過程中,是通過mac地址(硬件地址)來識別主 機(jī)的,它一般也是全球唯一的。以太網(wǎng)卡的物理地址是48bit地址。所以就 需要將ip地址轉(zhuǎn)換為mac地址。這個協(xié)議就是地址解析協(xié)議。5.

45、1. 1 arp分組格式在以太網(wǎng)上解析ip地址吋,arp請求和應(yīng)答分組格式如圖5-l硬件地址長度協(xié)議地址長度以太網(wǎng)0的地址以太網(wǎng) 源地址幀 類 型硬 件 類 型協(xié) 議 類 型0p發(fā)送端 以太網(wǎng) 地址發(fā)送端ip地址h的 以太網(wǎng) 地址f1的 ip地址 太網(wǎng)首咅arp請求/應(yīng)答!圖5-1用于以太網(wǎng)的arp請求應(yīng)答格式圖51屮,以太網(wǎng)報頭的頭兩個字段是以太網(wǎng)的源地址、目的地址,若目的 地址為全1則為廣播地址,電纜上所冇的以太網(wǎng)接口都接收廣播數(shù)據(jù)幀,幀類型 字段是用來表示后面數(shù)據(jù)的類型,arp請求或應(yīng)答,該字段的值是0x0806,碩 件類型用來表示硬件地址的類型,它的值為1時表示的是以太網(wǎng)地址。協(xié)議類型

46、 字段表示所要映射的協(xié)議地址的類型,它的值為0x0800時表示的是ip地址。硬 件地址和協(xié)議地址長度分別指出碩件地址和協(xié)議地址的長度。對于以太網(wǎng)上ip 地址的arp請求或應(yīng)答,它們的值分別是6和4。操作字段(op)指出了 4種 操作類型,分別是arp請求(值1)、arp應(yīng)答(值2),這個字段是不可缺的, 因為arp請求和應(yīng)答的幀類型字段值是一樣的。最后面的4個字段分別指出源 端和目的端的硬件地址(以太網(wǎng)地址)及協(xié)議地址(ip地址)。5.1.2 arp協(xié)議軟件實現(xiàn)arp協(xié)議用來完成ip地址與以太網(wǎng)地址之間的轉(zhuǎn)換,此此次系統(tǒng)設(shè)計屮僅 響應(yīng)arp請求和發(fā)送arp應(yīng)答。arp軟件可劃分為3個部分:處理

47、進(jìn)入的arp 請求模塊、處理進(jìn)入的應(yīng)答模塊和一個arp表緩存管理程序。在發(fā)送數(shù)據(jù)報時, 上層協(xié)議調(diào)用請求模塊中的一個過程,將ip地址與相應(yīng)的物理地址綁定。輸出 過程返冋一個綁定,上層協(xié)議利用它封裝和發(fā)送分組。響應(yīng)模塊處理來口網(wǎng)絡(luò)的 arp分組,并通過增加新的綁定來修改arp表中的內(nèi)容。管理程序?qū)崿F(xiàn)了高速 緩存替換策略:檢查arp表屮的所有表項,并刪除不符合規(guī)定的表項。1. 請求模塊 在這個模塊里arp協(xié)議將ip地址轉(zhuǎn)換為相應(yīng)的物理地址,具體 過程如圖5-2所示。根據(jù)輸入的ip地址,首先檢查arp表是否冇冇效的地址對記 錄與要解析的ip地址相對應(yīng)。如果有,就可以直接取出碩件地址,然后返冋碩件 地

48、址,并發(fā)送該報文。若沒有就要進(jìn)行arp操作,arp發(fā)送一份稱作arp請 求的以太網(wǎng)數(shù)據(jù)幀給以太網(wǎng)上的每個主機(jī)。這個過程稱作廣播,arp請求數(shù)據(jù)開始廠、結(jié)束幀屮包含目的主機(jī)ip地址,意思就是“如呆你是這個1p地址的擁有者,請凹答 你的硬件地址”。圖5-2處理進(jìn)入的arp請求模塊流程圖2. 應(yīng)答模塊當(dāng)網(wǎng)上主機(jī)的arp層收到這份廣播報文后,會對這份廣播報文進(jìn)行處理。 處理過程如圖53。就會開始識別發(fā)送端詢問的是不是自己的ip地址,如杲就給 予響應(yīng),否則不給于響應(yīng)。若收到的是arp應(yīng)答幀則會更新緩存表。圖5-3處理進(jìn)入的arp應(yīng)答模塊流程圖3. arp表管理程序為提高arp的解析速度,為了記錄arp協(xié)

49、議解析到的ip地址與相應(yīng)的 硬件地址對應(yīng)關(guān)系,設(shè)計使用arp表。使用arp與ip對應(yīng)的arp表,記錄下解 析的mac地址,以減少在一定時間內(nèi)對同一 ip地址的多次重復(fù)解析,從而加快 tcp/ip協(xié)議棧的運行。當(dāng)緩存標(biāo)中增加一個新表項時,函數(shù)aprjnitoj始化該 表項,主要是把ip字段清0,函數(shù)apr_timer()設(shè)置最長的等待時間,隨時間的推 移,高速緩存管理程序遞減等待時間,并當(dāng)其值達(dá)到零時,丟棄該表項。若緩存 表已滿,arp表管理程序循環(huán)的方式,刪除一個iii的表項,函數(shù)apr_update()函 數(shù)更新ip地址與mac地址的對應(yīng)關(guān)系,再將記錄刪除標(biāo)志指針下移一個表項, 以此類推進(jìn)行

50、替換。5.2 ip協(xié)議及其實現(xiàn)5.2.1 ip數(shù)據(jù)報格式ip數(shù)據(jù)報是典型的詩句分組的一般格式:報頭和數(shù)據(jù)兩個部分。如圖5-4所示。04815 16192431版本頭標(biāo)長度服務(wù)類型標(biāo)識標(biāo)識片偏移生存時間協(xié)議頭標(biāo)校驗和源ip地址目的ip地址任選項填充域數(shù)據(jù)圖5-4 ip數(shù)據(jù)報格式版本號指的是當(dāng)前使用協(xié)議的版本,當(dāng)前使用的是ipv4,下一個協(xié)議版本 是ipv6,這正是當(dāng)今互聯(lián)網(wǎng)研究熱點。版本號規(guī)定了數(shù)據(jù)報的格式。ip數(shù)據(jù)報報 頭含有頭標(biāo)長和總長兩個長度域,頭標(biāo)長是一個4比特域,它給出了 32比特字 長為單位的報頭長度。除了 ip選項和填充域之外,首部所有字段的長度都是一 定的。沒冇任何選項的ip數(shù)據(jù)

51、報的首部長度是5;總長域指的是整個ip數(shù)據(jù)報 的長度,利用首部長度字段和總長度字段,就可以知道ip數(shù)據(jù)報中數(shù)據(jù)內(nèi)容的 起始位置和長度。標(biāo)志字段是用于標(biāo)識主機(jī)發(fā)送每一份數(shù)據(jù)報。最長生存時間確 定了數(shù)據(jù)報最多可以經(jīng)過的路由器數(shù)。任何一個ip數(shù)據(jù)報都包含源ip地址和h 的ip地址。5. 2. 2 ip軟件實現(xiàn)為了實現(xiàn)數(shù)據(jù)報的傳輸,ip協(xié)議采用以卜幾個關(guān)鍵技術(shù):1. 生存時間:ttl確立了數(shù)據(jù)報最多可以經(jīng)過的路由器數(shù)。它指定了數(shù)據(jù) 報的存留時間。ttl的初始值是冇源主機(jī)設(shè)定的(通常為32或是64),每經(jīng)過 一個使用它的路由器,它的值就減少1,當(dāng)值為0時,數(shù)據(jù)報就被丟棄,同時發(fā) 送icmp報文通知源主機(jī)

52、。2. 任選項:這些選項包括:安全和處理限制、記錄路由、時間戳等等。3. 報頭校驗和:ip報文頭中的檢驗和用于預(yù)防路由屮轉(zhuǎn)過程中岀錯。在 tcp、ip> icmp協(xié)議中,檢驗和的算法是相同的。在協(xié)議封裝時,需要產(chǎn)生檢 驗和;在收到信包后,需要檢驗。檢驗和算法使用頻率比較高,所以需要使用比 較高效的檢驗和算法。校驗和是ip報頭部分計算出來的校驗和碼,若傳輸沒出 現(xiàn)問題這個值應(yīng)全是1,由于路由器經(jīng)常僅將ttl減少1,因此當(dāng)路由器將ttl 減少1的同時給它加1,而不需要對整個ip首部進(jìn)行全新的計算。這個部分主要有兩個過程實現(xiàn),即對ip數(shù)據(jù)接收和對ip數(shù)據(jù)發(fā)送的處理。 對ip數(shù)據(jù)發(fā)送過程如圖5-

53、5所示。ip進(jìn)程是從數(shù)據(jù)鏈路調(diào)用進(jìn)程ip_proces的執(zhí)圖5-5 ip對數(shù)據(jù)的接收過程流程圖行開始,是個無限循環(huán)的過程。遍丿力網(wǎng)絡(luò)接口所有的輸入隊列,當(dāng)輸入隊列為空 時,ip進(jìn)程被阻塞,一旦有其它進(jìn)程把數(shù)據(jù)報放進(jìn)輸入隊列中,ip進(jìn)程就恢復(fù) 執(zhí)行并立即檢查數(shù)據(jù)報已到達(dá)的接口;當(dāng)輸入隊列不空,ip進(jìn)程提取等待處理 的數(shù)據(jù)報,同時初始化ttl值,驗證數(shù)據(jù)報的首部校驗和,當(dāng)校驗和錯誤,整 個數(shù)據(jù)報將被拋弄;不然則為該數(shù)據(jù)報選擇路由,若路由不存在,ip進(jìn)程調(diào)用 進(jìn)程icmp,生成并發(fā)送一個icmp “目的不可達(dá)”的報文。一旦路由選擇成功, ip_process遞減計數(shù)器ttl值,如果ttl的值達(dá)到0,

54、 ip_process生成一個icmp 超時報文。每次選路后,ip_process查看目的主機(jī)與本機(jī)是否在同一子網(wǎng)絡(luò)中, 若在同一子網(wǎng)屮則直接將數(shù)據(jù)報插入到輸出隊列屮,否則把數(shù)據(jù)報發(fā)送給默認(rèn)網(wǎng) 關(guān),以便送到其它網(wǎng)絡(luò)。ip數(shù)據(jù)發(fā)送處理的過程由ip_send開始,ip_send填寫ip首部中的毎個字段, 協(xié)議類型、服務(wù)類型、優(yōu)先級、指定的目的地址。同時為了保證每個外發(fā)數(shù)據(jù)報 的標(biāo)志字段的值是唯一的,ip.send給全局變量ipackid值添加標(biāo)識字段,ipackid 值開始遞增。ip.send對首部填寫完成后,就把數(shù)拯報放入鏈路接口隊列。要將數(shù)據(jù)從一個節(jié)點轉(zhuǎn)發(fā)到另一個節(jié)點,需要不斷地為每個數(shù)據(jù)確定

55、并使用 正確的路由。通常的ip層會建立一個路由表,當(dāng)數(shù)據(jù)報來自某一個網(wǎng)絡(luò)接口時, ip會檢查ip地址是否為本機(jī)的或是ip廣播地址,如果是該數(shù)據(jù)報就被送到由ip 首部字段所指定的協(xié)議模塊進(jìn)行處理,如果不是ip層將會設(shè)置為路由器的功能, 對數(shù)據(jù)進(jìn)行傳發(fā)。下面是用來轉(zhuǎn)發(fā)數(shù)據(jù)報的ip路由邏輯算法口裂從數(shù)據(jù)報中提取目的ip地址a,并提取ip地址中的網(wǎng)絡(luò)部分b訐(b與任何與英直接相連網(wǎng)絡(luò)地址匹配)then把數(shù)據(jù)報傳送給aelse訐(表中有特定的一個具體主機(jī)的一個到a的路由)then將數(shù)據(jù)報傳遞給表屮指定的下一跳else訐(表中有一個到網(wǎng)絡(luò)b的一個路由)then將數(shù)據(jù)報傳遞給表屮指定的下一跳else訐(表中

56、包含一個默認(rèn)路由);then將數(shù)據(jù)報傳遞給表中指定的默認(rèn)路由器else通知選路出錯5.3 icmp報文協(xié)議的實現(xiàn)icmp通常被認(rèn)為ip層的一個部分,它傳遞差錯報文及一些需要注意的信 息。ip層中會使用icmp報文,它是在ip數(shù)據(jù)報內(nèi)部被傳輸?shù)?,如圖56。v ip數(shù)據(jù)報!ip首部icmp報文圖5-6 icmp封裝在ip數(shù)據(jù)報的內(nèi)部icmp報文格式如圖5-7 o8位類型8位代碼校驗和首部的其余部份數(shù)據(jù)圖5-7 icmp報文格式在ip模塊發(fā)現(xiàn)傳輸出錯吋,首先做的就是丟棄出錯的數(shù)據(jù)報,然后調(diào)用 icmp模塊往源端主機(jī)發(fā)送一個出錯報文。icmp報文格式包含三個部分:8位 類型字段定義了 icmp報文的出錯類型;8位代碼字段給岀了這個報文類型原因; 16位的校驗和字段;icmp報文還包含ip數(shù)據(jù)報報頭及出錯的數(shù)據(jù)報的前64位 數(shù)據(jù)。源端主機(jī)接收到icmp差錯報文后,會根據(jù)icmp報文屮帶來的出錯類型 交付給上層協(xié)議處理出錯的信息。5.4 tcp協(xié)議的實現(xiàn)5.4.1 tcp的報文段tcp報文段是tcp協(xié)議封裝數(shù)據(jù)的格式。tcp報文段有首部和數(shù)據(jù)去組成, 結(jié)構(gòu)如圖58所示。源端口目的端口序列號確認(rèn)號首部長度保附標(biāo)志窗口大小校驗和緊急指針數(shù)據(jù)圖5-8 tcp報文段的格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論