天天看點

接口協定(四):以太網(Ethernet)學習(一):協定

目錄

    • 一、以太網
    • 二、網絡模型
    • 三、以太網資料包格式
      • 以太網幀格式
    • 三、TCP/IP協定簇
      • 1、IP協定
      • 2、UDP協定

因為沒有做過以太網的項目,也沒有進行過以太網通信測試,本片部落格僅僅是對以太網協定極小一部分的學習了解。如有不當之處,還請指正。

一、以太網

以太網是一種産生較早,使用相當廣泛的區域網路技術,區域網路就是一個區域的網絡互聯,可以使辦公室也可以是學校等等,大小規模不一。

最初是由Xerox(施樂)公司建立(大概是1973年誕生)并由Xerox、 Intel和DEC公司聯合開發的基帶區域網路規範,後來被電氣與電子工程師協會( IEEE)所采納作為802.3的标準。

目前以太網根據速度等級分類大概分為:标準以太網(10Mbit/s),快速以太網(100Mbit/s),千兆以太網(1000Mbit/s),以及更快的萬兆以太網(10Gbit/s)。但在平常使用中,快速以太網和千兆以太網已經足夠了。

因為以太網通信不是像藍牙那樣無限通信,而是通過連接配接線進行通信,是以以太網接發雙方都會有接口。以太網接口類型有RJ45接口,RJ11接口(電話線接口),SC光纖接口。其中RJ45接口使我們最常用的以太網接口(電腦接口)。

RJ45接口也稱為水晶頭,由插頭和插座組成

接口協定(四):以太網(Ethernet)學習(一):協定
接口協定(四):以太網(Ethernet)學習(一):協定

可以看到,RJ45接口和HDMI等接口一樣,也是采用差分資料傳輸,這種傳輸有抗幹擾能力強的特性(這在高速資料傳輸中很重要)。

以太網常用于大型資料傳輸(如:視訊資料),以太網也叫以太網協定,就是一種傳輸規則,發收雙方必須遵守這種規則才能正确地進行資料傳輸和接收。

以太網通信是以資料包的形式傳輸, 其單包資料量達到幾十, 甚至成百上千個位元組。

二、網絡模型

接口協定(四):以太網(Ethernet)學習(一):協定

也有将TCP/IP分為四層的模型

接口協定(四):以太網(Ethernet)學習(一):協定

而我們在使用FPGA設計以太網傳輸時,基本隻需要考慮資料發送,即隻需要考慮設計實體層,也就是生成比特流。

如果是進行網絡系統設計,就需要考慮各種接口(應用層),友善使用者等調用。

三、以太網資料包格式

接口協定(四):以太網(Ethernet)學習(一):協定

可以看到,我們一幀能發送的真正的資料内容為:18-1472 Byte;然後将使用者資料添加UDP首部,形成UDP層;再加上IP首部,形成IP層;最後加上前導碼、SFD(幀起始界定符)、以太網幀頭、以及FCS(幀檢驗序列),構成了MAC層(實體層,包括源MAC位址和目的MAC位址),也就是最終需要在通信線路上傳輸的資料。

在設計實體層時,隻需要計算得到各個首部、前導碼、起始界定符、以及校驗,就可以得到實體層,然後進行傳輸。

以太網幀格式

摘自《開拓者FPGA開發指南》

接口協定(四):以太網(Ethernet)學習(一):協定

前導碼( Preamble) : MAC實體層使用7個位元組同步碼( 0和1交替( 55-55-55-55-55-55-55))實作資料的同步。

幀起始界定符( SFD, Start Frame Delimiter):使用1個位元組的SFD(固定值為0xd5)來表示一幀的開始,後面緊跟着傳輸的就是以太網的幀頭。

目的MAC位址: 即接收端實體MAC位址,占用6個位元組。 MAC位址從應用上可分為單點傳播位址、多點傳播位址和廣播位址。單點傳播位址:第一個位元組的最低位為0,比如00-00-00-11-11-11,一般用于标志唯一的裝置;多點傳播位址:第一個位元組的最低位為1,比如01-00-00-11-11-11,一般用于标志同屬一組的多個裝置;廣播位址:所有48bit全為1,即FF-FF-FF-FF-FF-FF,它用于标志同一網段中的所有裝置。

源MAC位址:即發送端實體MAC位址,占用6個位元組。

長度/類型: 上圖中的長度/類型具有兩個意義,當這兩個位元組的值小于1536(十六進制 為0x0600)時,代表該以太網中資料段的長度;如果這兩個位元組的值大于1536,則表示該以太網中的資料屬于哪個上層協定,例如0x0800代表IP協定( 網際協定) 、 0x0806代表ARP協定(位址解析協定)等。

資料:以太網中的資料段長度最小46個位元組, 最大1500個位元組。最大值1500稱為以太網的最大傳輸單元( MTU, Maximum Transmission Unit),之是以限制最大傳輸單元是因為在多個計算機的資料幀排隊等待傳輸時,如果某個資料幀太大的話,那麼其它資料幀等待的時間就會加長,導緻體驗變差,這就像一個十字路口的紅綠燈,你可以讓綠燈持續亮一小時,但是等紅燈的人一定不願意的。另外還要考慮網絡I/O控制器緩存區資源以及網絡最大的承載能力等因素, 是以最大傳輸單元是由各種綜合因素決定的。為了避免增加額外的配置, 通常以太網的有效資料字段小于1500個位元組。

幀檢驗序列( FCS, Frame Check Sequence) : 為了確定資料的正确傳輸, 在資料的尾部

加入了4個位元組的循環備援校驗碼( CRC校驗) 來檢測資料是否傳輸錯誤。 CRC資料校驗從以太

網幀頭開始即不包含前導碼和幀起始界定符。 通用的CRC标準有CRC-8、 CRC-16、 CRC-32、 CRCCCIT,其中在網絡通信系統中應用最廣泛的是CRC-32标準。

幀間隙( IFG,Interpacket Gap) :就是以太網相鄰兩幀之間的時間間隔,幀間隙的時間就是網絡裝置群組件在接收一幀之後,需要短暫的時間來恢複并為接收下一幀做準備的時間, IFG的最小值是96 bit time,即在媒介中發送96位原始資料所需要的時間,在不同媒介中IFG的最小值是不一樣的。

接口協定(四):以太網(Ethernet)學習(一):協定

三、TCP/IP協定簇

TCP( 傳輸控制協定) /IP(網際協定)協定簇,雖然看上去TCP/IP協定簇隻有兩個協定,其實TCP/IP協定簇包含了上百種協定,最常用的有TCP、IP、UDP等。其中TCP協定和UDP協定應用最廣泛。

1、IP協定

IP協定是TCP/IP協定簇中的核心協定,所有的TCP、 UDP及ICMP資料都以IP資料報格式傳輸。

從以太網資料包格式中可以看出,IP資料報 包括IP首部和資料段。

接口協定(四):以太網(Ethernet)學習(一):協定

IP資料報内容

接口協定(四):以太網(Ethernet)學習(一):協定

版本:4位版本号,IPv4(0100),IPv6(0110),目前在以太網使用IPv4多,但是在計算機系統中,IPv6也已經流行起來,因為IPv4僅用32個bit來表示位址,IPv4 位址的總數為 4294967296,到現在,已經快用光了;而IPv6使用128bit來表示位址,理論來說根本用不完。

首部長度:4位,表示IP首部一共有多少個32位(4Byte),假設無可選字段(一般來說沒有),IP首部有20個Byte,則首部長度為5;最大為15,即60個Byte。

服務類型:8位,普通服務的話,設定為0。可以參考:IP首部中的服務類型(TOS)

總長度:16位,包括IP首部和IP資料部分,以位元組為機關。我們利用IP首部長度和IP資料報總長度,就可以計算出IP資料報中資料内容的起始位置和長度。

辨別:16位,通常每發一份封包,就加1。

标志:3位,用來表示分片還是不分片,第一位(最高位)保留,第二位(1-不分片,0-允許分片),第三位為1即表示後面“還有分片”的資料報。為0表示這已是若幹資料報片中的最後一個。

葉偏移:13位,在接收方進行資料報重組時用來辨別分片的順序。

生存時間:8位,防止丢失的資料包在無休止的傳播,一般被設定為64或者128。IPv6 位址有兩個生存期:首選生存期和有效生存期,而首選的生存期總是小于等于有效的生存期。具體可以參考官方文檔。

協定:8位,表示此資料報所攜帶上層資料使用的協定類型,TCP為6, UDP為17。可以參考:IP協定号 IP首部中有8位協定号,用于指明IP的上層協定

首部校驗和:這部分需要自己計算,用來校驗IP資料報頭部是否被破壞、篡改和丢失等,不校驗資料。

源MAC位址,目的MAC位址:就是發送和接收IP位址。

可選字段:是資料報中的一個可變長度的可選資訊,選項字段以32bit為界,不足時插入值為0的填充位元組,保證IP首部始終是32bit的整數倍。

首部校驗和計算

1、将16位校驗和字段置為0,将IP首部分為多個16位的單元;

2、對各個單元采用反碼加法運算

3、假如得到的結果有溢出,則将結果再次分為兩個16位相加,直到不出現進位

如下例:

接口協定(四):以太網(Ethernet)學習(一):協定

2、UDP協定

在以太網資料包中,我們可以看到,TCP協定(IP層)比UDP層複雜,更為可靠,但是UDP運用場景也非常多。

那為什麼不所有傳輸都用更可靠的TCP協定呢,這就像賣手機,不可能都上最好的配置,畢竟有人不需要這麼好的配置,我隻需要打電話,一個骁龍835就夠了,如果你叫我多花2000塊,買一個865,那我沒必要。是以這就是需求不同,是以UDP也常用。

TCP與UDP的差別:TCP為可靠傳輸協定,而UDP為不可靠傳輸協定;TCP協定可以保證資料的完整和有序,而UDP不能保證;UDP由于不需要連接配接,故傳輸速度比TCP快,且占用資源比TCP少;

應用場景:TCP适用于對資料完整性要求很高的場合,比如檔案傳輸;而UDP适用于對資料完整性要求不高的場合,比如說視訊直播,畢竟直播的時候少傳輸幾個像素點,影響也不大,而且視訊直播要求資料傳輸很快。而檔案資料要是少一個byte或者更多,可能會造成很大的問題。

UDP格式資料

接口協定(四):以太網(Ethernet)學習(一):協定

其中的UDP校驗和和TCP協定的校驗和計算方式一樣,但是需要計算三個部分:UDP僞首部、UDP首部、UDP資料部分。

僞首部的資料是從IP資料報頭和UDP資料報頭擷取的,包括源IP位址,目的IP位址,協定類型和UDP長度,其目的是讓UDP兩次檢查資料是否已經正确到達目的地,隻是單純為了做校驗用的。在大多數使用場景中接收端并不檢測UDP校驗和。

繼續閱讀