一.數(shù)據(jù)鏈路層
創(chuàng)新互聯(lián)歡迎來電:028-86922220,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),創(chuàng)新互聯(lián)網(wǎng)頁制作領(lǐng)域10多年,包括成都陽臺(tái)護(hù)欄等多個(gè)領(lǐng)域擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn),選擇創(chuàng)新互聯(lián),為網(wǎng)站錦上添花!
數(shù)據(jù)鏈路層實(shí)現(xiàn)的是相鄰結(jié)點(diǎn)之間的邏輯鏈接,其使用的協(xié)議單元為數(shù)據(jù)幀。在兩個(gè)結(jié)點(diǎn)之間傳送數(shù)據(jù)時(shí),數(shù)據(jù)鏈路層將網(wǎng)絡(luò)層交下來的IP數(shù)據(jù)報(bào)組裝成幀,在兩個(gè)相鄰節(jié)點(diǎn)間的鏈路上傳送幀。
數(shù)據(jù)鏈路層的三個(gè)基本問題:
1.封裝成幀,2.透明傳輸,3.差錯(cuò)檢測(cè)
下來討論一下封裝成幀 :
封裝成幀就是在一段數(shù)據(jù)的前后分別添加首部和尾部,這樣就構(gòu)成了一個(gè)幀。網(wǎng)絡(luò)層的IP數(shù)據(jù)報(bào)傳送到數(shù)據(jù)鏈路層就成為了幀的數(shù)據(jù)部分,在幀的數(shù)據(jù)部分前后分別加上頭部和尾部就構(gòu)成了一個(gè)完整的幀。
二.以太網(wǎng)的MAC層
1.MAC 層的硬件地址
在局域網(wǎng)中,硬件地址又稱為物理地址或者M(jìn)AC 地址。長(zhǎng)度是48位,是在網(wǎng)卡出廠
時(shí)固化的。在LINUX 下用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。在生產(chǎn)適配器時(shí),這6字節(jié)MAC地址已被固化在適配器的ROM中。因此實(shí)際上就是適配器地址或適配器標(biāo)識(shí)符。
2.MAC幀的格式
其中目的地址和源地址就是MAC地址,幀協(xié)議類型字段有三種值,分別對(duì)應(yīng)IP、ARP(地址解析)、RARP(逆地址解析)。幀末尾是CRC校驗(yàn)碼。
以太網(wǎng)幀中的數(shù)據(jù)長(zhǎng)度規(guī)定最小46字節(jié),最大1500字節(jié),ARP和RARP數(shù)據(jù)包的長(zhǎng)度不夠46字節(jié),要在后面補(bǔ)填充位。最大值1500稱為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類型有不同的MTU,如果一個(gè)數(shù)據(jù)包從以太網(wǎng)路由到撥號(hào)鏈路上,數(shù)據(jù)包長(zhǎng)度大于撥號(hào)鏈路的MTU了,則 需要對(duì)數(shù)據(jù)包進(jìn)行分片(fragmentation)。LINUX下的ifconfig命令的輸出中也有“MTU:1500”。注意,MTU這 個(gè)概念指數(shù)據(jù)幀中有效載荷的最大長(zhǎng)度,不包括幀首部的長(zhǎng)度。
3.ARP數(shù)據(jù)報(bào)格式
在網(wǎng)絡(luò)通訊時(shí),源主機(jī)的應(yīng)用程序知道目的主機(jī)的IP地址和端口號(hào),卻不知道目的主機(jī)的硬件地址,而數(shù)據(jù)包首先是被網(wǎng)卡接收到再去處理上層協(xié)議的,如果接收到的數(shù)據(jù)包的硬件地址與本機(jī)不符,則直接丟棄。因此在通訊前必須獲得目的主機(jī)的硬件地址。ARP協(xié)議就起到這個(gè)作用。
源主機(jī)發(fā)出ARP請(qǐng)求,詢問“IP地址是192.168.0.1的主機(jī)的硬件地址是多少”,并將這個(gè)請(qǐng)求廣播到本地網(wǎng)段(以太網(wǎng)幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播),目的主機(jī)接收到廣播的ARP請(qǐng)求,發(fā)現(xiàn)其中的IP地址與本機(jī)相符,則發(fā)送一個(gè)ARP應(yīng)答數(shù)據(jù)包給源主機(jī),將自己的硬件地址填寫在應(yīng)答包中。
每臺(tái)主機(jī)都維護(hù)一個(gè)ARP緩存表,在LINUX下可以用arp -a命令查看。緩存表中的表項(xiàng)有過期時(shí)間(一般為20分鐘),如果20分鐘內(nèi)沒有再次使用某個(gè)表項(xiàng),則該表項(xiàng)失效,下次還要發(fā)ARP請(qǐng)求來獲得目的主機(jī)的硬件地址。
ARP數(shù)據(jù)報(bào)幀格式如下圖所示:
注意到源MAC地址、目的MAC地址在以太網(wǎng)首部和ARP請(qǐng)求中各出現(xiàn)一次,對(duì)于鏈路層為以太網(wǎng) 的情況是多余的,但如果鏈路層是其它類型的網(wǎng)絡(luò)則有可能是必要的。硬件類型指鏈路層網(wǎng)絡(luò)類型,1為以太網(wǎng),協(xié)議類型指要轉(zhuǎn)換的地址類型,0x0800為IP地址,后面兩個(gè)地址長(zhǎng)度對(duì)于以太網(wǎng)地址和IP地址分別為6和4(字節(jié)),op字段為1表示ARP請(qǐng)求,op字段為2表示ARP應(yīng)答。
下面舉一個(gè)具體的例子:
主機(jī)1向主機(jī)2發(fā)送ARP請(qǐng)求:
主機(jī)2向主機(jī)1ARP應(yīng)答: