唐燈平
(蘇州大學a.文正學院b.計算機科學與技術學院,江蘇蘇州215006)
數(shù)據(jù)鏈路層屬于計算機網(wǎng)絡的低層,該層使用的信道主要有點對點信道和廣播信道兩種,點對點信道使用一對一的點對點通信方式,最常用的協(xié)議是點對點協(xié)議(Point-to-Point Protocol,PPP),PPP 常用于計算機和互聯(lián)網(wǎng)服務提供者(Internet Service Provider,ISP)進行通信時使用的數(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 幀等[1]。這3 種幀的組成格式各不相同,通過理論分析這幾種數(shù)據(jù)鏈路層幀格式的同時,利用Packet tracer 仿真軟件仿真實現(xiàn)這3 種幀的結構,對于理解數(shù)據(jù)鏈路層幀結構乃至計算機網(wǎng)絡原理至關重要。
常見的以太網(wǎng)MAC 幀格式有兩種標準,一種是DIX Ethernet V2 標準,其幀為Ethernet II幀,另一種是IEEE 802.3 標準,其幀為802.3 幀,其中使用較多的是以太網(wǎng)V2 的MAC 幀,假設網(wǎng)絡層使用的是IP 協(xié)議,則該幀的格式如圖1 所示。該幀由5 個字段組成,前兩個字段分別是6 Byte的目的地址和6 Byte的源地址。第3 個字段是2 Byte 的類型字段,用來標志上一層使用的協(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,目的是為了使適配器時鐘與到達的bit流達成同步。這8 Byte 由兩個字段組成,前一字段由7 Byte的前同步碼,實現(xiàn)“bit 同步”,后一個字段是幀開始定界符,幀開始定界符的最后兩個連續(xù)“1”告訴接收端適配器“MAC幀即將到來,請注意接收”。在使用SONET/ SDH進行同步傳輸時不需要前同步碼。因為在同步傳輸時收發(fā)雙方的同步總是一直保持著[1]。
圖1 DIX V2以太網(wǎng)幀結構
PPP幀結構如圖2 所示,PPP 幀的首部和尾部分別由4 個字段和2 個字段組成。
圖2 PPP幀結構
首部由1 Byte 的標志字段F、1 Byte 的地址字段A、1 Byte的控制字段C以及2 Byte 的協(xié)議字段組成。其中標志字段的值為0x7E,表示幀的開始;地址字段值為0xFF;控制字段值為0x03;協(xié)議字段值為0x0021時表明PPP幀的信息字段為IP數(shù)據(jù)報,協(xié)議字段值為0xC021 時表明PPP幀的信息為鏈路控制協(xié)議LCP 數(shù)據(jù),協(xié)議字段的值為0x8021 時表明PPP幀的信息為網(wǎng)絡層控制數(shù)據(jù)。PPP 幀結構信息部分的長度是可變的,其值不超過1 500 Byte。PPP 幀結構的尾部由2 Byte使用循環(huán)冗余檢驗CRC(CRC:Cyclic Redundancy Check)的幀檢驗序列以及1 Byte 的標志字段F組成。F字段的值為0x7E,表示一個幀的結束。
插入VLAN標記的802.1Q幀結構如圖3 所示,它是在DIX V2 以太網(wǎng)幀的源地址字段和類型字段之間插入4 Byte的VLAN標記字段。VLAN 標記字段前2 Byte值為0x8100,稱為802.1Q標記類型,后2 Byte為標記控制信息,其前3 bit是用戶優(yōu)先級字段,接著的1 bit 是規(guī)范格式指示符CFI (Canonical Format Indicator),最后的12 bit 是該虛擬局域網(wǎng)VLAN 標識符VID(VLAN ID)。
圖3 插入VLAN標記的802.1Q幀結構
構建如圖4 所示的網(wǎng)絡結構圖,在該網(wǎng)絡環(huán)境中可以同時實現(xiàn)以太網(wǎng)幀以及PPP 幀,在該網(wǎng)絡結構中,主機PC1 和路由器R1 的f 0 / 0 接口之間傳輸以太網(wǎng)幀,路由器R1 的s0 / 0 / 0 接口和路由器R2 的s0 / 0 /0 接口之間傳輸PPP幀,路由器R2 的接口f 0 / 0 和主機PC2 之間傳輸以太網(wǎng)幀[2]。路由器實現(xiàn)了異構網(wǎng)絡的互聯(lián)。該網(wǎng)絡地址規(guī)劃如表1 所示。
圖4 DIX V2以太網(wǎng)幀以及PPP幀仿真結構圖
表1 網(wǎng)絡地址規(guī)劃
該網(wǎng)絡結構由3 個網(wǎng)段組成,主機PC1 和路由器R1之間傳輸以太網(wǎng)幀,網(wǎng)絡地址為192.168.1.0;路由器R1與R2之間數(shù)據(jù)鏈路層使用串口相連封裝PPP的廣域網(wǎng),傳輸PPP幀,網(wǎng)絡地址為192.168.2.0[3];路由器R2 和主機PC2 之間傳輸以太網(wǎng)幀,網(wǎng)絡地址為192.168.3.0。利用路由器實現(xiàn)異構網(wǎng)絡的互聯(lián),若要網(wǎng)絡互聯(lián)互通,需要配置接口的IP 地址,將路由器的串口封裝PPP,最后在路由器上執(zhí)行動態(tài)路由器協(xié)議[4],具體配置如下:
首先配置路由器R1
R1(config)#interface serial 0 / 0 / 0
/ /進入路由器R1的s0 / 0 / 0口
R1(config-if)#ip address 192.168.2.1 255.255.255.0 / /為接口配置IP地址
R1(config-if)#clock rate 64000
/ /為接口配置時鐘頻率
R1(config-if)#encapsulation ppp
/ /配置接口封裝PPP協(xié)議
R1(config-if)#no shu
/ /激活接口
R1(config-if)#exit
/ /退出
R1(config)#interface fastEthernet 0 / 0
/ /進入路由器fa0 / 0接口
R1(config-if)#ip address 192.168.1.1 255.255.255.0 / /為接口配置IP地址
R1(config-if)#no shu / /激活接口
R1(config-if)#exit / /退出
R1(config)#route rip
/ /路由器執(zhí)行RIP路由協(xié)議
R1(config-router)#network 192.168.1.0
/ /宣告網(wǎng)段
R1(config-router)#network 192.168.2.0
/ /宣告網(wǎng)段[5]
按照同樣的步驟對路由器R2 做相應的配置,配置路由器R2 接口的IP地址,開啟路由器動態(tài)路由協(xié)議RIP,將路由器s0 / 0 / 0 接口封裝成PPP 協(xié)議[6],主要配置如下:
R2(config)#route rip
/ /路由器執(zhí)行路由協(xié)議RIP
R2(config-router)#network 192.168.2.0
/ /宣告網(wǎng)段
R2(config-router)#network 192.168.3.0
/ /宣告網(wǎng)段
R2(config-router)#exit
/ /退出
R2(config)#interface serial 0 / 0 / 0
/ /進入路由器接口s0 / 0 / 0
R2(config-if)#encapsulation ppp
/ /配置接口封裝PPP
最后按照表1 所示配置主機相關網(wǎng)絡參數(shù)。配置完成后,整個網(wǎng)絡就互聯(lián)互通了。
首先仿真實現(xiàn)以太網(wǎng)幀,為了抓取數(shù)據(jù)包,需要有數(shù)據(jù)的傳輸,將Packet Tracer 仿真模式從“Realtime mode”切換成“simulation mode”,從主機PC1 發(fā)一個ping 包給主機PC2,連續(xù)點擊“play controls” 下的“capture / Forward”按鈕,得到如圖5 所示的仿真結果[7]。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)幀結構仿真圖(見圖5),該圖中DIX V2 幀格式與圖1 所示幀格式相符。其中源地址為主機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幀結構如圖6 所示,其格式與圖2 所示幀格式相符。首部為:1 Byte值為0x7E標志字段FLG,1 Byte 值為0xFF 地址字段ADR、1 Byte 值為0x03 控制字段CTR以及2 Byte值為0x0021 協(xié)議字段組成,該值表明信息字段為IP數(shù)據(jù)報。尾部由FCS和FLG組成[8]。
圖7 為使用4 個交換機的網(wǎng)絡結構,有10 臺計算機分配在3 個樓層中,構成了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)幀結構仿真圖
圖6 PPP幀結構仿真圖
圖7 3個虛擬局域網(wǎng)VLAN10、VLAN20和VLAN30的構成
將該網(wǎng)絡結構仿真實現(xiàn),如圖8 所示。
為3 臺交換機分別創(chuàng)建VLAN10、VLAN20 以及VLAN30,將計算機A1、A2、A3 以及A4 劃分到VLAN10,將計算機B1、B2 以及B3 劃分到VLAN20,將計算機C1、C2 以及C3 劃分到VLAN30。同時將3 臺交換機Switch1、Switch2 以及Switch3,它們與交換機Switch 4兩兩相連的接口配置成Trunk模式[9]。具體
圖8 插入VLAN標記的802.1Q幀網(wǎng)絡結構圖
配置過程如下:
首先配置交換機Switch1
Switch1(config)#vlan 10 / /為交換機創(chuàng)建VLAN10
Switch1(config-vlan)#vlan 20 / /為交換機創(chuàng)建VLAN20
Switch1(config-vlan)#vlan 30 / /為交換機創(chuàng)建VLAN30
Switch1(config-vlan)#exit / /退出
Switch1(config)#interface range fastEthernet 0 / 1-8
/ /進入交換機端口
Switch1(config-if-range)#switchport access vlan 10
/ /接口劃分到VLAN10
Switch1(config-if-range)#exit / /退出
Switch1(config)#interface range fastEthernet 0 / 9-16
/ /進入交換機端口
Switch1(config-if-range)#switchport access vlan 20
/ /接口劃分到VLAN20
Switch1(config-if-range)#exit / /退出
Switch 1(config-if-range)#interface range fastEthernet 0 / 17-
23 / /進入端口Switch 1(config-if-range)#switchport access vlan 30 / /接口劃分到VLAN30[10-11]
同樣配置交換機Switch2 和Switch3。交換機Switch4 配置如下:
Switch4(config)#vlan 10
/ /創(chuàng)建VLAN10 Switch4(config-vlan)#vlan 20
/ /創(chuàng)建VLAN20 Switch4(config-vlan)#vlan 30
/ /創(chuàng)建VLAN30 Switch4(config-vlan)#exit
/ /退出
Switch 4(config)#interface range gigabitEthernet 0 / 1-2 / /
進入接口g0 / 1-2
Switch 4(config-if-range)#switchport mode trunk / /將接口配置成trunk模式
Switch 4(config)#interface fastEthernet 0 / 24 / /進入接口f0 / 24
Switch 4(config-if)#switchport mode trunk / /將接口配置成Trunk模式
最后配置主機A1 和A4 的網(wǎng)絡參數(shù),將主機A1的地址配置為:192.168.1.10,子網(wǎng)掩碼配置為255.255.255.0。主機A4 的IP 地址配置為:192.168.1.40,子網(wǎng)掩碼配置為255.255.255.0。
交換機Switch4 與交換機Switch1、Switch2 以及Switch3 之間傳輸?shù)膮f(xié)議數(shù)據(jù)單元是802.1Q 幀,從主機A1 發(fā)1 個ping包給主機A4,傳輸VLAN10 數(shù)據(jù)信息,連續(xù)點擊“play controls”下的“capture / Forward”按鈕,得到如圖8 所示的仿真結果[12-13]。通過展開Switch1 ~Switch4 之間的“PDU Information at Device Switch4”,在“Inbound PDU Details”中得到如圖9 所示802.1Q以太網(wǎng)幀結構仿真結構圖,該圖中所示幀格式與圖3 相符。圖中VLAN 標記由4 Byte 兩部分組成,前2 Byte為802.1Q標記類型,其值為“0x8100”。后2 Byte標記控制信息(Tag Control Information,TCI)的值為“0xa”其二進制為:“0000000000001010”,前3 bit是用戶優(yōu)先級字段,接著的1 bit 是規(guī)范格式指示符(Canonical Format Indicator,CFI),最后的12 bit“000000001010”是該虛擬局域網(wǎng)VLAN 標識符VID(VLAN ID),其值為10,與傳輸VLAN 10 信息相符[14-15]。
圖9 插入VLAN標記的802.1Q幀結構仿真圖
數(shù)據(jù)鏈路層位于網(wǎng)絡的低層,不同的網(wǎng)絡類型其數(shù)據(jù)鏈路層幀結構不相同,掌握數(shù)據(jù)鏈路層各種幀結構對于理解計算機網(wǎng)絡原理至關重要。通過Packet tracer仿真軟件構建網(wǎng)絡結構,配置網(wǎng)絡環(huán)境,最終實現(xiàn)幀結構,對于理解數(shù)據(jù)鏈路層幀結構起到事半功倍的效果。