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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

千兆以太网(1):网络基础知识

發(fā)布時間:2024/6/21 综合教程 55 生活家
生活随笔 收集整理的這篇文章主要介紹了 千兆以太网(1):网络基础知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  計算機網(wǎng)絡是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網(wǎng)絡操作系統(tǒng)、網(wǎng)絡管理軟件及網(wǎng)絡通信協(xié)議的管理和協(xié)調(diào)下,實現(xiàn)資源共享和信息傳遞的計算機系統(tǒng)。計算機網(wǎng)絡類型的劃分標準各種各樣,按網(wǎng)絡所覆蓋的地理范圍的不同,計算機網(wǎng)絡可分為局域網(wǎng)(LAN)、 城域網(wǎng)(MAN)、廣域網(wǎng)(WAN)、互聯(lián)網(wǎng)(Initernet)。局域網(wǎng)按傳輸介質(zhì)所使用的訪問控制方法可分為:以太網(wǎng)(Ethernet)、光纖分布式數(shù)據(jù)接口(FDDI)、異步傳輸模式(ATM)、令牌環(huán)網(wǎng)(Token Ring)、交換網(wǎng)(Switching) 等,它們在拓樸結(jié)構(gòu)、傳輸介質(zhì)、傳輸速率、數(shù)據(jù)格式等多方面都有許多不同,其中應用最廣泛的當屬以太網(wǎng)。

  以太網(wǎng)是為了實現(xiàn)局域網(wǎng)通信而設計的一種技術(shù),它規(guī)定了包括物理層的連線、電子信號和介質(zhì)訪問層協(xié)議的內(nèi)容。以太網(wǎng)根據(jù)最大傳輸速率的不同可以分為標準的以太網(wǎng)(10Mbit/s)、快速以太網(wǎng)(100Mbit/s)、千兆以太網(wǎng) (1000Mbit/s)和萬兆以太網(wǎng)(10Gbit/s)。百兆網(wǎng)和千兆網(wǎng)是目前應用最多的,顧名思義,百兆網(wǎng)的最大傳輸速率為 100Mbit/s,需要注意的是,我們常見的網(wǎng)速的單位是 MByte/s,而 1Byte 為 8bit,所以百兆網(wǎng)能達到的最大網(wǎng)速為 12.5MByte/s。同理,千兆網(wǎng)的最大傳輸速率為 1000Mbit/s,能達到的最大網(wǎng)速為 125MByte/s。

一、計算機網(wǎng)絡體系結(jié)構(gòu)模型

  國際標準化組織(ISO)在 1978 年提出了“開放系統(tǒng)互聯(lián)參考模型”,即著名的 OSI/RM 模型(Open System Interconnection/Reference Model)。它將計算機網(wǎng)絡體系結(jié)構(gòu)的通信協(xié)議劃分為七層,自下而上依次為:物理層(Physics Layer)、數(shù)據(jù)鏈路層(Data Link Layer)、網(wǎng)絡層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層 (Application Layer)。下面 4 層主要提供數(shù)據(jù)傳輸和交換功能,即以節(jié)點到節(jié)點之間的通信為主;第 4 層作為上下兩部分的橋梁,是整個網(wǎng)絡體系結(jié)構(gòu)中最關鍵的部分;上 3 層則以提供用戶與應用程序之間的信息和數(shù)據(jù)處理功能為主。

  除了標準的 OSI 七層模型以外,常見的 網(wǎng)絡層次劃分還有 TCP/IP 四層協(xié)議,它們之間的對應關系如圖所示:

  不管是 OSI 七層模型還是 TCP/IP 的四層模型,它們每一層中都有自己的專屬協(xié)議,需要完成相應的工作以及與上下層級之間進行溝通。由于目前 TCP/IP 協(xié)議已經(jīng)成為 Internet 中的【通用語言】,任何和互聯(lián)網(wǎng)有關的操作都離不開 TCP/IP 協(xié)議,沒有它我們就根本不可能上網(wǎng),所以下面就以 TCP/IP 協(xié)議為主來進行講解。

應用層:為操作系統(tǒng)或網(wǎng)絡應用程序提供訪問網(wǎng)絡服務的接口,主要協(xié)議有文件傳輸協(xié)議(FTP),超文本傳輸協(xié)議(HTTP),簡單郵件傳輸協(xié)議(SMTP),遠程登錄(Telnet);
傳輸層:為兩臺主機上的應用程序提供端到端的通信,在 TCP/IP 協(xié)議簇中,有兩個不同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和 UDP(用戶數(shù)據(jù)報協(xié)議),它們分別承載不同的應用。TCP 協(xié)議是一種面向連接的傳輸,能夠提供可靠的字節(jié)流傳輸服務,UDP 協(xié)議是一種簡單的面向數(shù)據(jù)報的傳輸層協(xié)議,與 TCP 協(xié)議不同的是 UDP 無法保證數(shù)據(jù)報文準確達到目的地。
網(wǎng)絡層:負責提供基本的數(shù)據(jù)封包傳送功能,讓每個據(jù)包都能夠到達目的主機,主要協(xié)議有 IP 協(xié)議(網(wǎng)際協(xié)議)、ICMP 協(xié)議(Internet 互連網(wǎng)控制報文協(xié)議)、ARP/RARP (地址解析/反向地址解析協(xié)議)以及 IGMP 協(xié)議(Internet 組管理協(xié)議)。
網(wǎng)絡接口層:通常包括操作系統(tǒng)中的設備驅(qū)動程序和計算機中對應的網(wǎng)絡接口卡,它們一起處理與電纜的物理接口細節(jié),主要協(xié)議有:以太網(wǎng)、令牌環(huán)、幀中繼等;

  從該圖中可以看出,當主機 A 向主機 B 發(fā)送數(shù)據(jù)時,用戶數(shù)據(jù)將由應用層產(chǎn)生;當用戶數(shù)據(jù)在經(jīng)過傳輸層時,傳輸層對用戶數(shù)據(jù)進行封裝,在用戶數(shù)據(jù)的基礎上添加了一個 TCP/UDP 首部數(shù)據(jù),此時數(shù)據(jù)包變成了 TCP/UDP 段;當它經(jīng)過網(wǎng)絡層時,網(wǎng)絡層對 TCP/UDP 段進行封裝,在 TCP/UDP 段的基礎上添加了一個 IP 首部數(shù)據(jù),此時 TCP/UDP 段變成了 IP 數(shù)據(jù)報;當 它經(jīng)過網(wǎng)絡接口層時,網(wǎng)絡接口層對 IP 數(shù)據(jù)報進行封裝,在 IP 數(shù)據(jù)報的基礎上添加了以太網(wǎng)首部數(shù)據(jù)和以太網(wǎng)尾部(一般為 4byte CRC校驗值)兩個數(shù)據(jù),此時 IP 數(shù)據(jù)報變成了以太網(wǎng)幀。由此可以看出,數(shù)據(jù)經(jīng)過層層封裝成幀后發(fā)到傳輸介質(zhì)上,到達目的主機后每層協(xié)議再剝掉相應的首部數(shù)據(jù),最后將應用層數(shù)據(jù)交給主機 B 處理。

二、以太網(wǎng)幀結(jié)構(gòu)

  以太網(wǎng)類型有很多種,如下所示:

  TCP協(xié)議比較難設計,這里僅說明 IP 協(xié)議的 UDP協(xié)議,順便說一下簡單的 ARP協(xié)議。如下圖所示(單擊圖片可放大),上半部分為 IP - UDP 協(xié)議,下半部分為 ARP 協(xié)議,一圖說明所有。

1、前導碼(Preamble)

  為了實現(xiàn)底層數(shù)據(jù)的正確闡述,物理層使用7個字節(jié)同步碼(7個55),二進制表現(xiàn)為 0 和 1 交替,其作用是使發(fā)送方和接收方的時鐘同步。

2、幀起始界定符(SFD,Start Frame Delimiter)

  使用1個字節(jié)的SFD(0xd5),二進制表現(xiàn)為“10101011”,用來表示一幀的開始,即后面緊跟著傳輸?shù)木褪且蕴W(wǎng)的幀頭。

3、以太網(wǎng)幀頭

(1)目的MAC地址

  即接收端物理MAC地址,占用6個字節(jié)。MAC地址從應用上可分為單播地址、組播地址和廣播地址。單播地址:第一個字節(jié)的最低位為0,比如00-00-00-11-11-11,一般用于標志唯一的設備;組播地址:第一個字節(jié)的最低位為1,比如01-00-00-11-11-11,一般用于標志同屬一組的多個設備;廣播地址:所有48bit全為1,即FF-FF-FF-FF-FF-FF,它用于標志同一網(wǎng)段中的所有設備。

(2)源MAC地址

  即發(fā)送端物理MAC地址,占用6個字節(jié)。

(3)長度/類型

  長度/類型具有兩個意義,當這兩個字節(jié)的值小于1536(十六進制為0x0600)時,代表該以太網(wǎng)中數(shù)據(jù)段的長度;如果這兩個字節(jié)的值大于1536,則表示該以太網(wǎng)中的數(shù)據(jù)屬于哪個上層協(xié)議,例如0x0800代表IP協(xié)議(網(wǎng)際協(xié)議)、0x0806代表ARP協(xié)議(地址解析協(xié)議)等。

4、數(shù)據(jù)段

  長度最小46個字節(jié),最大1500個字節(jié)。

  長度最小46個字節(jié),總的以太網(wǎng)幀長度最小為 64 個字節(jié),其原因是因為以太網(wǎng)是不可靠的,這意味著它并不知道對方有沒有收到自己發(fā)出的數(shù)據(jù)包,但如果他發(fā)出的數(shù)據(jù)包發(fā)生錯誤,需要進行重傳。以太網(wǎng)的錯誤主要是發(fā)生碰撞,碰撞是指兩臺機器同時監(jiān)聽到網(wǎng)絡是空閑的,同時發(fā)送數(shù)據(jù)就會發(fā)生碰撞,碰撞對于以太網(wǎng)來說是正常的。要保證以太網(wǎng)的重傳,必須保證收到碰撞信號的時候數(shù)據(jù)包沒有傳完,要實現(xiàn)這一要求,發(fā)送方和接收方之間的距離很關鍵,也就是說信號在發(fā)送方和接收方之間傳輸?shù)膩砘貢r間必須控制在一定范圍之內(nèi)。IEEE 定義了這個標準,一個碰撞域內(nèi)最 遠的兩臺機器之間的 round-trip time 要小于 512 bit time(傳輸一個比特需要的時間),這也是我們常說的一個碰撞域的直徑。512 個 bit time 也就是 64 字節(jié)的傳輸時間,如果以太網(wǎng)數(shù)據(jù)包 ≥ 64 個字節(jié)就能保證碰撞信號到達發(fā)送方的時候,數(shù)據(jù)包還沒有傳完。最小數(shù)據(jù)幀的設計和以太網(wǎng)電纜長度有關,為的是讓兩個相距最遠的站點能夠感知到雙方的數(shù)據(jù)發(fā)生了碰撞,最遠兩端數(shù)據(jù)的往返時間就是爭用期,以太網(wǎng)的爭用期是 51.2 us,正好發(fā)送 64byte 數(shù)據(jù)。

  最大值1500稱為以太網(wǎng)的最大傳輸單元(MTU,Maximum Transmission Unit),之所以限制最大傳輸單元是因為在多個計算機的數(shù)據(jù)幀排隊等待傳輸時,如果某個數(shù)據(jù)幀太大的話,那么其它數(shù)據(jù)幀等待的時間就會加長,導致體驗變差。另外還要考慮網(wǎng)絡I/O控制器緩存區(qū)資源以及網(wǎng)絡最大的承載能力等因素,因此最大傳輸單元是由各種綜合因素決定的。為了避免增加額外的配置,通常以太網(wǎng)的有效數(shù)據(jù)字段小于1500個字節(jié),現(xiàn)在電腦的配置都很高了,很多都支持巨型幀,巨型幀可以超過 1500 個字節(jié)。

  不同的協(xié)議,數(shù)據(jù)段的組成結(jié)構(gòu)不同,后面再詳細說明。

5、幀檢驗序列(FCS,F(xiàn)rame Check Sequence)

  為了確保數(shù)據(jù)的正確傳輸,在數(shù)據(jù)的尾部加入了4個字節(jié)的循環(huán)冗余校驗碼(CRC校驗)來檢測數(shù)據(jù)是否傳輸錯誤。CRC數(shù)據(jù)校驗從以太網(wǎng)幀頭開始即不包含前導碼和幀起始界定符。通用的CRC標準有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在網(wǎng)絡通信系統(tǒng)中應用最廣泛的是CRC-32標準。

6、幀間隙(IFG,Interpacket Gap)

  幀間隙的時間就是網(wǎng)絡設備和組件在接收一幀之后,需要短暫的時間來恢復并為接收下一幀做準備的時間,IFG的最小值是96 bit time,即在媒介中發(fā)送96位原始數(shù)據(jù)所需要的時間,在不同媒介中IFG的最小值是不一樣的。不管10M/100M/1000M的以太網(wǎng),兩幀之間最少要有96bit time,IFG的最少間隔時間計算方法如下:

10Mbit/s最小時間為:96*100ns = 9600ns;
100Mbit/s最小時間為:96*10ns = 960ns;
1000Mbit/s最小時間為:96*1ns = 96ns;

三、ARP協(xié)議

1、ARP 作用

  在網(wǎng)絡通訊時,源主機的應用程序知道目的主機的 IP 地址和端口號,卻不知道目的主機的硬件地址。而數(shù)據(jù)包首先是被網(wǎng)卡接收到再去處理上層協(xié)議的,如果接收到的數(shù)據(jù)包的硬件地址與本機不符則直接丟棄。因此在通訊前必須獲得目的主機的硬件地址.ARP 協(xié)議就起到這個作用。簡單的說就是當一個源主機要發(fā)包時,可能會發(fā)送 ARP 請求包去詢問所有主機:“IP地址為xxxxxx的目的主機,你的MAC地址是多少?”,這個請求包會廣播(全FF)到本地網(wǎng)段,目的主機發(fā)現(xiàn)這是自己的 IP 地址,于是返回 ARP 應答包,提供自己的 MAC 地址給主機。

  每臺主機都有一個 ARP 緩存表,,我們可以用 arp -a 命令查看該表中的內(nèi)容。緩存表中的表項有時間限制,一般為 20 分鐘,如果 20 分鐘內(nèi)沒有再次使用某個表項,則該表項將會失效,下次還要發(fā) ARP 請求來獲得目的主機的硬件地址。除此之外我們還可以通過 arp -s 命令手動向 ARP 緩存表中添加表項。

2、ARP 字段

  當【以太網(wǎng)幀頭】的【長度/類型】為 0x0806 時,表明這是 ARP 包,ARP部分字段詳細說明如下:

3、模擬 FPGA 發(fā)送 ARP 包

  使用小兵以太網(wǎng)測試儀可以組建 ARP 包,模擬 FPGA 發(fā)送 ARP 包的過程。

(1)點擊打開新建流界面。

(2)在常用報文中選擇 arp 請求格式報文。

(3)修改以太網(wǎng)包和 arp 包中各字段內(nèi)容如下所示。

(4)配置好之后點擊確定,將設置好的數(shù)據(jù)包導出為 16 進制格式文本文件。

(5)得到的文本中數(shù)據(jù)內(nèi)容如下所示。

(6)選中該數(shù)據(jù)包,執(zhí)行開始發(fā)布。

(7)使用 wireshark 軟件抓包。

  注意,上面的發(fā)包過程中沒有出現(xiàn) CRC 校驗的內(nèi)容,實際采用 FPGA 發(fā)包時,是需要填充 CRC 校驗值的。

4、FPGA 發(fā)送 ARP 請求包

  像 ARP 包這種簡單的固定的包,CRC 校驗值可以通過軟件 CRC Calculator 計算得出:

  CRC 軟件計算結(jié)果:低字節(jié)在前,高字節(jié)在后。使用該 CRC 校驗值時要調(diào)換高低順序,即 7EADB6D8 應該調(diào)換為 D8B6AD7E:

 //CRC校驗值,使用CRC計算軟件計算得出。
parameter CRC=32'h7eadb6d8;

wire    [31:0]CRC_result;
//為符合以太網(wǎng)包校驗格式,調(diào)整CRC校驗值順序
assign CRC_result = {CRC[7:0],CRC[15:8],CRC[23:16],CRC[31:24]};

  當然,也可以通過代碼自動計算出 CRC 的值,本系列后面的講解會說清 CRC 校驗的結(jié)果。

  FPGA 發(fā)送 ARP 請求包時,目的地址設置為廣播地址(全FF),源地址為板卡地址,可以選擇某 Xilinx 官板的 MAC 地址,以避免和其他實際地址沖突,而且 wireshark 可以識別出來。

5、FPGA 接收 ARP 應答包

  PC 得到 ARP 請求包后,會答復 ARP 應答包,F(xiàn)PGA可以接收 ARP 應答包,獲得 PC 的 MAC 地址,對于 CRC 校驗值,也可以選擇不校驗。

6、補充說明

  關于 ARP 協(xié)議,可以查看小梅哥《FPGA系統(tǒng)設計與驗證實戰(zhàn)指南_V1.2》,CSDN博主春哥筆記根據(jù)該教程進行了實踐,博客鏈接:https://blog.csdn.net/chengfengwenalan/article/details/83584325,此外這篇博客對 ARP 的知識點整理得非常好:https://www.cnblogs.com/zhangming-blog/articles/6004982.html。

四、IP協(xié)議和UDP協(xié)議

  當【以太網(wǎng)幀頭】的【長度/類型】為 0x0800 時,表明這是 IP 包,【IP 首部】的協(xié)議為 17(0x11)時,表明這是 UDP協(xié)議。

1、IP首部

  IP協(xié)議是TCP/IP協(xié)議簇中的核心協(xié)議,也是TCP/IP協(xié)議的載體,IP協(xié)議規(guī)定了數(shù)據(jù)傳輸時的基本單元和格式。IP協(xié)議內(nèi)容由IP首部和數(shù)據(jù)字段組成。所有的TCP、UDP及ICMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸,如果發(fā)送某種錯誤,IP 會丟失該數(shù)據(jù),然后發(fā)送 ICMP 消息給信源端。另外 IP 數(shù)據(jù)報可以不按發(fā)送順序接收。前20個字節(jié)(前4行)和緊跟其后的可選字段(最后1行)是IP數(shù)據(jù)報的首部,前20個字節(jié)(前4行)是固定的,后面可選字段是可有可無的。

版本:4位IP版本號(Version),這個值設置為二進制的0100時表示IPv4,設置為0110時表示IPv6,目前使用比較多的IP協(xié)議版本號是4。
首部長度:4位首部長度(IHL,Internet Header Length),表示IP首部一共有多少個32位(4個字節(jié))。在沒有可選字段時,IP首部長度為20個字節(jié),因此首部長度的值為5。
服務類型:8位服務類型(TOS,Type of service),該字段被劃分成兩個子字段:3位優(yōu)先級字段(現(xiàn)在已經(jīng)基本忽略掉了)和4位TOS字段,最后一位固定為0。服務類型為0時表示一般服務。
總長度:16位IP數(shù)據(jù)報總長度(Total Length),包括IP首部和IP數(shù)據(jù)部分,以字節(jié)為單位。我們利用IP首部長度和IP數(shù)據(jù)報總長度,就可以知道IP數(shù)據(jù)報中數(shù)據(jù)內(nèi)容的起始位置和長度。由于該字段長16bit,所以IP數(shù)據(jù)報最長可達65535字節(jié)。盡管理論上可以傳輸長達65535字節(jié)的IP數(shù)據(jù)報,但實際上還要考慮網(wǎng)絡的最大承載能力等因素。
標識字段:16位標識(Identification)字段,用來標識主機發(fā)送的每一份數(shù)據(jù)報。通常每發(fā)送一份報文它的值就會加1。
標志字段:3位標志(Flags)字段,第1位為保留位;第2位表示禁止分片(1表示不分片,0表示允許分片);第3位標識更多分片(除了數(shù)據(jù)報的最后一個分片外,其它分片都為1)。片偏移:13位片偏移(Fragment Offset),在接收方進行數(shù)據(jù)報重組時用來標識分片的順序。可以全部設置為0。
片偏移:13位片偏移字段,較長的分組在分片后,某片在原分組中的相對位置,,就是說相對用戶數(shù)據(jù)字段的起點,該片從何處開始。片偏移以 8 個字節(jié)為偏移單位,也就是說每個分片的長度一定是 8 字節(jié)的整數(shù)倍。
生存時間:8位生存時間字段TTL(Time To Live),設置了數(shù)據(jù)報可以經(jīng)過的最多路由器數(shù),表示數(shù)據(jù)報在網(wǎng)絡上生存多久。TTL的初始值由源主機設置,一般為32、64或者128,一旦經(jīng)過一個路由器,它的值就減 1,減到 0 時,數(shù)據(jù)報就丟棄,并發(fā)送 ICMP 消息通知源主機。TTL防止丟失的數(shù)據(jù)包在無休止的傳播,
協(xié)議:8位協(xié)議(Protocol)類型,表示此數(shù)據(jù)報所攜帶上層數(shù)據(jù)使用的協(xié)議類型,ICMP為01,TCP為06,UDP為17,當然還有很多別的協(xié)議類型。
首部校驗和:16位首部校驗和(Header Checksum),該字段只校驗數(shù)據(jù)報的首部,不包含數(shù)據(jù)部分;校驗IP數(shù)據(jù)報頭部是否被破壞、篡改和丟失等。
源IP地址:32位源IP地址(Source Address),即發(fā)送端的IP地址,如192.168.1.123。
目的IP地址:32位目的IP地址(Destination Address),即接收端的IP地址,如192.168.1.102。
可選字段:是數(shù)據(jù)報中的一個可變長度的可選信息,選項字段以32bit為界,不足時插入值為0的填充字節(jié),保證IP首部始終是32bit的整數(shù)倍,沒有的話長度可以為 0 。

  IP首部校驗和的計算方法:

1、將16位檢驗和字段置為0,然后將IP首部按照16位分成多個單元;
2、對各個單元采用反碼加法運算(即高位溢出位會加到低位,通常的補碼運算是直接丟掉溢出的高位);
3、此時仍然可能出現(xiàn)進位的情況,將得到的和再次分成高16位和低16位進行累加;
4、最后將得到的和的反碼填入校驗和字段。

2、UDP首部

  數(shù)據(jù)是可以直接封裝在IP協(xié)議里而不使用TCP、UDP或者其它上層協(xié)議的。然而在網(wǎng)絡傳輸中同一IP服務器需要提供各種不同的服務,各種不同的服務類型是使用端口號來區(qū)分的,例如用于瀏覽網(wǎng)頁服務的80端口,用于FTP(文件傳輸協(xié)議)服務的21端口等。TCP和UDP都使用兩個字節(jié)的端口號,理論上可以表示的范圍為0~65535,足夠滿足各種不同的服務類型。

  TCP協(xié)議與UDP協(xié)議作為傳輸層最常用的兩種傳輸協(xié)議,這兩種協(xié)議都是使用IP作為網(wǎng)絡層協(xié)議進行傳輸。下面是TCP協(xié)議與UDP協(xié)議的區(qū)別:

①TCP協(xié)議面向連接,是流傳輸協(xié)議,通過連接發(fā)送數(shù)據(jù),而UDP協(xié)議傳輸不需要連接,是數(shù)據(jù)報協(xié)議;
②TCP為可靠傳輸協(xié)議,而UDP為不可靠傳輸協(xié)議。即TCP協(xié)議可以保證數(shù)據(jù)的完整和有序,而UDP不能保證;
③UDP由于不需要連接,故傳輸速度比TCP快,且占用資源比TCP少;
④TCP協(xié)議常用在對數(shù)據(jù)文件完整性較高的一些場景中,如文件傳輸?shù)取?  UDP協(xié)議常用于對通訊速度有較高要求或者傳輸數(shù)據(jù)較少時,如視頻直播和QQ等。

  使用FPGA實現(xiàn)TCP協(xié)議是完全沒有問題的,但是,F(xiàn)PGA發(fā)展到現(xiàn)在,卻鮮有成功商用的RTL級的TCP協(xié)議設計,大部分以太網(wǎng)傳輸都是基于比較簡單的UDP協(xié)議。TCP協(xié)議設計之初是根據(jù)軟件靈活性設計的,如果使用硬件邏輯實現(xiàn),工程量會十分巨大,而且功能和性能無法得到保證,因此,TCP協(xié)議設計并不適合使用硬件邏輯實現(xiàn)。UDP協(xié)議是一種不可靠傳輸,發(fā)送方只負責數(shù)據(jù)發(fā)送出去,而不管接收方是否正確的接收。在很多場合,是可以接受這種潛在的不可靠性的,例如視頻實時傳輸顯示等。

  UDP首部共8個字節(jié),同IP首部一樣,也是一行以32位(4個字節(jié))為單位。

源端口號:16位發(fā)送端端口號,用于區(qū)分不同服務的端口,端口號的范圍從0到65535。
目的端口號:16位接收端端口號。
UDP長度:16位UDP長度,包含UDP首部長度+數(shù)據(jù)長度,單位是字節(jié)(byte)。
UDP校驗和:16位UDP校驗和。UDP計算校驗和的方法和計算IP數(shù)據(jù)報首部校驗和的方法相似,但不同的是IP數(shù)據(jù)報的校驗和只檢驗IP數(shù)據(jù)報的首部,而UDP校驗和包含三個部分:UDP偽首部,UDP首部和UDP的數(shù)據(jù)部分。偽首部的數(shù)據(jù)是從IP數(shù)據(jù)報頭和UDP數(shù)據(jù)報頭獲取的,包括源IP地址,目的IP地址,協(xié)議類型和UDP長度,其目的是讓UDP兩次檢查數(shù)據(jù)是否已經(jīng)正確到達目的地,只是單純?yōu)榱俗鲂r炗玫模琔DP校驗和不是必須的,接收時可以不進行UDP校驗和,發(fā)送時可以不填充 UDP校驗和,目的主機仍然可以接收到該以太網(wǎng)幀,但是出錯了就不能了,也就是說要么 UDP 校驗和正確,要么 UDP 校驗和為 0,否則都不行。

3、ping、ICMP、IGMP

  https://www.cnblogs.com/AhuntSun-blog/p/12230712.html

  https://www.cnblogs.com/AhuntSun-blog/p/12331863.html

五、接口說明

1、以太網(wǎng)和 RJ45 接口

  常見的以太網(wǎng)接口類型有RJ45接口(電腦網(wǎng)口)、RJ11接口(電話線)、SC光纖接口等。其中RJ45接口是我們常見的網(wǎng)絡設備接口,其采用差分傳輸方式,具有傳輸速率快、抗干擾、傳輸距離遠等優(yōu)點。

  RJ45接口定義以及各引腳功能說明如下圖所示,在以太網(wǎng)中只使用了1、2、3、6這四根線,其中1、2這組負責傳輸數(shù)據(jù)(TX+、TX-),而3、6這組負責接收數(shù)據(jù)(RX+、RX-),另外四根線是備用的。

  總的來說,這一部分知道即可,不需要自己設計代碼。

2、連接關系

  我們的 FPGA 就看成是 MAC側(cè),接收或發(fā)送數(shù)據(jù)到 PHY側(cè),PHY側(cè)再通過 RJ45 水晶頭接口和其他設備進行連接。PHY 芯片有很多種,常見的有 RTL8201、RTL8211、VSC8601等,并不是一種 PHY 芯片就對應一種 MII等協(xié)議,例如 RTL8201支持百兆網(wǎng) MII 協(xié)議,RTL8211除了支持百兆網(wǎng) MII 協(xié)議,還支持千兆網(wǎng) GMII 協(xié)議。PHY芯片是可以配置成不同模式的。

3、MII、RMII、GMII、RGMII

  PHY在發(fā)送數(shù)據(jù)的時候,接收MAC發(fā)過來的數(shù)據(jù)(對PHY來說,沒有幀的概念,都是數(shù)據(jù)而不管什么地址,數(shù)據(jù)還是CRC),把并行數(shù)據(jù)轉(zhuǎn)化為串行流數(shù)據(jù),按照物理層的編碼規(guī)則把數(shù)據(jù)編碼轉(zhuǎn)換為模擬信號發(fā)送出去,收數(shù)據(jù)時的流程反之。PHY還提供了和對端設備連接的重要功能并通過LED燈顯示出自己目前的連接狀態(tài)和工作狀態(tài)。當我們給網(wǎng)卡接入網(wǎng)線的時候,PHY芯片不斷發(fā)出脈沖信號來檢測對端是否有設備,它們通過標準的“語言”交流,互相協(xié)商并確定連接速度、雙工模式、是否采用流控等。通常情況下,協(xié)商的結(jié)果是兩個設備中能同時支持的最大速度和最好的雙工模式。這個技術(shù)被稱為Auto Negotiation,即自動協(xié)商。以太網(wǎng)MAC和PHY之間有一個接口,常用的接口有MII、RMII、GMII、RGMII等。

MII(Medium Independent Interface):MII支持10Mbps和100Mbps的操作,數(shù)據(jù)位寬為4位,在100Mbps傳輸速率下,時鐘頻率為25Mhz。
RMII(Reduced MII):RMII是MII的簡化版,數(shù)據(jù)位寬為2位,在100Mbps傳輸速率下,時鐘頻率為50Mhz。
GMII(Gigabit MII):GMII接口向下兼容MII接口,支持10Mbps、100Mbps和1000Mbps的操作,數(shù)據(jù)位寬為8位,在1000Mbps傳輸速率下,時鐘頻率為125Mhz。
RGMII(Reduced GMII):RGMII是GMII的簡化版,數(shù)據(jù)位寬為4位,在1000Mbps傳輸速率下,時鐘頻率為125Mhz,但是在時鐘的上下沿同時采樣數(shù)據(jù)

七、常用CMD命令

  netsh i i show in  :查詢本地連接的網(wǎng)卡 ID 號,如下顯示為12。

  arp -a      :查詢自己PC的所有 IP 地址,12對應16進制的c。

  ipconfig -all    :查找自己PC的所有 MAC 地址。

  netsh -c i i add neighbors 12 192.168.1.123 00-11-22-33-44-55:將開發(fā)板 IP 綁定開發(fā)板 MAC,12為本地連接的網(wǎng)卡 ID 號,192.168.1.123 為想設置的開發(fā)板 IP,00-11-22-33-44-55為想設置的開發(fā)板MAC。

  arp -s 192.168.0.2 00-25-64-76-BD-40:和上面一樣的功能,將開發(fā)板 IP 綁定開發(fā)板 MAC,192.168.0.2為想設置的開發(fā)板 IP,00-25-64-76-BD-40為想設置的開發(fā)板MAC。

  OK,網(wǎng)絡基礎知識就整理到這,后續(xù)會詳細整理 RGMII 接口下的千兆網(wǎng)收發(fā)系統(tǒng)。

  計算機網(wǎng)絡是一個很大的課題,如果對有些概念不理解,可以去B站看一下韓立剛教學的《計算機網(wǎng)絡原理》,同時可以參閱博客:https://www.cnblogs.com/AhuntSun-blog/p/12390057.html,該博客是對這門課程的學習筆記,基本上課程講過的內(nèi)容都整理上了,非常值得一看!

參考資料:

[1]小梅哥FPGA教程

[2]正點原子FPGA教程

[3]鋯石科技FPGA教程

--------------------------------------------------------------------------------------
作者:咸魚FPGA
出處:https://www.cnblogs.com/xianyufpga/
本文版權(quán)歸作者所有,如需轉(zhuǎn)載請保留此段聲明。

總結(jié)

以上是生活随笔為你收集整理的千兆以太网(1):网络基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。