新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種嵌入式IPv4/IPv6雙協議棧的實現

        一種嵌入式IPv4/IPv6雙協議棧的實現

        作者: 時間:2012-04-13 來源:網絡 收藏

        3.2網絡接口的

        網絡接口層在設計上主要考慮下面幾個目標:⑴向層提供一個統一的網絡通信接口,能夠將上層模塊與具體的網絡接口硬件隔離開來,以利于向不同操作系統的移植;⑵支持一個網絡接口配置多個IP地址的功能,因為IPv6一個接口的IP地址包括本地鏈路、本地站點和全局三類地址;⑶支持多播報文的收發,提供動態的多播IP與多播MAC地址的映射服務;⑷提供較好的通信性能等。

        針對上述目標,設計了如下的網絡接口控制結構:

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

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

        3.3 IPv6模塊

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

        3.3.1 ICMPv6[3]的簡化分析

        ⑴ICMPv6信息報文

        設備只需作為Ping的接收端,所以不需要發送回顯請求報文和處理回顯應答報文。為了讓客戶端可以測試網絡狀態以及測試使用,必須支持接收請求報文和發送相應的應答報文。

        ⑵ICMPv6錯誤報文

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

        3.3.2鄰居發現協議(NDP)的簡化分析

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

        3.4 TCP模塊

        在TCP之上實現有限的WEB服務,可以對該協議的實現機制作相應的簡化及優化。

        3.4.1 TCP模塊的擴展

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

        ⑴數據結構擴展

        PCB是用來記錄每個TCP連接狀態的,包括本地IP地址和遠程IP地址,擴展時使用union結構添加IPv6地址,同時添加標識位區別連接。

        ⑵操作擴展

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

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

        tcp/ip相關文章:tcp/ip是什么




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 庆云县| 蓬莱市| 克拉玛依市| 建湖县| 五家渠市| 休宁县| 宜君县| 隆尧县| 江津市| 陕西省| 普定县| 榆林市| 吉木萨尔县| 台前县| 绩溪县| 通渭县| 巩留县| 闽侯县| 屏边| 大名县| 保亭| 上饶市| 焉耆| 准格尔旗| 杭锦旗| 大姚县| 山东省| 区。| 宁阳县| 安顺市| 永清县| 菏泽市| 蒲城县| 汽车| 苏州市| 定西市| 泾川县| 武威市| 平湖市| 龙口市| 安达市|