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

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

?? arp

?? 這是完整的ucos在51上移植的資料
??
?? 第 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一区二区三区免费野_久草精品视频
亚洲成人高清在线| 色综合久久久久网| 亚洲日穴在线视频| 欧美大片在线观看一区二区| 色噜噜偷拍精品综合在线| 不卡一区中文字幕| 成人午夜在线视频| 国产a精品视频| 盗摄精品av一区二区三区| 欧美日韩另类一区| 欧美一区三区二区| 日韩亚洲欧美一区| 久久网站最新地址| 国产欧美日韩不卡免费| 国产精品美女久久久久久 | 欧美日韩久久久久久| 中文欧美字幕免费| 国产成人免费视频网站高清观看视频| 久久综合综合久久综合| 国产一区二三区| 国产aⅴ综合色| 日韩欧美一区二区免费| 青青草精品视频| 国产在线播放一区三区四| 在线91免费看| 亚洲国产成人在线| 亚洲一区二区三区视频在线| 日韩av一区二| 波多野结衣中文字幕一区| 久久精品日产第一区二区三区高清版| 亚洲色图欧美在线| av电影在线不卡| 91麻豆精品国产综合久久久久久| 亚洲综合在线观看视频| 奇米色777欧美一区二区| 91精品久久久久久久久99蜜臂| 性感美女久久精品| 91精品久久久久久久99蜜桃| 日韩高清一级片| 精品免费视频.| 亚洲a一区二区| 91精品国产色综合久久不卡电影 | 成人激情黄色小说| 中文字幕永久在线不卡| 麻豆精品一区二区三区| 在线免费亚洲电影| 国产亚洲成av人在线观看导航| 国产乱码一区二区三区| 欧美狂野另类xxxxoooo| 中文字幕一区二区三区在线观看| 99re视频这里只有精品| 欧美精品一区二区精品网| 亚洲午夜在线视频| 播五月开心婷婷综合| 亚洲理论在线观看| 99re8在线精品视频免费播放| 亚洲免费色视频| 国产成人av电影在线| 亚洲少妇中出一区| 91麻豆精品国产91久久久使用方法 | www.亚洲在线| 午夜久久久影院| 在线观看日韩精品| 九色综合狠狠综合久久| 91精品在线免费观看| 国内精品免费**视频| 日韩精品一区二区三区四区| 国产成人av影院| 亚洲午夜精品网| 久久久久久久久99精品| 久久99国产精品尤物| 亚洲天堂久久久久久久| 欧美tickling挠脚心丨vk| 一本到三区不卡视频| 国内外成人在线| 午夜亚洲福利老司机| 国产清纯白嫩初高生在线观看91 | 国产欧美视频在线观看| 欧美在线视频全部完| 国产九色sp调教91| 日韩精品成人一区二区在线| 欧美肥妇bbw| 成人一区在线观看| 看电视剧不卡顿的网站| 一区二区在线观看视频| 国产日韩欧美亚洲| 日韩一级完整毛片| av一区二区三区| 韩国精品主播一区二区在线观看| 亚洲午夜激情av| 中文字幕电影一区| 精品国产一区二区三区久久久蜜月 | 亚洲bt欧美bt精品777| 中文字幕一区二区三区精华液| 精品欧美久久久| 日韩欧美一卡二卡| 欧美日本一区二区在线观看| 色天天综合色天天久久| 成人18精品视频| 成人精品免费网站| 国产在线观看一区二区| 黑人巨大精品欧美一区| 麻豆国产欧美日韩综合精品二区| 亚洲高清免费观看高清完整版在线观看| 中文字幕不卡在线| 中文字幕欧美三区| 亚洲欧美自拍偷拍| 欧美国产一区二区在线观看| 国产午夜精品久久久久久免费视| 久久久青草青青国产亚洲免观| 日韩精品一区二区三区在线观看| 7777精品伊人久久久大香线蕉完整版 | 久久91精品久久久久久秒播| 日本一道高清亚洲日美韩| 日韩精品一二区| 久久精品免费观看| 国产一区二区三区美女| 国产美女在线精品| 国产麻豆精品95视频| 国产福利一区二区三区视频在线 | 亚洲高清在线精品| 午夜精品久久久久久久久久久| 亚洲国产色一区| 日韩精品午夜视频| 麻豆91小视频| 国产99久久久久久免费看农村| 高清在线观看日韩| 色综合天天综合给合国产| 亚洲综合久久久久| 亚洲影院在线观看| 偷偷要91色婷婷| 奇米亚洲午夜久久精品| 国产一区二区福利| av高清不卡在线| 91精品国产一区二区| 国产亚洲一二三区| 一区二区在线免费观看| 青椒成人免费视频| 成人午夜激情影院| 欧美日韩的一区二区| 久久久电影一区二区三区| 亚洲欧洲一区二区三区| 日韩综合一区二区| 在线免费亚洲电影| 日韩一区二区在线看| 2024国产精品| 亚洲一二三区不卡| 国产精品一品视频| 欧美日韩在线播放三区四区| 成人网在线免费视频| 欧洲另类一二三四区| 26uuu精品一区二区三区四区在线| 亚洲日本在线天堂| 久久国产乱子精品免费女| 91免费版在线看| 99re热这里只有精品免费视频| 欧美视频一区二| 欧美日韩午夜在线视频| 久久久国产精品不卡| 午夜精品免费在线观看| 成人毛片视频在线观看| 在线不卡免费av| 亚洲天堂中文字幕| 国产乱子伦视频一区二区三区| 91久久精品网| 国产精品久久久久婷婷二区次| 欧美国产精品久久| 三级影片在线观看欧美日韩一区二区 | 日本一区二区三区在线观看| 日韩国产欧美视频| 日本高清成人免费播放| 日本不卡一区二区| 91同城在线观看| 久久免费午夜影院| 六月丁香综合在线视频| 欧美日韩国产另类一区| 中文字幕视频一区二区三区久| 国产一区二区影院| 欧美一区二区在线视频| 亚洲尤物在线视频观看| 91热门视频在线观看| 国产亚洲欧美在线| 国产乱对白刺激视频不卡| 精品女同一区二区| 久久99国产精品成人| 日韩视频永久免费| 秋霞午夜av一区二区三区| 欧美日韩亚州综合| 亚洲成人久久影院| 欧美日韩精品三区| 午夜亚洲国产au精品一区二区| 欧美亚洲国产一区二区三区va| 亚洲色图第一区| 91视频免费观看| 亚洲激情欧美激情| 91国产视频在线观看| 亚洲国产美女搞黄色| 欧美丝袜丝交足nylons图片| 亚洲午夜电影在线| 91麻豆精品国产91久久久资源速度 |