色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種嵌入式IPv4/IPv6雙協(xié)議棧的實現(xiàn)

          一種嵌入式IPv4/IPv6雙協(xié)議棧的實現(xiàn)

          作者: 時間:2012-04-13 來源:網(wǎng)絡(luò) 收藏

          3.2網(wǎng)絡(luò)接口的

          網(wǎng)絡(luò)接口層在設(shè)計上主要考慮下面幾個目標:⑴向層提供一個統(tǒng)一的網(wǎng)絡(luò)通信接口,能夠?qū)⑸蠈?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/協(xié)議">協(xié)議模塊與具體的網(wǎng)絡(luò)接口硬件隔離開來,以利于向不同操作系統(tǒng)的移植;⑵支持一個網(wǎng)絡(luò)接口配置多個IP地址的功能,因為IPv6一個接口的IP地址包括本地鏈路、本地站點和全局三類地址;⑶支持多播報文的收發(fā),提供動態(tài)的多播IP與多播MAC地址的映射服務(wù);⑷提供較好的通信性能等。

          針對上述目標,設(shè)計了如下的網(wǎng)絡(luò)接口控制結(jié)構(gòu):

          struct netif {
          struct netif *next; /*指向下一個netif結(jié)構(gòu)的指針*/
          netif_ipaddr *iplist; /*指向接口的ip地址鏈的首指針*/
          char name[2]; /*接口名稱*/
          err_t (* input)(struct pbuf *p, struct netif *); /*接口輸入函數(shù)指針*/
          err_t (* output)(struct netif *, struct pbuf *p,netif_addr *); /*接口輸出函數(shù)指針*/
          err_t (* linkoutput)(struct netif *, struct pbuf *p); /*鏈路層輸出函數(shù)指針*/
          void *state; /*指向接口的狀態(tài)信息*/
          mac_addr netifmacaddr; /*接口的MAC地址*/
          netif_multi *multilist; /*本接口的MAC多播地址鏈首指針*/
          ┊ /*省略了部分信息 */
          };

          網(wǎng)絡(luò)接口層是棧與下層網(wǎng)絡(luò)設(shè)備驅(qū)動程序之間的接口,同時支持IPv4報文和IPv6報文,通過判斷幀的類型字段,把接收到的不同類型的報文交給不同的協(xié)議模塊進行處理。

          3.3 IPv6模塊

          IPv6[2]模塊主要包括兩部分的功能,一是負責從網(wǎng)絡(luò)接口層接收IPv6數(shù)據(jù)包,對數(shù)據(jù)包進行一定的處理后發(fā)送給上層處理模塊(TCP或ICMPv6)。二是從上層接收數(shù)據(jù),進行報文的選路,封裝IPv6報頭后將數(shù)據(jù)報發(fā)送給網(wǎng)絡(luò)接口層。

          3.3.1 ICMPv6[3]的簡化分析

          ⑴ICMPv6信息報文

          設(shè)備只需作為Ping的接收端,所以不需要發(fā)送回顯請求報文和處理回顯應(yīng)答報文。為了讓客戶端可以測試網(wǎng)絡(luò)狀態(tài)以及測試使用,必須支持接收請求報文和發(fā)送相應(yīng)的應(yīng)答報文。

          ⑵ICMPv6錯誤報文

          由于設(shè)備不會作為路由轉(zhuǎn)發(fā)設(shè)備,所以需要發(fā)送端口不可達報文,同時要支持超時報文通告對端超時錯誤。在BSD中,IP層沒有發(fā)送參數(shù)問題報文, ICMPv6無需支持處理參數(shù)問題報文。

          3.3.2鄰居發(fā)現(xiàn)協(xié)議(NDP)的簡化分析

          NDP[4]是IPv6協(xié)議的一個基本組成部分,它用于地址解析、鄰居發(fā)現(xiàn)以及路由器及網(wǎng)絡(luò)參數(shù)發(fā)現(xiàn)。本協(xié)議棧不支持路由功能,所以無需發(fā)送路由器通告報文,但必須接受路由器通告報文,以完成路由發(fā)現(xiàn)功能。同時支持鄰居通告和鄰居請求報文的接收和發(fā)送,以實現(xiàn)地址解析和重復(fù)探測。

          3.4 TCP模塊

          在TCP之上實現(xiàn)有限的WEB服務(wù),可以對該協(xié)議的實現(xiàn)機制作相應(yīng)的簡化及優(yōu)化。

          3.4.1 TCP模塊的擴展

          TCP對IPv4和IPv6報文的處理過程沒有任何的不同,但是由于IPv4和IPv6地址結(jié)構(gòu)不同,需要對使用IP地址的部分進行擴展。

          ⑴數(shù)據(jù)結(jié)構(gòu)擴展

          PCB是用來記錄每個TCP連接狀態(tài)的,包括本地IP地址和遠程IP地址,擴展時使用union結(jié)構(gòu)添加IPv6地址,同時添加標識位區(qū)別連接。

          ⑵操作擴展

          在TCP處理過程中包括輸入時對IP地址和端口號的匹配,輸出時校驗和的計算和路由的查找。由于對IPv4和IPv6報文調(diào)用相同的處理函數(shù),需要在實現(xiàn)時在這幾個函數(shù)的處理過程中加入對相應(yīng)PCB中標識位的判斷。

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

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




          評論


          相關(guān)推薦

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

          關(guān)閉