|
以太網(wǎng)協(xié)議
歷史上以太網(wǎng)幀格式有五種:
1 Ethernet V1:這是最原始的一種格式,是由Xerox PARC提出的3Mbps CSMA/CD以太網(wǎng)標(biāo)準(zhǔn)的封裝格式,后來在1980年由DEC,Intel和Xerox標(biāo)準(zhǔn)化形成Ethernet V1標(biāo)準(zhǔn);
2 Ethernet I I即DIX 2.0:Xerox與DEC、Intel在1982年制定的以太網(wǎng)標(biāo)準(zhǔn)幀格式。Cisco名稱為:ARPA。 這是最常見的一種以太網(wǎng)幀格式,也是今天以太網(wǎng)的事實標(biāo)準(zhǔn),由DEC,Intel和Xerox在1982年公布其標(biāo)準(zhǔn),主要更改了Ethernet V1的電氣特性和物理接口,在幀格式上并無變化;Ethernet V2出現(xiàn)后迅速取代Ethernet V1成為以太網(wǎng)事實標(biāo)準(zhǔn);Ethernet V2幀頭結(jié)構(gòu)為6bytes的源地址+6bytes的目標(biāo)地址+2Bytes的協(xié)議類型字段+數(shù)據(jù)。
常見協(xié)議類型如下:
0800 IP,0x86DD IP6
0806 ARP
0835 RARP
8137 Novell IPX
809b Apple Talk
如果協(xié)議類型字段取值為0000-05dc(十進(jìn)制的0-1500),則該幀就不是Ethernet V2(ARPA)類型了,而是下面講到的三種802.3幀類型之一;Ethernet可以支持TCP/IP,Novell IPX/SPX,Apple Talk Phase I等協(xié)議;RFC 894定義了IP報文在Ethernet V2上的封裝格式;
| PR | SD | DA | SA | TYPE | DATA | PAD | FCS | | 56位 | 8位 | 48位 | 48位 | 16位 | 不超過1500字節(jié) | 不夠填充 | 32位 |
在每種格式的以太網(wǎng)幀的開始處都有64比特(8字節(jié))的前導(dǎo)字符,如圖所示。其中,前7個字節(jié)稱為前同步碼(Preamble),內(nèi)容是16進(jìn)制數(shù)0xAA,最后1字節(jié)為幀起始標(biāo)志符0xAB,它標(biāo)識著以太網(wǎng)幀的開始。前導(dǎo)字符的作用是使接收節(jié)點進(jìn)行同步并做好接收數(shù)據(jù)幀的準(zhǔn)備。 ——PR:同步位,用于收發(fā)雙方的時鐘同步,同時也指明了傳輸?shù)乃俾剩?0M和100M的時鐘頻率不一樣,所以100M網(wǎng)卡可以兼容10M網(wǎng)卡),是56位的二進(jìn)制數(shù)101010101010..... ——SD: 分隔位,表示下面跟著的是真正的數(shù)據(jù),而不是同步時鐘,為8位的10101011,跟同步位不同的是最后2位是11而不是10. ——DA:目的地址,以太網(wǎng)的地址為48位(6個字節(jié))二進(jìn)制地址,表明該幀傳輸給哪個網(wǎng)卡.如果為FFFFFFFFFFFF,則是廣播地址,廣播地址的數(shù)據(jù)可以被任何網(wǎng)卡接收到. ——SA:源地址,48位,表明該幀的數(shù)據(jù)是哪個網(wǎng)卡發(fā)的,即發(fā)送端的網(wǎng)卡地址,同樣是6個字節(jié). ----TYPE:類型字段,表明該幀的數(shù)據(jù)是什么類型的數(shù)據(jù),不同的協(xié)議的類型字段不同。如:0800H 表示數(shù)據(jù)為IP包,0806H 表示數(shù)據(jù)為ARP包,814CH是SNMP包,8137H為IPX/SPX包,(小于0600H的值是用于IEEE802的,表示數(shù)據(jù)包的長度。) ----DATA:數(shù)據(jù)段 ,該段數(shù)據(jù)不能超過1500字節(jié)。因為以太網(wǎng)規(guī)定整個傳輸包的最大長度不能超過1514字節(jié)。(14字節(jié)為DA,SA,TYPE) ----PAD:填充位。由于以太網(wǎng)幀傳輸?shù)臄?shù)據(jù)包最小不能小于60字節(jié), 除去(DA,SA,TYPE 14字節(jié)),還必須傳輸46字節(jié)的數(shù)據(jù),當(dāng)數(shù)據(jù)段的數(shù)據(jù)不足46字節(jié)時,后面補(bǔ)000000.....(當(dāng)然也可以補(bǔ)其它值) ----FCS:32位數(shù)據(jù)校驗位.為32位的CRC校驗,該校驗由網(wǎng)卡自動計算,自動生成,自動校驗,自動在數(shù)據(jù)段后面填入.對于數(shù)據(jù)的校驗算法,我們無需了解. ----事實上,PR,SD,PAD,FCS這幾個數(shù)據(jù)段我們不用理它 ,它是由網(wǎng)卡自動產(chǎn)生的,我們要理的是DA,SA,TYPE,DATA四個段的內(nèi)容. ----所有數(shù)據(jù)位的傳輸由低位開始(但傳輸?shù)奈涣魇怯寐鼜厮固鼐幋a的) ----以太網(wǎng)的沖突退避算法就不介紹了,它是由硬件自動執(zhí)行的. DA+SA+TYPE+DATA+PAD最小為60字節(jié),最大為1514字節(jié). ----以太網(wǎng)卡可以接收三種地址的數(shù)據(jù),一個是廣播地位,一個是多播地址(我們用不上),一個是它自已的地址.但網(wǎng)卡也可以設(shè)置為接收任何數(shù)據(jù)包(用于網(wǎng)絡(luò)分析和監(jiān)控). ----任何兩個網(wǎng)卡的物理地址都是不一樣的,是世界上唯一的,網(wǎng)卡地址由專門機(jī)構(gòu)分配.不同廠家使用不同地址段,同一廠家的任何兩個網(wǎng)卡的地址也是唯一的.根據(jù)網(wǎng)卡的地址段(網(wǎng)卡地址的前三個字節(jié)),可以知道網(wǎng)卡的生產(chǎn)廠家.有些網(wǎng)卡的地址也可以由用戶去設(shè)定,但一般不需要. 3 Ethernet 802.3 raw幀格式 如圖5所示,是Ethernet 802.3 raw類型以太網(wǎng)幀格式。  圖5 Ethernet 802.3 raw幀格式 在Ethernet 802.3 raw類型以太網(wǎng)幀中,原來Ethernet II類型以太網(wǎng)幀中的類型字段被"總長度"字段所取代,它指明其后數(shù)據(jù)域的長度,其取值范圍為:46-1500。 接下來的2個字節(jié)是固定不變的16進(jìn)制數(shù)0xFFFF,它標(biāo)識此幀為Novell以太類型數(shù)據(jù)幀。 4 Ethernet 802.3 SAP幀格式 如圖6所示,是Ethernet 802. 3 SAP類型以太網(wǎng)幀格式。  圖6 Ethernet 802. 3 SAP幀格式
從圖中可以看出,在Ethernet 802.3 SAP幀中,將原Ethernet 802.3 raw幀中2個字節(jié)的0xFFFF變?yōu)楦?個字節(jié)的DSAP和SSAP,同時增加了1個字節(jié)的"控制"字段,構(gòu)成了802.2邏輯鏈路控制(LLC)的首部。LLC提供了無連接(LLC類型1)和面向連接(LLC類型2)的網(wǎng)絡(luò)服務(wù)。LLC1是應(yīng)用于以太網(wǎng)中,而LLC2應(yīng)用在IBM SNA網(wǎng)絡(luò)環(huán)境中。
新增的802.2 LLC首部包括兩個服務(wù)訪問點:源服務(wù)訪問點(SSAP)和目標(biāo)服務(wù)訪問點(DSAP)。它們用于標(biāo)識以太網(wǎng)幀所攜帶的上層數(shù)據(jù)類型,如16進(jìn)制數(shù)0x06代表IP協(xié)議數(shù)據(jù),16進(jìn)制數(shù)0xE0代表Novell類型協(xié)議數(shù)據(jù),16進(jìn)制數(shù)0xF0代表IBM NetBIOS類型協(xié)議數(shù)據(jù)等。
常見SAP值:
0 Null LSAP [IEEE]
4 SNA Path Control [IEEE]
6 DOD IP [79,JBP]
AA SNAP [IEEE]
FE ISO DIS 8473 [52,JXJ]
FF Global DSAP [IEEE]
SAP值用以標(biāo)志上層應(yīng)用,但是每個SAP字段只有8bits長,而且其中僅保留了6比特用于標(biāo)識上層協(xié)議,因此所能標(biāo)識的協(xié)議數(shù)有限(不超過32種);并且IEEE拒絕為某些重要的協(xié)議比如ARP協(xié)議定義SAP值(奇怪的是同時他們卻定義了IP的SAP值);因此802.3/802.2 LLC的使用有很大局限性; 至于1個字節(jié)的"控制"字段,則基本不使用(一般被設(shè)為0x03,指明采用無連接服務(wù)的802.2無編號數(shù)據(jù)格式)。
5 Ethernet 802.3 SNAP幀格式 如圖7所示,是Ethernet 802. 3 SNAP類型以太網(wǎng)幀格式。  圖7 Ethernet 802. 3 SNAP幀格式
Ethernet 802. 3 SNAP類型以太網(wǎng)幀格式和Ethernet 802. 3 SAP類型以太網(wǎng)幀格式的主要區(qū)別在于: ●2個字節(jié)的DSAP和SSAP字段內(nèi)容被固定下來,其值為16進(jìn)制數(shù)0xAA。 ●1個字節(jié)的"控制"字段內(nèi)容被固定下來,其值為16進(jìn)制數(shù)0x03。 ●增加了SNAP字段,由下面兩項組成: ◆新增了3個字節(jié)的組織唯一標(biāo)識符(Organizationally Unique Identifier,OUI ID)字段,其值通常等于MAC地址的前3字節(jié), ◆ 增加了表示上層協(xié)議的類型 這是IEEE為保證在802.2 LLC上支持更多的上層協(xié)議同時更好的支持IP協(xié)議而發(fā)布的標(biāo)準(zhǔn),與802.3/802.2 LLC一樣802.3/802.2 SNAP也帶有LLC頭,但是擴(kuò)展了LLC屬性,新添加了一個2Bytes的協(xié)議類型域(同時將SAP的值置為AA),從而使其可以標(biāo)識更多的上層協(xié)議類型;另外添加了一個3Bytes的OUI字段用于代表不同的組織,RFC 1042定義了IP報文在802.2網(wǎng)絡(luò)中的封裝方法和ARP協(xié)議在802.2 SANP中的實現(xiàn);
不同廠商對這幾種幀格式通常有不同的叫法,比如:
Frame Type Novel Cisco
Ethernet Version 2 Ethernet_II arpa
802.3 Raw Ethernet_802.3 novell_ether
IEEE 802.3/802.2 Ethernet_802.2 sap
IEEE 802.3/802.2 SNAP ETHERNET_SNAP snap
-----------------------------------------------------------------------------------
TCP/IP協(xié)議是一個比較復(fù)雜的協(xié)議集,有很多專業(yè)書籍介紹。在此,我僅介紹其與編程密切相關(guān)的部分:以太網(wǎng)上TCP/IP協(xié)議的分層結(jié)構(gòu)及其報文格式。我們知道TCP/IP協(xié)議采用分層結(jié)構(gòu),其分層模型及協(xié)議如下表: 應(yīng) 用 層
(Application) | HTTP、Telnet、FTP、SMTP、SNMP | 傳 輸 層
(Transport) | TCP、UDP | 網(wǎng) 間 網(wǎng)層
(Internet) | IP【ARP、RARP、ICMP】 | 網(wǎng)絡(luò)接口層
(Network) | Ethernet、X.25、SLIP、PPP | 即MAC地址,具有唯一性。幀類型或協(xié)議類型是指數(shù)據(jù)包的高級協(xié)議,如 0x0806表示ARP協(xié)議,0x0800表示IP協(xié)議等。
|