亚洲欧美第一页_禁久久精品乱码_粉嫩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黄色小视频| 欧美性欧美巨大黑白大战| av不卡一区二区三区| 国产91在线观看| 成人黄色小视频| 97精品久久久午夜一区二区三区| av在线播放一区二区三区| 99久久99久久久精品齐齐 | 国产精品天美传媒| 国产亚洲午夜高清国产拍精品| 久久久国产综合精品女国产盗摄| 久久久不卡影院| 综合婷婷亚洲小说| 午夜精品在线看| 久久国产精品72免费观看| 精一区二区三区| 成人av网站在线| 在线精品视频免费观看| 日韩一区二区在线免费观看| 久久先锋资源网| 亚洲欧美另类图片小说| 日韩精品一二区| 丁香另类激情小说| 欧美在线视频日韩| 久久一夜天堂av一区二区三区| 国产精品久久久久久亚洲毛片 | 精品久久久久一区| 国产精品午夜在线| 亚洲午夜精品一区二区三区他趣| 免费一级欧美片在线观看| 国产 欧美在线| 欧美人与禽zozo性伦| 国产午夜精品久久久久久免费视| 亚洲欧洲性图库| 麻豆视频观看网址久久| bt欧美亚洲午夜电影天堂| 欧美日韩第一区日日骚| 久久久久88色偷偷免费| 亚洲成av人片一区二区梦乃| 国产乱子伦视频一区二区三区 | 欧美国产乱子伦| 亚洲成av人片| 91丨porny丨首页| 日韩精品一区在线| 亚洲一区二区三区精品在线| 国产精品99久久久久| 51久久夜色精品国产麻豆| 国产精品无圣光一区二区| 久久综合综合久久综合| 欧美曰成人黄网| 亚洲三级在线免费| 国产成人精品www牛牛影视| 欧美美女黄视频| 亚洲免费大片在线观看| 成人精品国产福利| 国产亚洲欧美色| 乱中年女人伦av一区二区| 欧美三级在线看| 亚洲精品免费视频| 99国产精品国产精品毛片| 久久综合九色综合97婷婷| 日本不卡在线视频| 欧美三级电影在线观看| 一区二区在线电影| 99re热视频这里只精品| 欧美国产精品一区二区三区| 国产综合色视频| 日韩免费高清电影| 亚洲mv在线观看| 欧美日韩国产综合一区二区| 亚洲一区二区三区视频在线播放| 99久久精品久久久久久清纯| 中文字幕乱码一区二区免费| 国模套图日韩精品一区二区| 久久色中文字幕| 国产成a人亚洲精| 中文字幕精品一区| 99麻豆久久久国产精品免费| 国产精品美女一区二区在线观看| av成人老司机| 一区二区三区免费看视频| 欧美性三三影院| 日韩不卡一区二区三区| 精品国产乱码久久久久久久| 国产麻豆日韩欧美久久| 国产日韩影视精品| 99久免费精品视频在线观看 | 日本人妖一区二区| 欧美一级一级性生活免费录像| 日本欧美加勒比视频| 精品裸体舞一区二区三区| 国产精品99久久久久久久vr| 国产精品久久一卡二卡| 99re热这里只有精品视频| 亚洲大片在线观看| 欧美电影精品一区二区| 成人免费高清在线观看| 一区二区三区中文字幕| 欧美日韩国产天堂| 麻豆精品一区二区三区| 国产精品人妖ts系列视频| 在线视频一区二区三区| 美国毛片一区二区三区| 国产精品热久久久久夜色精品三区| 91欧美一区二区| 三级欧美韩日大片在线看| 久久久五月婷婷| 在线观看成人小视频| 久久精品国产99国产| 国产精品久久久久久久浪潮网站 | 91精品福利在线一区二区三区| 老司机精品视频线观看86| 国产精品区一区二区三区| 欧美区视频在线观看| 成人性生交大片免费看在线播放| 亚洲地区一二三色| 国产欧美精品一区aⅴ影院| 欧美日韩久久一区| 成人h动漫精品一区二区| 日韩高清电影一区| 18成人在线视频| 精品99一区二区| 精品视频一区 二区 三区| 国产成人免费高清| 天堂蜜桃一区二区三区| 日韩理论片一区二区| 欧美精品一区二区三区蜜桃| 欧美在线观看一区| 91在线视频网址| 国产精品18久久久| 同产精品九九九| 中文字幕在线不卡一区| 精品欧美一区二区久久| 色老头久久综合| 成人精品高清在线| 国产福利一区二区三区视频| 人人精品人人爱| 一个色综合av| 亚洲精品视频在线观看免费| 亚洲欧洲日韩在线| 国产喷白浆一区二区三区| 91精品国产高清一区二区三区 | 激情综合色综合久久| 亚洲成人高清在线| 洋洋av久久久久久久一区| 国产精品久久久久久久久久免费看| 久久精品亚洲精品国产欧美| 欧美精品一区二区三区视频| 精品日韩一区二区三区免费视频| 91超碰这里只有精品国产| 欧美撒尿777hd撒尿| 色噜噜久久综合| 91首页免费视频| 91成人免费在线视频| 在线观看亚洲精品视频| 91福利视频在线| 777a∨成人精品桃花网| 欧美一区二区三区公司| 日韩一级在线观看| 欧美精品一区二区三区在线| 久久综合一区二区| 国产日韩精品视频一区| 国产精品卡一卡二| 亚洲免费观看在线视频| 亚洲国产你懂的| 免费亚洲电影在线| 精品亚洲免费视频| 国产v综合v亚洲欧| 97se亚洲国产综合自在线| 欧亚洲嫩模精品一区三区| 欧美性猛交一区二区三区精品| 欧美日韩黄视频| 久久久久免费观看| 国产精品护士白丝一区av| 亚洲精品中文在线观看| 亚洲一区二区三区四区五区黄 | 成人黄页在线观看| 91免费看视频| 日韩午夜激情免费电影| 国产欧美一区二区精品忘忧草| 亚洲女子a中天字幕| 日本美女一区二区| 不卡的av中国片| 日韩一区二区在线观看视频播放| 国产女主播视频一区二区| 亚洲国产成人91porn| 国产一区二区精品在线观看| 一本大道综合伊人精品热热| 日韩女优av电影在线观看| 国产精品成人一区二区艾草 | 亚洲码国产岛国毛片在线| 日本美女视频一区二区| 色综合久久九月婷婷色综合| 日韩欧美综合一区| 亚洲乱码日产精品bd| 激情国产一区二区|