簡(jiǎn)介
網(wǎng)絡(luò)中傳輸數(shù)據(jù)時(shí)需要定義并遵循一些標(biāo)準(zhǔn),以太網(wǎng)是根據(jù)IEEE 802.3
標(biāo)準(zhǔn)來(lái)管理和控制數(shù)據(jù)幀的障陶。了解這個(gè)標(biāo)準(zhǔn)是充分理解以太網(wǎng)中鏈路層通信的基礎(chǔ)。
網(wǎng)絡(luò)通信協(xié)議:
不同的協(xié)議棧用于定義和管理不同網(wǎng)絡(luò)的數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則:
數(shù)據(jù)封裝:
注意:幀結(jié)構(gòu)的封裝是加了幀頭和幀尾。
幀格式
數(shù)據(jù)包在以太網(wǎng)物理介質(zhì)上傳播之前必須封裝頭部和尾部信息。封裝后的數(shù)據(jù)包稱為數(shù)據(jù)幀矢渊,數(shù)據(jù)幀的封裝的信息決定了數(shù)據(jù)如何傳輸。
以太網(wǎng)中傳輸?shù)膸袃煞N格式枉证,選擇哪種格式由TCP/IP
協(xié)議簇中的網(wǎng)絡(luò)層決定矮男。
20世紀(jì)80年代初提出的,Ethernet II后來(lái)被IEEE 802 標(biāo)準(zhǔn)接納刽严,并寫(xiě)進(jìn)了IEEE 802.3x-1997的3.2.6節(jié)昂灵。IEEE802.3 是1983年提出的幀格式。這兩種區(qū)別是舞萄,Ethernet_II格式中包含一個(gè)Type字段眨补,標(biāo)識(shí)以太幀處理完成之后將被發(fā)送到哪個(gè)上層協(xié)議進(jìn)行處理。IEEE 802.3格式中倒脓,同樣的位置是長(zhǎng)度字段撑螺。
不同的Type字段值可以用來(lái)區(qū)別這兩種幀的類型,當(dāng)Type字段值小于或者等于1500(或者16進(jìn)制的0x05DC)時(shí)崎弃,幀使用的是IEEE 802.3格式甘晤。當(dāng)Type字段值大于等于1536(或者16進(jìn)制的0x0600)時(shí),幀使用的是Ethernet_II格式饲做。
以太網(wǎng)中大多數(shù)的數(shù)據(jù)幀使用的是Ethernet_II格式线婚。
Ethernet_II 幀格式
Ethernet_II幀類型值(Type)大于1536(0x0600)。
以太網(wǎng)數(shù)據(jù)幀的長(zhǎng)度在64-1518
字節(jié)之間盆均。數(shù)據(jù)部分在46~1500 B之間塞弊。
Ethernet_II數(shù)據(jù)幀中各字段說(shuō)明如下:
1.DMAC(Destination MAC) 是目的MAC地址。DMAC字段長(zhǎng)度為6個(gè)字節(jié)泪姨,標(biāo)識(shí)幀的接受者游沿。
2.SMAC(Source MAC)是源MAC地址。SMAC字段長(zhǎng)度為6個(gè)字節(jié)肮砾,標(biāo)識(shí)幀的發(fā)送者诀黍。
3.類型字段(Type)用于表示數(shù)據(jù)字段中包含的高層協(xié)議,該字段長(zhǎng)度為2個(gè)字節(jié)仗处。類型字段取值為0x0800
的幀代表IP協(xié)議幀眯勾;類型字段取值為0806的幀代表ARP協(xié)議幀(ARP是工作在鏈路層)。所以說(shuō)婆誓,以太網(wǎng)幀中的Ethernet_II格式的Type可以標(biāo)識(shí)是3層的協(xié)議咒精,也可以標(biāo)識(shí)為2層的協(xié)議。
4.數(shù)據(jù)字段(Data)是網(wǎng)絡(luò)層數(shù)據(jù)旷档,最小長(zhǎng)度必須為46字節(jié)()以保證幀長(zhǎng)度至少為64字節(jié)模叙,數(shù)據(jù)字段的最大長(zhǎng)度為1500字節(jié)。
5.循環(huán)冗余校驗(yàn)字段(FCS)提供了一種錯(cuò)誤檢測(cè)機(jī)制鞋屈。該字段長(zhǎng)度為4個(gè)字節(jié)范咨。
IEEE802.3幀格式
IEEE 802.3幀長(zhǎng)度字段值小于等于1500(0x05DC)
IEEE802.3幀格式類似于Ethernet_II幀,只是Ethernet_II幀的Type域被802.3幀的Length域取代厂庇,并且占用了Data字段的8個(gè)字節(jié)作為L(zhǎng)LC和SNAP字段渠啊。
數(shù)據(jù)幀傳輸
數(shù)據(jù)鏈路層基于MAC地址進(jìn)行幀的傳輸。
以太網(wǎng)在二層鏈路上通過(guò)MAC地址來(lái)唯一標(biāo)識(shí)網(wǎng)絡(luò)設(shè)備权旷,并且實(shí)現(xiàn)局域網(wǎng)上網(wǎng)絡(luò)設(shè)備之間的通信替蛉。MAC地址也叫物理地址。大多數(shù)網(wǎng)卡廠商把MAC地址燒錄到了網(wǎng)卡的ROM中。發(fā)送端的MAC地址作為目的地址躲查。以太幀封裝完成后會(huì)通過(guò)物理層轉(zhuǎn)換為比特流在物理介質(zhì)上傳輸它浅。
以太網(wǎng)的MAC地址
MAC地址分為兩部分:
供應(yīng)商代碼(OUI,Origanizationally Unique Identifier)和序列號(hào)镣煮。前24位代表該供應(yīng)商代碼姐霍,由IEEE管理和分配。剩下的24位序列號(hào)由廠商自己分配典唇。
局域網(wǎng)上的幀可以通過(guò)三種方式發(fā)送
注意是發(fā)送方式:下面討論的都是目的MAC地址,第一個(gè)字節(jié)的最后一個(gè)bit是0啊镊折,是1啊,所有字節(jié)全部是f啊這樣的情況介衔。目的地址是發(fā)送方自己寫(xiě)的恨胚。
1.單播:
2.廣播
3.組播
重要:https://blog.csdn.net/yygydjkthh/article/details/6751611
單播
單播:指從單一的源端發(fā)送到單一的目的端。每個(gè)主機(jī)接口由一個(gè)MAC地址唯一標(biāo)識(shí)炎咖,MAC地址的OUI中与纽,第一字節(jié)第8個(gè)比特標(biāo)識(shí)地址類型。對(duì)于主機(jī)MAC地址塘装,這個(gè)比特固定為0急迂,標(biāo)識(shí)目的MAC地址為此MAC地址的幀都是發(fā)送到某個(gè)唯一的目的端。在沖突域中蹦肴,所有主機(jī)都能收到源主機(jī)發(fā)送的單播幀僚碎,但是其他主機(jī)發(fā)現(xiàn)目的地址與本地MAC地址不一致后會(huì)丟棄收到的幀,只有真正的目的主機(jī)才會(huì)接受并處理收到的幀阴幌。
MAC地址類型:
https://blog.csdn.net/luobin1984/article/details/12185797
廣播
組播
數(shù)據(jù)幀的發(fā)送和接收
數(shù)據(jù)幀的Type:
IP: 0x0800
ARP: 0x0806
當(dāng)主機(jī)接收到的數(shù)據(jù)幀所包含的目的MAC地址是自己時(shí)勺阐,會(huì)把以太網(wǎng)封裝剝掉后送往上層協(xié)議。
幀從主機(jī)的物理接口發(fā)送出來(lái)后矛双,通過(guò)傳輸介質(zhì)傳輸?shù)侥康亩嗽ǔ椤9蚕砭W(wǎng)絡(luò)中,這個(gè)幀可能到達(dá)多個(gè)主機(jī)议忽。主機(jī)檢查幀頭中的目的MAC地址懒闷,如果目的MAC地址不是本機(jī)MAC地址,也不是本機(jī)監(jiān)聽(tīng)的組播或廣播MAC地址栈幸,則主機(jī)會(huì)丟棄收到的幀愤估。
如果目的MAC地址是本機(jī)MAC地址,則接受該幀速址,檢查幀校驗(yàn)序列(FCS)字段玩焰,并與本機(jī)計(jì)算的值對(duì)比來(lái)確定幀在傳輸過(guò)程中是否保持了完整性。如果幀的FCS值與本機(jī)計(jì)算的不同芍锚,那么就會(huì)丟棄該幀昔园。如果該幀通過(guò)了FCS校驗(yàn)蔓榄,則主機(jī)會(huì)根據(jù)幀頭部中的Type字段來(lái)確定該幀發(fā)送給上層(或者本層)哪個(gè)協(xié)議處理。本例中默刚,Type字段的值為0x0800,表明該幀需要發(fā)送到IP協(xié)議上處理甥郑。在發(fā)送給IP協(xié)議之前,幀的頭部和尾部會(huì)被剝掉羡棵。
問(wèn)題:
1.網(wǎng)絡(luò)設(shè)備如何確定以太網(wǎng)數(shù)據(jù)幀的上層協(xié)議?
以太網(wǎng)幀中包含一個(gè)Type字段嗅钻,表示幀中的數(shù)據(jù)應(yīng)該發(fā)送到上層(或者本層)哪個(gè)協(xié)議處理皂冰。
eg: IP: 0x0800, ARP: 0x0806
2.終端設(shè)備接收到數(shù)據(jù)幀時(shí),會(huì)如何處理养篓?
主機(jī)檢查幀頭中的目的MAC地址秃流,如果目的MAC地址不是本機(jī)MAC地址,也不是本機(jī)偵聽(tīng)的組播或廣播MAC地址柳弄,則主機(jī)會(huì)丟棄收到的幀舶胀。如果目的MAC地址是本機(jī)MAC地址,則接收該幀碧注,檢查幀校驗(yàn)序列(FCS)字段嚣伐,并與本機(jī)計(jì)算的值對(duì)比來(lái)確定幀在傳輸過(guò)程中是否保持了完整性。如果檢查通過(guò)萍丐,剝離幀頭幀尾轩端,然后根據(jù)幀頭的Type字段來(lái)決定把數(shù)據(jù)發(fā)送到哪個(gè)上層協(xié)議進(jìn)行后續(xù)處理。