1 以太網(wǎng)原理介紹
1.1 以太網(wǎng)幀
在以太網(wǎng)鏈路上的數(shù)據(jù)包稱作以太網(wǎng)幀。以太網(wǎng)幀起始部分由前導(dǎo)碼和幀開始符組成。后面緊跟著一個(gè)以太網(wǎng)報(bào)頭,以MAC地址說明目的地址和源地址。幀的中部是該幀負(fù)載的包含其他協(xié)議報(bào)頭的數(shù)據(jù)包(例如IP協(xié)議、ARP協(xié)議)。以太幀由一個(gè)32位冗余校驗(yàn)碼結(jié)尾。它用于檢驗(yàn)數(shù)據(jù)傳輸是否出現(xiàn)損壞。以太網(wǎng)幀格式如下圖所示。
1.前導(dǎo)碼和幀開始符是固定的,為7個(gè)0x55緊跟著1個(gè)0xd5
2.目的MAC地址指明幀的接受者
3.源MAC地址指明幀的發(fā)送者
4.以太網(wǎng)類型,指示幀的類型,比如0x0800表示該幀是IP數(shù)據(jù)包,0x0806表示該幀是ARP協(xié)議數(shù)據(jù)包
5.數(shù)據(jù)和填充就是所承載的數(shù)據(jù)包,跟前面以太網(wǎng)類型對(duì)應(yīng)。
6.幀校驗(yàn)序列是一個(gè)32位的循環(huán)校驗(yàn)碼(FCS)。
每一個(gè)設(shè)備都有一個(gè)不同的MAC地址,當(dāng)一個(gè)設(shè)備A發(fā)送一個(gè)以太網(wǎng)幀,源MAC地址是自己的MAC地址,目的MAC地址如果是0xffffff,此時(shí)就是廣播,所有與之連接的設(shè)備都會(huì)收到該幀,如果目的MAC地址是一個(gè)獨(dú)特的MAC地址,那么本地MAC地址與之相同的設(shè)備將會(huì)接收到該以太網(wǎng)幀,然后通過判斷以太網(wǎng)幀類型,進(jìn)行下一步數(shù)據(jù)包解析。
1.2 ARP協(xié)議
ARP協(xié)議,全稱為Address Resolution Protocol,即地址解析協(xié)議,ARP協(xié)議屬于以太網(wǎng)幀的一種,前面以太網(wǎng)幀介紹中有說到,我們?nèi)绻麖脑O(shè)備A發(fā)送以太網(wǎng)幀到設(shè)備B,我們不可能每次都進(jìn)行廣播,那么設(shè)備A如何知道設(shè)備B的物理地址呢?ARP協(xié)議就是為了解決這個(gè)問題。
首先設(shè)備A廣播,發(fā)送ARP請(qǐng)求,等收到設(shè)備B的ARP應(yīng)答以后就能知道設(shè)備B的MAC地址。ARP幀格式如下圖所示
ARP字段就是前面以太網(wǎng)幀待填充的數(shù)據(jù)。
硬件類型、上層協(xié)議類型、MAC地址長(zhǎng)度、IP地址長(zhǎng)度均固定不變。
假設(shè)設(shè)備A的IP地址為192.168.0.2,MAC地址為0x00_0a_35_01_fe_c0,我們知道目的IP地址為192.168.0.3,不知道該IP地址對(duì)應(yīng)的MAC地址,如果設(shè)備A想要和IP地址為192.168.0.3的設(shè)備B進(jìn)行通信(如UDP或者IP通信),就必須知道它的MAC地址。此時(shí)設(shè)備A就需要廣播發(fā)送ARP請(qǐng)求,接收方MAC地址填0xff_ff_ff_ff_ff_ff。這樣IP地址為192.168.0.3的設(shè)備就會(huì)解析出這是一個(gè)ARP請(qǐng)求,它詢問自身的MAC地址,此時(shí)它就會(huì)做出ARP應(yīng)答,將自身的MAC地址發(fā)送給對(duì)應(yīng)IP地址的設(shè)備A。
注意發(fā)送ARP請(qǐng)求時(shí),操作碼為0x0001,應(yīng)答時(shí)操作碼為0x0002。
1.3 IP協(xié)議
TCP/IP協(xié)議定義了一個(gè)在因特網(wǎng)上傳輸?shù)陌?,稱為IP數(shù)據(jù)包,而IP數(shù)據(jù)報(bào)(IP Datagram)是個(gè)比較抽象的內(nèi)容,是對(duì)數(shù)據(jù)包的結(jié)構(gòu)進(jìn)行分析。由首部和數(shù)據(jù)兩部分組成,其格式如下圖圖所示。首部的前一部分是固定長(zhǎng)度,共20字節(jié),是所有IP數(shù)據(jù)報(bào)必須具有的。在首部的固定部分的后面是一些可選字段,其長(zhǎng)度是可變的。首部中的源地址和目的地址都是IP協(xié)議地址。
1.4 UDP協(xié)議
UDP 協(xié)議是一種不可靠傳輸,發(fā)送方只負(fù)責(zé)將數(shù)據(jù)發(fā)送出去,而不管接收方是否正確的接收。非常類似于 UART 串口傳輸。但是,在很多場(chǎng)合,是可以接受這種潛在的不可靠性的,例如視頻實(shí)時(shí)傳輸顯示。在這類系統(tǒng)中,由于數(shù)據(jù)并不需要進(jìn)行運(yùn)算并得到非常精確的結(jié)果用于其他功能,而僅僅是顯示在屏幕上,因此可以接受一定程度的丟包或者誤碼。此類應(yīng)用在 LED 大屏顯示系統(tǒng)中應(yīng)用非常廣泛。UDP幀組成如下圖所示
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1629文章
21729瀏覽量
602978 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5419瀏覽量
171596 -
FCS
+關(guān)注
關(guān)注
4文章
32瀏覽量
14454 -
ARP協(xié)議
+關(guān)注
關(guān)注
0文章
10瀏覽量
6888 -
串口傳輸
+關(guān)注
關(guān)注
0文章
33瀏覽量
1795
原文標(biāo)題:FPGA學(xué)習(xí)-以太網(wǎng)原理介紹
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論