亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? arp

?? uC/OS-II在51上移植的完整源代碼V1.0
??
?? 第 1 頁 / 共 2 頁
字號:
                 ARP協議實現原理
          作者<asdjf@163.com> 2002/11/01

    ARP是Address Resolution Protocol的縮寫。中文譯做“地址解析協議”,本質是完成網絡地址到物理地址的映射。從概念上講就是找到一個映射方法f,使得“物理地址 = f(網絡地址)”。物理地址有兩種基本類型:以太網類型和proNET令牌環網類型,網絡地址特指IP地址,對映射方法的要求就是高效。具體到以太網,它使用的是動態綁定轉換的方法。為什么不直接使用同一種地址,而要這么麻煩呢?因為TCP/IP網絡就是為將不同種類計算機互聯而發明的,它的體系結構是分層的,層和層之間相互獨立,改變物理層的實現不會影響到網絡層。
    32位IP地址到以太網48位物理地址的映射,采用動態綁定轉換的方法會遇到許多細節問題,例如:減少廣播,ARP包丟失,物理地址變更(更換網卡)、移動(移動設備到另一子網)、消失(關機)等。一般是設置ARP高速緩存,通過學習、老化、更新、溢出算法處理ARP映射表來解決這些問題。其中,學習指ARP收到任何指向本節點IP地址的ARP/IP包,從中提取出地址對,而ARP緩存中無對應項時,由ARP接收部分添加;老化指為每項設置壽命域,以便代謝掉陳舊的地址映射項;更新指ARP提取到新的地址對時,用其更新緩存里已有的對應項;溢出算法指當緩存滿時,采取何種方法替換舊有的地址對兒。
    我找到了幾個TCP/IP源代碼,對比他們的實現,深感差別巨大,靈活多變。有的代碼未實現ARP緩存,只用幾個全局變量記錄源目的IP地址和源目的MAC地址,每次通信前直接操作全局變量,這在使用51單片機,進行點對點通信時不失為一個有效的方案;而有的代碼龐大復雜,細節處理精益求精。比如實現了ARP高速緩存、支持多址節點、支持網管查看/動態改變ARP相關參數、重發處理、支持IPv6等。我的看法是:ARP的本質是地址轉換,只要抓住這個靈魂,設計的大方向就把握住了。具體實現過程各具特色,因人而異,沒有統一要求,有些功能可以不實現,有些優點不能兼得,而唯一不變的只有思想。
    我參考了幾種已有的IP協議棧并結合51單片機的特點,實現了自己的基于uCOS51的TCP/IP協議棧方案。它只是一種具體的實現范例,不同的人有不同的設計方法。我保證自己的方案可以正常使用并具有較好的完備性。
    
    ------------------------------
    |狀態|壽命ttl|IP地址 |MAC地址|        學習
    ------------------------------
    |  0 |   FF  |X:X:X:X| XXXX  |  <---  老化
    ------------------------------
    |  0 |   FF  |X:X:X:X| XXXX  |        更新
    ------------------------------
           圖1 ARP緩存表                  表滿處理
    
    如圖1所示,ARP緩存表由狀態、壽命、IP地址、MAC地址4個字段組成。狀態字段指示地址對是否有效(0-空閑 1-占用);壽命字段用于老化操作,初始存入最大值,以后由OS時間函數調用,每秒減1,直至為0清除;IP地址和MAC地址字段保存網絡地址和物理地址的映射。此處,沒有設計發送數據鏈表首指針和重發記數字段,我把重發操作交給上層軟件統一處理,這是本程序的特色。圍繞ARP緩存表,完成了4種操作:學習、老化、更新、表滿處理,詳見偽代碼清單。使用OS的Shell命令ls可以查看ARP表的內容,但不支持修改,這個功能對測試很有用。(顯示內容舉例如圖2所示)
    
    %ls
    
     ARP table:
     status     TTL      IP address      MAC address
     =================================================
       01        78     172.18.92.86     0050BABD4C7E
     
    %
              圖2 ARP緩存表顯示內容舉例
              
    
             表滿處理
                |
                v                               ARP請求	
            ---------             ----------- ---------->
            |       |  學習/更新  |         | <- - - - -
    老化--->| ARP表 |<------------| ARP處理 |
            |       |             |         | - - - - - >
            ---------             ----------- <----------
                ^                               ARP應答
                |學習/更新
            ---------
            |       |
            | IP_in |
            |       |
            ---------
                        圖3 ARP處理過程
                        
    0                 8               16              24               31                    
    ---------------------------------------------------------------------
    |             硬件類型            |            協議類型             |
    ---------------------------------------------------------------------
    |硬件地址長度(HLEN)|協議長度(PLEN)|               操作              |
    ---------------------------------------------------------------------
    |                         發送方首部(八位組0-3)                     |
    ---------------------------------------------------------------------
    |      發送方首部(八位組4-5)      |      發送方IP地址(八位組0-1)    |
    ---------------------------------------------------------------------
    |     發送方IP地址(八位組2-3)     |        目標首部(八位組0-1)      |
    ---------------------------------------------------------------------
    |                         目標首部(八位組2-5)                       |
    ---------------------------------------------------------------------
    |                        目標IP地址(八位組0-3)                      |
    ---------------------------------------------------------------------
                                圖4 ARP包結構
    
    如圖3,整個ARP處理過程,我主要用5個函數實現。ARP初始化(ARP_init)、ARP請求(ARP_request)、ARP應答(ARP_answer)、ARP回應處理(ARP_process)、IP包接收預處理(IP_in)。在實現網卡驅動程序后,所有ARP處理操作就是填寫ARP包(ARP包結構見圖4),詳見偽代碼清單。
    ARP_init完成ARP表初始化,概括說就是ARP表state字段清0。
    ARP_request完成ARP請求操作。ARP協議要求程序根據子網掩碼判斷IP地址是否屬于同一子網,如果在同一子網內,ARP請求目的MAC地址,否則請求默認網關MAC地址。
    ARP_answer比較簡單,只要交換ARP請求包地址內容,填寫自己的MAC地址和很少的改動后發送即可。
    ARP_process完成ARP回應回來的信息處理。主要進行ARP表的學習和更新。
    IP_in完成IP包接收預處理,用于提取地址映射信息,以便主動學習和及時更新。我的程序不會主動學習不是發給自己IP地址的MAC地址信息,因為ARP表在51中的容量有限,只有頻繁用到的地址對才應該存放在里面,否則一旦出現“顛簸”,ARP表就失效了。
    有的ARP實現方案采用數據驅動方式,參數可配置,使用統一的程序,通過加載不同的配置數據,執行不同的操作。這樣做使程序版本統一,不同的應用只要加載不同的配置數據即可,不用更換程序,有利于后期維護。但是考慮到51資源緊張和安全性,我的方案只能顯示ARP表不允許修改其內容,用戶可發揮想象力在此處增加新功能。另外,ARP程序應該記住上一次發過的請求,以避免重發,但同樣考慮到資源緊張,也免了。其實無所謂,重發就重發了。表滿處理采用有損性能的加速算法,快速有效。另外,本程序不能直接用于嵌入式網關產品。
    uCOS51操作系統本身提供了良好的內存管理功能,我利用它設置了大中小三種緩沖區存放不同類型的數據包。內存使用前申請,使用后釋放,有效利用了資源。
    系統特點是:1.搶占式優先級;2.消息驅動;3.串行服務器模式。
    系統優點是:1.等待時不耗費CPU資源;2.有超時保護,不會死鎖;3.思路清晰易懂。
    系統基于中斷驅動,使用Int0做網卡中斷輸入口。ISR寄存器只用到4位:OVW 收溢出錯/TXE 發被中斷錯/PTX  發送成功/PRX 接收成功。TCP/IP協議棧做成任務,脫離內核。整體框架如圖5、6、7所示。主程序框架見偽代碼清單(RxSem和TxSem初始化為0)
    
            ----------
            |網卡中斷|
            ----------
                |
                V
            ----------  |>
            |發信號量|  |  收完/收溢出錯
            |SemPost |---->-------------- RxSemPost
            ----------  |>
                |       |  發完/發被中斷錯
                ---------->-------------- TxSemPost
          圖5 網卡中斷處理程序
          
          
                進入
                 |   ------
                 V   |    |                          發
             ----------   |                       低優先級
     ------> |  等待  |<---   
     |       |TxQPend |<---------------------         -----
     |       ----------                     |          | |
     |           | TxQFIFO非空              |          | |
     |           V                          |   ---<---| |---<---
     |       ----------                     |   數據源 | |  各任務發送來的數據 
     |       | 發送包 |                     |          | |
     |       ----------                     |         -----
     |           |                          |        TxQFIFO
     |           V                          |
     |   ---------------------              |
     |   |    釋放內存       |              |
     |   |(包已存入網卡RAM里)|              |
     |   ---------------------              |
     |           |    -----                 |
     |           V    |   |                 |
     |       -----------  |                 |
     |       |  等待   |<--                 | (等效發送包被拋棄)
     |       |TxSemPend|<-----------        |
     |       -----------           |        |
     |           | 發完/超時       |        |
     |           V                 |        |
     | Y  ----------------    -----------   |
     -<---| 發送成功嗎? |    |重發第n次|   |
          |(無錯且不超時)|    |   n<N   |   |
          ----------------    -----------   |
                 | N              /^\       |
                 V         N       |        |
           ------------------>------        |
           |已發了N次嗎?|---------->--------
           ---------------       Y
              
              圖6 發送流程圖
              
              
                                    進入
                                     |   -----
                                     V   |   |                       收
                                -----------  |                    高優先級
             ------------------>|   等待  |<--
             |        --------->|RxSemPend|<---------------
             |        |         -----------       /|\    /|\
             |        |              | 收到包 或   |      |
             |        |              V 收錯 或     |      |
             |        |              | 超時        |      |
             |        |         -----------        |  ----------
             |        |         |存并清ISR|        |  |復位網卡|
        -----------   |         -----------        |  ----------
        |RxSemPost|   |              |             |   /^\  /^\
        -----------   |              V             |    |    |
             |        |      --------------------  |    |    |
             |        |      |超時且無新包且無錯| Y|    |    |
             |        |      |    (防死鎖)      |->-    |    |
             |        |      --------------------       |    |
            /|\       |(不執行       | N                |    |
             |        |RxSemPost)    V                  |    |
             |        |         ------------  Y         |    |
             |        |         | 收溢出錯 |--->---------    |
             |        |         | ISR之OVW |                 |
             | Y      | N       ------------                 |
        ------------------           | N                     |
        |網卡中還有包嗎?|           V                       |
        |  CURR!=BNRY+1  | ------------------------  Y       |
        ------------------ |讀出包頭,查有無邏輯錯|--->-------
               |           ------------------------
              /|\                    | N
               |                     V
               |           ------------------------
           ----------      |按包長度申請合適的大中|
           |釋放內存|      |小號內存,并存入整個包|
           ----------      |,再調整BNRY          |
             /^\ /^\       ------------------------
              |   |                  |
              |   |                  V
              |   |   N  ----------------------------
              |   ---<---|是否是發給自己IP地址的包?|
              |          ----------------------------
              |                      | Y
              |                      V

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久| 91麻豆自制传媒国产之光| 日韩午夜小视频| 美女在线观看视频一区二区| 欧美精品一区二区三区在线| 国产福利精品一区| 亚洲精选免费视频| 欧美一区二区三区日韩视频| 国产一区视频在线看| 亚洲视频一区二区在线观看| 欧美日韩在线播放| 国产呦萝稀缺另类资源| 国产精品素人视频| 欧美三级在线视频| 九九**精品视频免费播放| 欧美国产乱子伦| 欧美日韩另类一区| 国产精品一区三区| 亚洲精品欧美专区| 日韩免费观看高清完整版在线观看| 国产精品一区免费在线观看| 亚洲精品大片www| 日韩免费福利电影在线观看| 9l国产精品久久久久麻豆| 亚洲成人av一区二区三区| 久久老女人爱爱| 欧美亚洲一区二区在线| 国产一区二区三区电影在线观看| 亚洲免费伊人电影| 欧美不卡视频一区| 欧美制服丝袜第一页| 精品午夜久久福利影院| 樱花草国产18久久久久| 久久久99精品久久| 欧美另类videos死尸| 成人av午夜电影| 蜜臀av一区二区在线免费观看| 国产精品久久久久久久久久免费看 | 色婷婷精品久久二区二区蜜臂av| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品久久久久久久久搜平片| 91精品国产美女浴室洗澡无遮挡| 99vv1com这只有精品| 狠狠色狠狠色综合| 日韩专区中文字幕一区二区| 亚洲欧美一区二区不卡| 久久奇米777| 欧美一区二区在线免费播放| 在线一区二区观看| 成人毛片老司机大片| 精品在线免费观看| 亚洲无线码一区二区三区| 亚洲国产精品传媒在线观看| 日韩欧美的一区| 91麻豆精品国产无毒不卡在线观看 | 美美哒免费高清在线观看视频一区二区 | 蜜臀久久久99精品久久久久久| 一区二区三区在线播| 国产精品欧美久久久久一区二区| 欧美电影免费观看高清完整版| 在线精品亚洲一区二区不卡| 成人免费三级在线| 国产91精品在线观看| 国产一区二区三区免费观看| 美女免费视频一区二区| 日韩av成人高清| 日韩电影在线观看电影| 婷婷一区二区三区| 五月天激情综合| 午夜亚洲国产au精品一区二区| 一区二区不卡在线播放| 亚洲黄色在线视频| 亚洲精品国产精华液| 一区二区三区日韩| 一区二区高清在线| 亚洲成人7777| 日韩激情视频网站| 久久99久久99精品免视看婷婷 | 国产精品一二三四五| 激情五月婷婷综合网| 国内精品在线播放| 国产精品原创巨作av| 成人国产免费视频| 91同城在线观看| 欧美三级电影在线观看| 7777精品伊人久久久大香线蕉完整版| 欧美高清www午色夜在线视频| 欧美视频在线播放| 欧美成人a∨高清免费观看| 26uuu色噜噜精品一区二区| 久久久精品人体av艺术| 欧美国产在线观看| 亚洲精品乱码久久久久| 亚洲第一狼人社区| 精品一区二区三区免费观看| 国产高清不卡一区| 91成人在线观看喷潮| 91精品国产乱| 久久久久久久性| 中文字幕中文在线不卡住| 亚洲黄色性网站| 久久国产精品无码网站| 成人性生交大片| 欧美人成免费网站| 26uuu另类欧美亚洲曰本| 亚洲天天做日日做天天谢日日欢| 亚洲成av人综合在线观看| 韩国精品主播一区二区在线观看| 粉嫩aⅴ一区二区三区四区| 欧美亚洲综合网| 久久―日本道色综合久久| 亚洲精品国产视频| 激情综合色综合久久| 91香蕉视频在线| 日韩免费看的电影| 怡红院av一区二区三区| 精品一区二区三区在线观看国产| 92精品国产成人观看免费 | 欧美在线影院一区二区| 日韩精品一区二区三区中文不卡| 中文字幕一区二区三区在线播放| 婷婷中文字幕一区三区| 成人免费的视频| 欧美va天堂va视频va在线| 亚洲日本乱码在线观看| 国产一区免费电影| 欧美日韩三级一区| 成人欧美一区二区三区| 精品综合久久久久久8888| 精品视频一区三区九区| 国产精品区一区二区三| 久久国内精品视频| 欧美裸体一区二区三区| 中文字幕一区二区三区在线播放| 九色|91porny| 欧美精品乱码久久久久久| 国产精品美女久久久久久| 久久电影网站中文字幕| 欧美日韩国产大片| 亚洲精品成人a在线观看| 成人小视频在线| 久久久久97国产精华液好用吗| 天天影视涩香欲综合网| 色综合久久88色综合天天6| 国产亚洲欧美一区在线观看| 免费不卡在线视频| 欧美日本视频在线| 亚洲精品成人a在线观看| 97精品久久久久中文字幕 | 亚洲六月丁香色婷婷综合久久| 国产福利91精品一区二区三区| 日韩精品在线一区二区| 婷婷综合久久一区二区三区| 欧美亚洲国产一区二区三区| 亚洲天堂av老司机| 成人va在线观看| 国产精品亲子伦对白| 国产一区二区三区国产| 久久久久久久久伊人| 国产精品一区二区久久精品爱涩 | 亚洲国产精华液网站w| 国产麻豆一精品一av一免费| 精品国产乱码久久久久久免费| 精品在线你懂的| 久久天天做天天爱综合色| 国产老妇另类xxxxx| 精品88久久久久88久久久| 精品一区二区三区不卡| 精品蜜桃在线看| 国产一区二区按摩在线观看| 久久久久国产精品厨房| 成人a免费在线看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 91亚洲大成网污www| 亚洲男人都懂的| 欧美老女人第四色| 老司机一区二区| 国产欧美日韩综合| 色综合中文字幕国产 | 精品久久国产97色综合| 国产一区二区三区免费在线观看| 久久久久9999亚洲精品| 成人免费高清视频| 亚洲另类春色国产| 5月丁香婷婷综合| 国产一区不卡视频| 亚洲欧美日韩在线| 欧美日韩亚洲综合一区| 理论片日本一区| 国产精品国产a| 欧美日韩免费观看一区三区| 久久草av在线| 国产精品国产三级国产有无不卡 | 国产精品一区二区在线播放| 国产精品欧美经典| 欧美精品在欧美一区二区少妇 | 国产成人综合自拍| 亚洲综合激情小说| 欧美精品一区二区三区蜜臀| 99久久久久久|