唐燈平
(蘇州大學(xué)a.文正學(xué)院b.計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇蘇州215006)
數(shù)據(jù)鏈路層屬于計算機(jī)網(wǎng)絡(luò)的低層,該層使用的信道主要有點對點信道和廣播信道兩種,點對點信道使用一對一的點對點通信方式,最常用的協(xié)議是點對點協(xié)議(Point-to-Point Protocol,PPP),PPP 常用于計算機(jī)和互聯(lián)網(wǎng)服務(wù)提供者(Internet Service Provider,ISP)進(jìn)行通信時使用的數(shù)據(jù)鏈路層協(xié)議。廣播信道使用一對多的廣播通信方式,傳統(tǒng)以太網(wǎng)的數(shù)據(jù)鏈路層采用的就是廣播通信方式,它使用載波監(jiān)聽多點接入/碰撞檢測(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)解決沖突問題。數(shù)據(jù)鏈路層傳送的協(xié)議數(shù)據(jù)單元稱為幀,數(shù)據(jù)鏈路層常見的幀有:PPP、以太網(wǎng)以及帶有VLAN信息的802.1Q幀等。這3 種幀的組成格式各不相同,通過理論分析這幾種數(shù)據(jù)鏈路層幀格式的同時,利用Packet tracer 仿真軟件仿真實現(xiàn)這3 種幀的結(jié)構(gòu),對于理解數(shù)據(jù)鏈路層幀結(jié)構(gòu)乃至計算機(jī)網(wǎng)絡(luò)原理至關(guān)重要[1]。
常見的以太網(wǎng)MAC 幀格式有兩種標(biāo)準(zhǔn),一種是DIX Ethernet V2 標(biāo)準(zhǔn),其幀為Ethernet II幀,另一種是IEEE 802.3 標(biāo)準(zhǔn),其幀為802.3 幀,其中使用較多的是以太網(wǎng)V2 的MAC 幀,假設(shè)網(wǎng)絡(luò)層使用的是IP 協(xié)議,則該幀的格式如圖1 所示。該幀由5 個字段組成,前兩個字段分別是6 Byte的目的地址和6 Byte的源地址。第3 個字段是2 Byte 的類型字段,用來標(biāo)志上一層使用的協(xié)議類型,該值為0x0800 表示上層使用IP數(shù)據(jù)報,該值為0x8137 表示該幀是由Novell IPX發(fā)來的。第4 個字段是數(shù)據(jù)字段,其長度為46 ~1 500 Byte之間。最后一個字段為4 Byte 的幀檢驗序列(FCS:Frame Check Sequence)。實際傳送的要比MAC 幀還多8 Byte,目的是為了使適配器時鐘與到達(dá)的bit流達(dá)成同步。這8 Byte 由兩個字段組成,前一字段由7 Byte的前同步碼,實現(xiàn)“bit 同步”,后一個字段是幀開始定界符,幀開始定界符的最后兩個連續(xù)“1”告訴接收端適配器“MAC幀即將到來,請注意接收”。在使用SONET/SDH進(jìn)行同步傳輸時不需要前同步碼。因為在同步傳輸時收發(fā)雙方的同步總是一直保持著。
圖1 DIX V2以太網(wǎng)幀結(jié)構(gòu)
PPP幀結(jié)構(gòu)如圖2 所示,PPP 幀的首部和尾部分別由4 個字段和2 個字段組成。
圖2 PPP幀結(jié)構(gòu)
首部由1 Byte 的標(biāo)志字段F、1 Byte 的地址字段A、1 Byte的控制字段C以及2 Byte 的協(xié)議字段組成。其中標(biāo)志字段的值為0x7E,表示幀的開始;地址字段值為0xFF;控制字段值為0x03;協(xié)議字段值為0x0021時表明PPP幀的信息字段為IP數(shù)據(jù)報,協(xié)議字段值為0xC021 時表明PPP幀的信息為鏈路控制協(xié)議LCP 數(shù)據(jù),協(xié)議字段的值為0x8021 時表明PPP幀的信息為網(wǎng)絡(luò)層控制數(shù)據(jù)。PPP 幀結(jié)構(gòu)信息部分的長度是可變的,其值不超過1 500 Byte。PPP 幀結(jié)構(gòu)的尾部由2 Byte使用循環(huán)冗余檢驗CRC(CRC:Cyclic Redundancy Check)的幀檢驗序列以及1 Byte 的標(biāo)志字段F組成。F字段的值為0x7E,表示一個幀的結(jié)束。
插入VLAN標(biāo)記的802.1Q幀結(jié)構(gòu)如圖3 所示,它是在DIX V2 以太網(wǎng)幀的源地址字段和類型字段之間插入4 Byte的VLAN標(biāo)記字段。VLAN 標(biāo)記字段前2 Byte值為0x8100,稱為802.1Q標(biāo)記類型,后2 Byte為標(biāo)記控制信息,其前3 bit是用戶優(yōu)先級字段,接著的1 bit 是規(guī)范格式指示符CFI(Canonical Format Indicator),最后的12 bit 是該虛擬局域網(wǎng)VLAN 標(biāo)識符VID(VLAN ID)。
圖3 插入VLAN標(biāo)記的802.1Q幀結(jié)構(gòu)
構(gòu)建如圖4 所示的網(wǎng)絡(luò)結(jié)構(gòu)圖,在該網(wǎng)絡(luò)環(huán)境中可以同時實現(xiàn)以太網(wǎng)幀以及PPP 幀,在該網(wǎng)絡(luò)結(jié)構(gòu)中,主機(jī)PC1 和路由器R1 的f 0/0 接口之間傳輸以太網(wǎng)幀,路由器R1 的s0/0/0 接口和路由器R2 的s0/0/0 接口之間傳輸PPP幀,路由器R2 的接口f 0/0 和主機(jī)PC2 之間傳輸以太網(wǎng)幀。路由器實現(xiàn)了異構(gòu)網(wǎng)絡(luò)的互聯(lián)。該網(wǎng)絡(luò)地址規(guī)劃如表1 所示。
圖4 DIX V2以太網(wǎng)幀以及PPP幀仿真結(jié)構(gòu)圖
表1 網(wǎng)絡(luò)地址規(guī)劃
該網(wǎng)絡(luò)結(jié)構(gòu)由3 個網(wǎng)段組成,主機(jī)PC1 和路由器R1 之間傳輸以太網(wǎng)幀,網(wǎng)絡(luò)地址為192.168.1.0;路由器R1 與R2 之間數(shù)據(jù)鏈路層使用串口相連封裝PPP的廣域網(wǎng),傳輸PPP 幀,網(wǎng)絡(luò)地址為192.168.2.0;路由器R2 和主機(jī)PC2 之間傳輸以太網(wǎng)幀,網(wǎng)絡(luò)地址為192.168.3.0。利用路由器實現(xiàn)異構(gòu)網(wǎng)絡(luò)的互聯(lián),若要網(wǎng)絡(luò)互聯(lián)互通,需要配置接口的IP 地址,將路由器的串口封裝PPP,最后在路由器上執(zhí)行動態(tài)路由器協(xié)議,具體配置如下:
按照同樣的步驟對路由器R2 做相應(yīng)的配置,配置路由器R2 接口的IP地址,開啟路由器動態(tài)路由協(xié)議RIP,將路由器s0/0/0 接口封裝成PPP,主要配置如下:
最后按照表1 所示配置主機(jī)相關(guān)網(wǎng)絡(luò)參數(shù)。配置完成后,整個網(wǎng)絡(luò)就互聯(lián)互通了。
首先仿真實現(xiàn)以太網(wǎng)幀,為了抓取數(shù)據(jù)包,需要有數(shù)據(jù)的傳輸,將Packet Tracer 仿真模式從“Realtime mode”切換成“simulation mode”,從主機(jī)PC1 發(fā)一個ping 包給主機(jī)PC2,連續(xù)點擊“play controls”下的“capture /Forward”按鈕,得到如圖5 所示的仿真結(jié)果。PC1 和路由器R1 之間傳輸?shù)膮f(xié)議數(shù)據(jù)單元(Protocol Data Unite,PDU)為以太網(wǎng)幀,通過展開PC1 到R1 的“PDU Information at Device R1”,在“Inbound PDU Details”中得到DIX V2 以太網(wǎng)幀結(jié)構(gòu)仿真圖,如圖5所示,該圖中DIX V2 幀格式與圖1 所示幀格式相符。其中源地址為主機(jī)PC1 的MAC 地址,目的地址為路由器R1 左邊接口f0/0 的MAC 地址。類型字段值為0x0800,說明上層使用IP 數(shù)據(jù)報。幀的前面插入7 Byte的前同步碼以及1 Byte的幀開始定界符。
其次仿真實現(xiàn)PPP 幀。路由器R1 與路由器R2之間傳輸數(shù)據(jù)鏈路層協(xié)議數(shù)據(jù)單元為PPP 幀,通過展開R1 到R2 的“PDU Information at Device R2”在“Inbound PDU Details”中得到PPP 幀結(jié)構(gòu)如圖6 所示,其格式與圖2 所示幀格式相符。首部為:1 Byte 值為0x7E 標(biāo)志字段FLG,1 Byte 值為0xFF 地址字段ADR、1 Byte值為0x03 控制字段CTR以及2 Byte值為0x0021 協(xié)議字段組成,該值表明信息字段為IP 數(shù)據(jù)報。尾部由FCS和FLG組成。
圖7 為使用4 個交換機(jī)的網(wǎng)絡(luò)結(jié)構(gòu),有10 臺計算機(jī)分配在3 個樓層中,構(gòu)成了3 個局域網(wǎng),即LAN1(A1,A2,B1,C1),LAN2(A3,B2,C2)以及LAN3(A4,B3,C3),將10 個用戶劃分3 個虛擬局域網(wǎng),即VLAN10:(A1,A2,A3,A4),VLAN20:(B1,B2,B3)以及VLAN30:(C1,C2,C3)。
圖5 DIX V2以太網(wǎng)幀結(jié)構(gòu)仿真圖
圖6 PPP幀結(jié)構(gòu)仿真圖
圖7 3個虛擬局域網(wǎng)VLAN10、VLAN20和VLAN30的構(gòu)成
將該網(wǎng)絡(luò)結(jié)構(gòu)仿真實現(xiàn),如圖8 所示。
為3 臺交換機(jī)分別創(chuàng)建VLAN10、VLAN20 以及VLAN30,將計算機(jī)A1、A2、A3 以及A4 劃分到VLAN10,將計算機(jī)B1、B2 以及B3 劃分到VLAN20,將計算機(jī)C1、C2 以及C3 劃分到VLAN30。同時將3 臺交換機(jī)Switch1、Switch2 以及Switch3,它們與交換機(jī)Switch 4兩兩相連的接口配置成Trunk模式。具體配置過程如下:
圖8 插入VLAN標(biāo)記的802.1Q幀網(wǎng)絡(luò)結(jié)構(gòu)圖
同樣配置交換機(jī)Switch2 和Switch3。交換機(jī)Switch4 配置如下:
最后配置主機(jī)A1 和A4 的網(wǎng)絡(luò)參數(shù),將主機(jī)A1的地址配置為:192.168.1.10,子網(wǎng)掩碼配置為255.255.255.0。主機(jī)A4 的IP 地址配置為:192.168.1.40,子網(wǎng)掩碼配置為255.255.255.0。
交換機(jī)Switch4 與交換機(jī)Switch1、Switch2 以及Switch3 之間傳輸?shù)膮f(xié)議數(shù)據(jù)單元是802.1Q 幀,從主機(jī)A1 發(fā)1 個ping包給主機(jī)A4,傳輸VLAN10 數(shù)據(jù)信息,連續(xù)點擊“play controls”下的“capture /Forward”按鈕,得到如圖8 所示的仿真結(jié)果。通過展開Switch1 ~Switch4 之間的“PDU Information at Device Switch4”,在“Inbound PDU Details”中得到如圖9 所示802.1Q 以太網(wǎng)幀結(jié)構(gòu)仿真結(jié)構(gòu)圖,該圖中所示幀格式與圖3 相符。圖中VLAN標(biāo)記由4 Byte 兩部分組成,前2 Byte為802.1Q標(biāo)記類型,其值為“0x8100”。后2 Byte 標(biāo)記控制信息(Tag Control Information,TCI)的值為“0xa”其二進(jìn)制為:“0000000000001010”,前3 bit是用戶優(yōu)先級字段,接著的1 bit 是規(guī)范格式指示符(Canonical Format Indicator,CFI),最后的12 bit“000000001010”是該虛擬局域網(wǎng)VLAN 標(biāo)識符VID(VLAN ID),其值為10,與傳輸VLAN 10 信息相符。
圖9 插入VLAN標(biāo)記的802.1Q幀結(jié)構(gòu)仿真圖
數(shù)據(jù)鏈路層位于網(wǎng)絡(luò)的低層,不同的網(wǎng)絡(luò)類型其數(shù)據(jù)鏈路層幀結(jié)構(gòu)不相同,掌握數(shù)據(jù)鏈路層各種幀結(jié)構(gòu)對于理解計算機(jī)網(wǎng)絡(luò)原理至關(guān)重要。通過Packet tracer仿真軟件構(gòu)建網(wǎng)絡(luò)結(jié)構(gòu),配置網(wǎng)絡(luò)環(huán)境,最終實現(xiàn)幀結(jié)構(gòu),對于理解數(shù)據(jù)鏈路層幀結(jié)構(gòu)起到事半功倍的效果。