本系列文章基于xilinx三速以太網IP進行學習介紹。
在完成以太網通信實驗之前,必須要對以太網基礎知識進行了解。時間充裕的可以看看《圖解TCP/IP》作為掃盲。本文重點對以太網幀結構進行介紹。
一、以太網幀格式
以太網幀格式:
前導碼(Preamble):8 字節,連續 7 個 8’h55 加 1 個 8’hd5,表示一個幀的開始,用于雙方設備數據的同步。
目的 MAC 地址:6 字節,存放目的設備的物理地址,即 MAC 地址 ;
源 MAC 地址:6 字節,存放發送端設備的物理地址 ;
長度/類型:2 字節,小于1500為長度,大于則為類型,用于指定協議類型,常用的有 0800 表示 IP 協議,0806 表示 ARP 協議,8035 表示 RARP 協議 ;
數據:46 到 1500 字節,最少 46 字節,不足需要補全 46 字節,例如 IP 協議層就包含在數據 部分,包括其 IP 頭及數據。
FCS:幀尾,4 字節,稱為幀校驗序列,采用 32 位 CRC 校驗,對目的 MAC 地址字段到數據字段進行校驗。
進一步擴展,以 UDP 協議為例,可以看到其結構如下,除了以太網首部的 14 字節,數據部 分包含 IP 首部,UDP 首部,應用數據共 46~1500 字節。
基于FPGA的以太網通信基本都是UDP協議。
UDP協議:用戶數據報協議,一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。數據傳輸過程中延遲小、數據傳輸效率高。
二、UDP 協議的報頭格式
UDP 報頭由 4 個域組成,其中每個域各占用 2 個字節,具體如下:
① UDP 源端口號
② 目標端口號
③ 數據報長度
④ 校驗和
UDP 協議使用端口號為不同的應用保留其各自的數據傳輸通道。數據發送一方將 UDP 數據報通過源端口發送出去,而數據接收一方則通過目標端口接收數據。
數據報的長度是指包括報頭和數據部分在內的總字節數。因為報頭的長度是固定的,所以該 域主要被用來計算可變長度的數據部分(又稱為數據負載)。數據報的最大長度根據操作環境的不同而各異。從理論上說,包含報頭在內的數據報的最大長度為 65535 字節。不過,一些實際應用往往會限制數據報的大小,有時會降低到 8192 字節。
UDP 協議使用報頭中的校驗值來保證數據的安全。UDP校驗和=(IP偽頭部+(UDP首部+數據每兩個字節拼接分別相加的和))。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數據報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發送和接收方的校驗計算值將不會相符,由此 UDP 協議可以檢測是否出錯。雖然 UDP 提供有錯誤檢測,但檢測到錯誤時,錯誤校正,只是簡單地把損壞的消息段扔掉,或者給應用程序提供警告信息。
三、PING功能
ICMP 是 TCP/IP 協議族的一個 IP 層子協議,包含在 IP 數據報里,用于 IP 主機、路由器之間傳遞控制消息。控制消息是指網絡是否連通,主機是否可達等功能。其中 ping 功能采用回送請求和回答報文,回送請求報文類型為 8’h08,回答報文類型為 8’h00。
下一篇,我們將對基于FPGA的以太網通信系統架構進行介紹。
審核編輯:湯梓紅
-
以太網
+關注
關注
40文章
5576瀏覽量
174654 -
接口
+關注
關注
33文章
8923瀏覽量
153148
發布評論請先 登錄
以太網和TCP/IP的關系解析
以太網端口的類型和特性
以太網要怎么連接
解讀工業以太網標準:Profinet與EtherNet/IP
以太網無法連接外網IP,提示No route to host,為什么?
RS485轉LoRa-以太網TCP轉LoRa



評論