日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

以太网Ethernet解码概述

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以太网Ethernet解码概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 1. 申明
    • 2. 目的
    • 3. 背景知識
      • 3.1 Ethernet協議的作用和歷史
      • 3.2 Ethernet承載IP的例子
    • 4. 代碼demo
    • 5. 專欄知識鏈接
    • 6. 寫在最后

1. 申明

本文章屬于原創,其中參考的代碼及文章在結尾處標明,侵刪。

2. 目的

本文是為了解析Ethernet協議及其上層承載的協議所寫demo。

3. 背景知識

3.1 Ethernet協議的作用和歷史

  • 以太網是使用最廣泛的局域網技術。由于其簡單、成本低、可擴展性強、與IP網能夠很好地結合等特點,以太網技術的應用正從企業內部網絡向公用電信網領域邁進。以太網接入是指將以太網技術與綜合布線相結合,作為公用電信網的接入網,直接向用戶提供基于IP的多種業務的傳送通道。以太網技術的實質是一種二層的媒質訪問控制技術,可以在五類線上傳送,也可以與其它接入媒質相結合,形成多種寬帶接入技術。以太網與電話銅纜上的VDSL相結合,形成EoVDSL技術;與無源光網絡相結合,產生EPON技術;在無線環境中,發展為WLAN技術。
  • 以太網技術作為數據鏈路層的一種簡單、高效的技術,以其為核心,與其它物理層技術相結合,形成以太網技術接入體系。EoVDSL方式結合了以太網技術和VDSL技術的特點,與ADSL和(五類線上的)以太網技術相比,具有一定的潛在優勢。WLAN技術的應用不斷推廣,EPON技術的研究開發正取得積極進展。隨著上述“可運營、可管理”相關關鍵技術問題的逐步解決,以太網技術接入體系將在寬帶接入領域得到更加廣泛的應用。
  • 同時,以太網技術的應用正在向城域網領域擴展。IEEE802.17RPR技術在保持以太網原有優點的基礎上,引入或增強了自愈保護、優先級和公平算法、OAM等功能,是以太網技術的重要創新。對以太網傳送的支持,成為新一代SDH設備(MSTP)的主要特征。10G以太網技術的迅速發展,推動了以太網技術在城域網范圍內的廣泛應用,WAN接口(10Gbase-W)的引入為其向骨干網領域擴展提供了可能。
  • 總之,以太網技術由于其簡單、低成本、易擴展的優勢,在用戶桌面系統和企業內部網絡已非常普及,隨著技術的發展創新,其應用領域正逐步向接入網、城域網、甚至廣域網/骨干網方面拓展,形成基于IP/Ethernet的端到端無縫連接。
  • 3.2 Ethernet承載IP的例子


    字段含義:

  • Destination/目的字段:標識目標通信方的MAC地址 (6bytes)

  • Source/源字段:標識發送端的MAC地址 (6bytes)

  • Type/類型值:標志上層協議 (2bytes)

  • MAC地址:

  • 所有設備的MAC地址是全球唯一的.

  • MAC地址大小為6字節

  • MAC地址的前半部分被稱為"OUI代碼"廠商唯一標識符, 后半部分廠商自動分配

  • 4. 代碼demo

    #include <stdint.h>/* mac 地址長度 */ #define MAC_ADDR_BTYES_LEN 6 /* ethernet頭總長度 */ #define MAC_TOTAL_BTYES_LEN 14 /* 上層承載協議類型 */ #define PROTOCOL_UNKNOW 0 #define PROTOCOL_IPV4 1 #define PROTOCOL_IPV6 2 #define PROTOCOL_MPLS 3 #define PROTOCOL_VLAN 4 #define PROTOCOL_PPPOE 5 #define PROTOCOL_8021AD 6typedef struct {uint8_t dest_addr[MAC_ADDR_BTYES_LEN];uint8_t src_addr[MAC_ADDR_BTYES_LEN];uint16_t next_protocol_type; } st_ethernet_hdr;static inline int get_eth_next_protocol(st_ethernet_hdr *dr) {switch (ntohs(dr->next_protocol_type)) {case 0x0800:return PROTOCOL_IPV4;case 0x86dd:return PROTOCOL_IPV6;case 0x8847:case 0x8848:return PROTOCOL_MPLS;case 0x8100:case 0x9100:return PROTOCOL_VLAN;case 0x8864:return PROTOCOL_PPPOE;case 0x88a8:return PROTOCOL_8021AD;default:return PROTOCOL_UNKNOW;}return PROTOCOL_UNKNOW; }/*解碼ethernet協議@param1 pdata: 原始數據pdata的指針@param2 len: 原始數據的長度@return int:PROTOCOL_UNKNOW : faildother value : succeed */ int decode_ethernet(uint8_t *pdata, uint8_t len) {if (UNLIKELY(len < MAC_TOTAL_BTYES_LEN)) {return PROTOCOL_UNKNOW;}st_ethernet_hdr *pethernet = (st_ethernet_hdr *)(pdata);return get_eth_next_protocol(pethernet); }

    劃重點: 為了解碼Ethernet層,需要傳入起始正確的數據和長度,在解碼返回值不為PROTOCOL_UNKNOW時,說明解析成功,此時應該在調用函數之后,將指向數據的指針和長度分別偏移MAC_TOTAL_BTYES_LEN,即14bytes,來跳過Ethernet層。

    5. 專欄知識鏈接

    1. 協議知識概述
    2. H264分辨率解碼概述
    3. H265分辨率解碼概述

    6. 寫在最后

    本文引用了以下文章作者的代碼或思路, 并結合了實際項目中的代碼整理出的demo,如有問題歡迎指正。

    https://blog.csdn.net/qq_28110727/article/details/96581196

    總結

    以上是生活随笔為你收集整理的以太网Ethernet解码概述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。