XILINX SGMII千兆以太網 (4) 之以太網幀

1、 以太網幀格式

下圖是以太網的幀格式

前導碼(Preamble):8 字節,連續 7 個 8’h55 加 1 個 8’hd5,表示一個幀的開始,用於雙方設備數據的同步。

目的 MAC  地址:6 字節,存放目的設備的物理地址,即 MAC 地址源

源 MAC  地址:6 字節,存放發送端設備的物理地址

類型:2 字節,用於指定協議類型,常用的有 0800 表示 IP 協議,0806 表示 ARP 協議,8035表示 RARP 協議

數據:46 到 1500 字節,最少 46 字節,不足需要補全 46 字節,例如 IP 協議層就包含在數據部分,包括其 IP 頭及數據。

FCS:幀尾,4 字節,稱爲幀校驗序列,採用 32 位 CRC 校驗,對目的 MAC 地址字段到數據字段進行校驗。

 

進一步擴展,以 UDP 協議爲例,可以看到其結構如下,除了以太網首部的 14 字節,數據部分包含 IP 首部,UDP 首部,應用數據共 46~1500 字節。

 

2、 ARP 數據報格式

ARP 地址解析協議,即 ARP(Address Resolution Protocol),根據 IP 地址獲取物理地址。主機發送包含目的 IP 地址的 ARP 請求廣播(MAC 地址爲 48’hff_ff_ff_ff_ff_ff)到網絡上的主機,並接收返回消息,以此確定目標的物理地址,收到返回消息後將 IP 地址和物理地址保存到緩存中,並保留一段時間,下次請求時直接查詢 ARP 緩存以節約資源。下圖爲 ARP 數據報格式 。

幀類型:ARP 幀類型爲兩字節 0806

硬件類型:指鏈路層網絡類型,1 爲以太網

協議類型:指要轉換的地址類型,採用 0x0800 IP 類型,之後的硬件地址長度和協議地址長度分別對應 6 和 4

OP 字段中 1 表示 ARP 請求,2 表示 ARP 應答

例如:|ff ff ff ff ff ff | 00 0a 35 01 fe c0 | 08 06 | 00 01 | 08 00 | 06 | 04 | 00 01 | 00 0a 35 01 fe c0 | c0 a8 00 02 | ff ff ff ff ff ff | c0 a8 00 03|

          [ 以太網地址    以太網源地址     幀類型 ] [ 硬件   協議  硬長|協長  OP        以太網源地址         源IP地址     以太網地址  目的IP地址]                                 10.53.01.254.192

表示向 192.168.0.3 地址發送 ARP 請求。

|00 0a 35 01 fe c0 | 60 ab c1 a2 d5 15 |08 06|00 01|08 00|06|04|00 02| 60 ab c1 a2 d5 15|c0 a8 00 03|00 0a 35 01 fe c0|c0 a8 00 02|

表示向 192.168.0.2 地址發送 ARP 應答。

 

3、 IP  數據報格式

因爲 UDP 協議包只是 IP 包中的一種, 所以我們來介紹一下 IP 包的數據格式。下圖爲 IP 分組的報文頭格式,報文頭的前 20 個字節是固定的,後面的可變。

版本:佔 4 位,指 IP 協議的版本目前的 IP 協議版本號爲 4 (即 IPv4)

首部長度:佔 4 位,可表示的最大數值是 15 個單位(一個單位爲 4 字節)因此 IP 的首部長度的最大值是 60 字節

區分服務:佔 8 位,用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使用過.1998 年這個字段改名爲區分服務.只有在使用區分服務(DiffServ)時,這個字段才起作用.一般的情況下都不使用這個字段

總長度:佔 16 位,指首部和數據之和的長度,單位爲字節,因此數據報的最大長度爲 65535 字節.總長度必須不超過最大傳送單元 MTU

標識:佔 16 位,它是一個計數器,用來產生數據報的標識
標誌(flag):佔 3 位,目前只有前兩位有意義
      MF   標誌字段的最低位是 MF (More Fragment)
               MF=1 表示後面“還有分片”。MF=0 表示最後一個分片

      DF   標誌字段中間的一位是 DF (Don't Fragment)
              只有當 DF=0 時才允許分片

片偏移:佔 12 位,指較長的分組在分片後,某片在原分組中的相對位置.片偏移以 8 個字節爲偏移單位

生存時間:佔 8 位,記爲 TTL (Time To Live) 數據報在網絡中可通過的路由器數的最大值,TTL 字段是由發送端初始設置一個 8 bit 字段.推薦的初始值由分配數字 RFC 指定,當前值爲 64.發送 ICMP 回顯應答時經常把 TTL 設爲最大值 255

協議:佔 8 位,指出此數據報攜帶的數據使用何種協議,以便目的主機的 IP 層將數據部分上交給哪個處理過程, 1 表示爲 ICMP 協議, 2 表示爲 IGMP 協議, 6 表示爲 TCP 協議, 17 表示爲 UDP 協議 

首部檢驗和:佔 16 位,只檢驗數據報的首部不檢驗數據部分,採用二進制反碼求和,即將 16 位數據相加後,再將進位與低 16 位相加,直到進位爲 0,最後將 16 位取反。

源地址和目的地址:都各佔 4 字節,分別記錄源地址和目的地址

 

3、 UDP 協議

UDP 是 User Datagram Protocol(用戶數據報協議)的英文縮寫。 UDP 只提供一種基本的、低延遲的被稱爲數據報的通訊。所謂數據報,就是一種自帶尋址信息,從發送端走到接收端的數據包。 UDP 協議經常用於圖像傳輸、網絡監控數據交換等數據傳輸速度要求比較高的場合。

UDP 協議的報頭格式:
UDP 報頭由 4 個域組成,其中每個域各佔用 2 個字節,具體如下:
 

① UDP 源端口號
② 目標端口號
③ 數據報長度
④ 校驗和

UDP 協議使用端口號爲不同的應用保留其各自的數據傳輸通道。 數據發送一方將 UDP 數據報通過源端口發送出去,而數據接收一方則通過目標端口接收數據。

數據報的長度是指包括報頭和數據部分在內的總字節數。因爲報頭的長度是固定的,所以該域主要被用來計算可變長度的數據部分(又稱爲數據負載)。數據報的最大長度根據操作環境的不同而各異。從理論上說,包含報頭在內的數據報的最大長度爲 65535 字節。不過,一些實際應用往往會限制數據報的大小,有時會降低到 8192 字節。

UDP 協議使用報頭中的校驗值來保證數據的安全。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之後,還需要再重新計算。如果某個數據報在傳輸過程中被第三方篡改或者由於線路噪音等原因受到損壞,發送和接收方的校驗計算值將不會相符,由此 UDP 協議可以檢測是否出錯。雖然 UDP 提供有錯誤檢測,但檢測到錯誤時,錯誤校正,只是簡單地把損壞的
消息段扔掉,或者給應用程序提供警告信息。
 

4、 Ping 功能

ICMP 是 TCP/IP 協議族的一個 IP 層子協議,包含在 IP 數據報裏,用於 IP 主機、路由器之間傳遞控制消息。控制消息是指網絡是否連通,主機是否可達等功能。其中 ping 功能採用回送請求和回答報文,回送請求報文類型爲 8’h08,回答報文類型爲 8’h00。
 

 

5、 SMI(MDC/MDIO)總線接口

串行管理接口(Serial Management Interface),也被稱作 MII 管理接口(MII Management Interface),包括 MDC 和 MDIO 兩條信號線。 MDIO 是一個 PHY 的管理接口,用來讀/寫 PHY 的寄存器,以控制 PHY 的行爲或獲取 PHY 的狀態, MDC 爲 MDIO 提供時鐘,由 MAC 端提供,也就是 FPGA 端。 MDC 的週期最小爲 400ns,也就是最大時鐘爲 2.5MHz。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章