<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式WEB服務(wù)器中TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)

          嵌入式WEB服務(wù)器中TCP/IP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2012-05-21 來源:網(wǎng)絡(luò) 收藏

          TCP/IP協(xié)議棧結(jié)構(gòu)如圖2所示。

          圖2 TCP/IP協(xié)議棧

          2.2 TCP/IP協(xié)議棧數(shù)據(jù)處理流程

          嵌入式TCP/IP協(xié)議棧處理數(shù)據(jù)流程如圖3所示。

          系統(tǒng)初始化后,進(jìn)入主程序循環(huán)部分。主程序循環(huán)包括兩大部分:對接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包和對欲發(fā)送的數(shù)據(jù)進(jìn)行封裝并發(fā)送。對接收到的以太網(wǎng)數(shù)據(jù)幀進(jìn)行解包,供應(yīng)用程序使用;對欲發(fā)送的數(shù)據(jù)進(jìn)行打包,將數(shù)據(jù)以以太網(wǎng)數(shù)據(jù)幀的格式發(fā)送出去,使采用TCP/IP協(xié)議的以太網(wǎng)內(nèi)所有計(jì)算機(jī)能收到此數(shù)據(jù)幀。

          詳細(xì)過程為:先檢查是否收到以太網(wǎng)數(shù)據(jù)幀,若己收到以太網(wǎng)數(shù)據(jù)幀,則檢測以太網(wǎng)數(shù)據(jù)幀首部,判斷所載數(shù)據(jù)類型,然后對接收到的數(shù)據(jù)進(jìn)行相應(yīng)處理:若接收到的以太網(wǎng)數(shù)據(jù)幀中包含ARP數(shù)據(jù),則調(diào)用ARP處理程序;若接收到的以太網(wǎng)數(shù)據(jù)幀中包含IP數(shù)據(jù)報(bào),則針對其是否為ICMP、TCP協(xié)議格式分別進(jìn)行相應(yīng)的解包處理。若不包含IP數(shù)據(jù)報(bào),則丟棄此數(shù)據(jù)幀。

          若未收到以太網(wǎng)數(shù)據(jù)幀,此時(shí)若有數(shù)據(jù)要發(fā)送,則對數(shù)據(jù)進(jìn)行打包,將數(shù)據(jù)以以太網(wǎng)數(shù)據(jù)幀的格式發(fā)送出去。若無數(shù)據(jù)要發(fā)送,則回到主程序循環(huán)。

          圖3 嵌入式TCP/IP協(xié)議棧主流程圖

          3 嵌入式中TCP/IP棧的實(shí)現(xiàn)

          3.1 ARP協(xié)議實(shí)現(xiàn)

          嵌入式中ARP協(xié)議主要功能是進(jìn)行IP地址與以太網(wǎng)地址之間的轉(zhuǎn)換,當(dāng)系統(tǒng)收到發(fā)送數(shù)據(jù)請求時(shí),協(xié)議棧就需要返回IP數(shù)據(jù)報(bào),所有的 IP數(shù)據(jù)報(bào)都要進(jìn)一步封裝成以太網(wǎng)幀才能發(fā)送給網(wǎng)絡(luò)控制器,而所加的以太網(wǎng)首部中就包含了由ARP協(xié)議解析目的IP地址所得來的對應(yīng)的物理地址。

          首先ARP程序檢測以太網(wǎng)幀的類型字段以判斷其協(xié)議類型。以太網(wǎng)標(biāo)準(zhǔn)規(guī)定,當(dāng)一個(gè)以太網(wǎng)幀攜帶一個(gè)ARP消息時(shí),類型字段必須包含十六進(jìn)制值0806。接著,檢測消息中的操作字段以確認(rèn)是一個(gè)請求消息還是一個(gè)應(yīng)答消息。若是一個(gè)請求消息,ARP程序比較目標(biāo)IP地址與自己的IP地址,如果一樣,則要回發(fā)一個(gè)應(yīng)答消息。對接收到的來自遠(yuǎn)程主機(jī)的任何試圖解析地址的ARP請求,Web服務(wù)器都會做出回應(yīng)。

          當(dāng)Web服務(wù)器向客戶機(jī)發(fā)送一個(gè)ARP消息時(shí),此消息是嵌入一個(gè)以太網(wǎng)幀中廣播給網(wǎng)上的所有計(jì)算機(jī),每臺計(jì)算機(jī)收到這個(gè)請求后都會檢測其中的IP地址。與該IP地址匹配的計(jì)算機(jī)發(fā)送一個(gè)應(yīng)答,這個(gè)應(yīng)答消息被放進(jìn)一個(gè)幀中直接發(fā)回給Web服務(wù)器,而其他的計(jì)算機(jī)則會丟棄收到的請求,不發(fā)任何應(yīng)答。這種方式雖然對網(wǎng)絡(luò)造成一定的壓力,但節(jié)省嵌入式設(shè)備的寶貴資源。在等待應(yīng)答的時(shí)間里,ARP將到達(dá)的TCP包丟棄,一旦收到應(yīng)答,ARP高速緩存就用目的以太網(wǎng)地址更新,然后等待分組就用高速緩存中的目的以太網(wǎng)地址更新,分組就被發(fā)送了。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          tcp/ip相關(guān)文章:tcp/ip是什么




          關(guān)鍵詞: 嵌入式 Web服務(wù)器 TCPIP

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();