计算机网络 | 数据链路层 :ARP协议、以太网协议、MTU
數(shù)據(jù)鏈路層
- 數(shù)據(jù)鏈路層與網(wǎng)絡(luò)層的關(guān)聯(lián)
- 以太網(wǎng)協(xié)議
- 什么是以太網(wǎng)
- 以太網(wǎng)幀格式
- MAC地址
- MAC地址與IP地址
- MTU
- MTU對TCP的影響
- MTU對UDP的影響
- ARP協(xié)議
- 什么是ARP協(xié)議
- ARP數(shù)據(jù)報格式
- ARP協(xié)議的工作流程
- ARP局域網(wǎng)欺騙攻擊
數(shù)據(jù)鏈路層與網(wǎng)絡(luò)層的關(guān)聯(lián)
數(shù)據(jù)鏈路層的主要功能就是負(fù)責(zé)相鄰設(shè)備之間的數(shù)據(jù)傳輸 。
在網(wǎng)絡(luò)層那篇博客中也說過,網(wǎng)絡(luò)層是點對點之間的通信。主要通過IP協(xié)議描述起點到終點。而鏈路層則是對網(wǎng)絡(luò)層的補充,負(fù)責(zé)在起點到終點的路徑中,每一個相鄰節(jié)點的數(shù)據(jù)傳輸。
網(wǎng)絡(luò)層主要關(guān)心的是從起點到終點
鏈路層則關(guān)心的是其中路徑上的每一個相鄰節(jié)點的通信
舉個例子,比如我們要去旅游,我們頂下目標(biāo),從北京前往北海道。這即是我們所描述的起點與終點。
而光有起點和終點不行,還需要描述途中的行程,如先從北京坐車到某某機場,然后再從某某機場轉(zhuǎn)機到地點A,再從地點A,再從地點A坐船來到北海道,這邊是途中所規(guī)劃的路徑。
這個從起點到終點的整個行程表就相當(dāng)于我們的網(wǎng)絡(luò)層。而這一個一個的地點的移動,也就是具體的行程方式與途徑,就相當(dāng)于數(shù)據(jù)鏈路層。
如果沒有了行程表,即使知道出行方式和途徑也不知道具體的路徑。而只知道行程表,不通過具體的通行也只能停留在原地。這就是網(wǎng)絡(luò)層與數(shù)據(jù)鏈路層之間的關(guān)系。
以太網(wǎng)協(xié)議
什么是以太網(wǎng)
- 以太網(wǎng)" 不是一種具體的網(wǎng)絡(luò), 而是一種技術(shù)標(biāo)準(zhǔn); 既包含了數(shù)據(jù)鏈路層的內(nèi)容, 也包含了一些物理層的 內(nèi)容. 例如: 規(guī)定了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu), 訪問控制方式, 傳輸速率等;
- 例如以太網(wǎng)中的網(wǎng)線必須使用雙絞線; 傳輸速率有10M, 100M, 1000M等;
- 以太網(wǎng)是當(dāng)前應(yīng)用最廣泛的局域網(wǎng)技術(shù); 和以太網(wǎng)并列的還有令牌環(huán)網(wǎng), 無線LAN等
以太網(wǎng)幀格式
- 32位源MAC地址/目的MAC地址:表示發(fā)送端/接收端的MAC地址,用于描述識別相鄰的設(shè)備。
- 16位上層協(xié)議:記錄了上層網(wǎng)絡(luò)層的協(xié)議,用于數(shù)據(jù)分用時選擇上層解析的協(xié)議
- 32位FCS:幀尾,包含校驗和在內(nèi)。
MAC地址
MAC地址即相鄰設(shè)備定位的地址,也就是物理網(wǎng)卡的硬件地址,標(biāo)識每一塊網(wǎng)卡,在兩塊網(wǎng)卡之間的數(shù)據(jù)傳輸起到作用。
- MAC地址用來識別數(shù)據(jù)鏈路層中相連的節(jié)點;
- 長度為48位, 及6個字節(jié). 一般用16進制數(shù)字加上冒號的形式來表示(例如: 08:00:27:03:fb:19)
- 在網(wǎng)卡出廠時就確定了, 不能修改. mac地址通常是唯一的(虛擬機中的mac地址不是真實的mac地址, 可 能會沖突; 也有些網(wǎng)卡支持用戶配置mac地址)
MAC地址與IP地址
- IP地址描述的是路途總體的 起點 和 終點;
- MAC地址描述的是路途上的每一個區(qū)間的起點和終點;
MTU
MTU即Maximum Transmission Unit, 最大傳輸單元。它其實就是以太網(wǎng)協(xié)議幀的長度限制,用來通知對方所能接受數(shù)據(jù)服務(wù)單元的最大尺寸,說明發(fā)送方能夠接受的有效載荷大小,默認(rèn)為1500。
- 以太網(wǎng)幀中的數(shù)據(jù)長度規(guī)定最小46字節(jié),最大1500字節(jié),ARP數(shù)據(jù)包的長度不夠46字節(jié),要在后面補填充 位;
- 最大值1500稱為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類型有不同的MTU;
- 如果一個數(shù)據(jù)包從以太網(wǎng)路由到撥號鏈路上,數(shù)據(jù)包長度大于撥號鏈路的MTU了,則需要對數(shù)據(jù)包進行分 片(fragmentation);
- 不同的數(shù)據(jù)鏈路層標(biāo)準(zhǔn)的MTU是不同的;
因為MTU限制了數(shù)據(jù)幀的大小,所以其對上層也有影響。例如而在網(wǎng)絡(luò)層中,IP數(shù)據(jù)報中的UDP報文,雖然沒有超過數(shù)據(jù)報長度,但如果其大小大于MTU,其就得在網(wǎng)絡(luò)層進行數(shù)據(jù)分片,然后傳送到對端后再在網(wǎng)絡(luò)層組織數(shù)據(jù)。所以MTU對傳輸層有著一定的影響。
MTU對TCP的影響
因為TCP協(xié)議在進行三次握手的時候,雙方就約定好了一個MSS(最大數(shù)據(jù)段協(xié)商,取通信雙方最小的那一個)。因為TCP是面向字節(jié)流的傳輸,所以每次發(fā)送數(shù)據(jù)時,其就從發(fā)送緩沖區(qū)中取出不大于MSS的數(shù)據(jù)進行發(fā)送,也就是說, TCP在傳輸層會自動進行數(shù)據(jù)的分片, 所以其在網(wǎng)絡(luò)層不會分片。
MSS = MTU - 最小IP報頭長度 - 最小TCP報頭長度。
因為MTU默認(rèn)為1500,所以MSS默認(rèn)為1460,即1500 - 20 - 20。
MTU對UDP的影響
因為UDP中不存在MSS,所以其數(shù)據(jù)只要小于最大數(shù)據(jù)報大小就可以傳輸。但是在其封裝到網(wǎng)絡(luò)層IP協(xié)議數(shù)據(jù)報時,雖然大小不超過最大數(shù)據(jù)報大小,但是如果超過MTU,即數(shù)據(jù)無法一次性在鏈路層發(fā)送,所以此時就會在網(wǎng)絡(luò)層進行數(shù)據(jù)分片。
而問題來了,UDP是不可靠的,他不能保證數(shù)據(jù)能夠安全到達對端,所以在傳輸過程中,一旦有任何一個分片出問題,那么整個UDP報文都會被丟棄。這也就以為著,如果UDP傳輸中,分片越多,在傳輸?shù)臅r候出現(xiàn)問題的幾率也就越大。所以這時候就需要我們在應(yīng)用層使用UDP協(xié)議的時候就需要考慮到MSS的問題,將UDP數(shù)據(jù)報按照計算的MSS進行分包處理。
默認(rèn)的UDP MSS 為 1500 - 20 - 8 = 1472
ARP協(xié)議
什么是ARP協(xié)議
在進行網(wǎng)絡(luò)通信時,網(wǎng)絡(luò)層只給出了起點與終點的IP地址,那么數(shù)據(jù)鏈路層又是怎么通過IP地址來獲取路徑中每一個相鄰設(shè)備的MAC地址呢?答案就是使用了ARP協(xié)議。
ARP協(xié)議:
是一個介于網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層之間的一個協(xié)議,其主要作用就是通過IP地址來獲取MAC地址。
ARP數(shù)據(jù)報格式
- 注意到源MAC地址、目的MAC地址在以太網(wǎng)首部和ARP請求中各出現(xiàn)一次,對于鏈路層為以太網(wǎng)的情況 是多余的,但如果鏈路層是其它類型的網(wǎng)絡(luò)則有可能是必要的。
- 硬件類型指鏈路層網(wǎng)絡(luò)類型,1為以太網(wǎng);
- 協(xié)議類型指要轉(zhuǎn)換的地址類型,0x0800為IP地址;
- 硬件地址長度對于以太網(wǎng)地址為6字節(jié);
- 協(xié)議地址長度對于和IP地址為4字節(jié);
- op字段為1表示ARP請求,op字段為2表示ARP應(yīng)答。
ARP協(xié)議的工作流程
ARP協(xié)議如何獲取相鄰設(shè)備的MAC地址呢?
首先,按照上面的協(xié)議格式,封裝ARP請求。然后將ARP請求廣播到整個局域網(wǎng)中,然后相鄰設(shè)備收到這個ARP請求時,就會查看其中的目的IP地址是否與自己相同,如果相同,則組織ARP響應(yīng),將自己的MAC地址回復(fù)回去,源端收到后,就會對ip地址和MAC地址的關(guān)系進行映射緩存,緩存時間一般是20分鐘。而如果不符合,則直接丟棄,什么都不做。
- 源主機發(fā)出ARP請求,詢問“IP地址是192.168.0.1的主機的硬件地址是多少”, 并將這個請求廣播到本地網(wǎng) 段(以太網(wǎng)幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播);
- 目的主機接收到廣播的ARP請求,發(fā)現(xiàn)其中的IP地址與本機相符,則發(fā)送一個ARP應(yīng)答數(shù)據(jù)包給源主機,將自 己的硬件地址填寫在應(yīng)答包中;
- 每臺主機都維護一個ARP緩存表,可以用arp -a命令查看。緩存表中的表項有過期時間(一般為20分鐘),如 果20分鐘內(nèi)沒有再次使用某個表項,則該表項失效,下次還要發(fā)ARP請求來獲得目的主機的硬件地址
ARP緩存為什么只存在一段時間后就會失效?
這個主要涉及到MAC地址與IP地址的映射原理。因為現(xiàn)在的IP地址基本都是DHCP動態(tài)分配的,主機發(fā)送DHCP請求給路由器,路由器收到后給主機動態(tài)分配IP地址。而IP地址改變后,原來的映射關(guān)系就會發(fā)生變化,所以ARP緩存不能存在太長時間,需要及時更新。
ARP局域網(wǎng)欺騙攻擊
從上面ARP協(xié)議的工作流程可以看出,ARP請求廣播是具有風(fēng)險的。如果在相鄰設(shè)備中有惡意的主機,如果其收到了我們的ARP廣播請求,他此時就可以偽裝成我們的目標(biāo)主機IP地址,將他的MAC地址響應(yīng)給我們,這是我們就會將數(shù)據(jù)發(fā)送給他,導(dǎo)致數(shù)據(jù)被截獲。
解決的方法也很簡單,在防火墻中設(shè)置一個MAC白名單即可,只將數(shù)據(jù)發(fā)送給局域網(wǎng)中信任的設(shè)備即可。
總結(jié)
以上是生活随笔為你收集整理的计算机网络 | 数据链路层 :ARP协议、以太网协议、MTU的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络 | 网络层 :IP协议详解
- 下一篇: 计算机网络 | IP协议相关技术与网络总