数据链路层之以太网协议
在 IP 數(shù)據(jù)包交付的過程中,在數(shù)據(jù)鏈路層會對數(shù)據(jù)包進(jìn)行添加報頭信息。以太網(wǎng)協(xié)議就是數(shù)據(jù)鏈路層的一個重要協(xié)議。這樣說其實不太準(zhǔn)確,因為以太網(wǎng)協(xié)議是一個規(guī)定數(shù)據(jù)鏈路層及物理層的協(xié)議,不能說它是數(shù)據(jù)鏈路層的一個協(xié)議。
以太網(wǎng)幀
以太網(wǎng)幀就是將網(wǎng)絡(luò)層交付的數(shù)據(jù)添加報頭信息后,此時的數(shù)據(jù)以幀的形式傳遞。以太網(wǎng)幀的格式如下:
在這里,目的地址與源地址這里都指的是 MAC 地址。每一個主機對應(yīng)唯一的一個 MAC 地址,是由網(wǎng)卡決定的,長度是 48 位,所以這里的目的地址與源地址都是 6 個字節(jié),也就是 48 個比特位。
在以太網(wǎng)幀的最后,還有一個 CRC 校驗碼,來校驗數(shù)據(jù)是否異常。
在中間,有一個兩個字節(jié)的類型標(biāo)識。這個類型字段有三種值,分別是 : IP、ARP、RARP。
IP
如果類型碼為 0800 那么在數(shù)據(jù)鏈路層解包完畢后,將該數(shù)據(jù)交付給網(wǎng)絡(luò)層的 IP 協(xié)議來處理該報文。
ARP
如果類型碼是 0806 , 那么在向上層交付的時候就交付給 ARP 協(xié)議,這里要說的是 ARP 協(xié)議是處于數(shù)據(jù)鏈路層與網(wǎng)絡(luò)層之間的一種協(xié)議,也叫作地址解析協(xié)議。它將 IP 地址轉(zhuǎn)換為 MAC 地址。
RARP
RARP 協(xié)議,就是 Reverse ARP,與 ARP 協(xié)議相同,是將 MAC 地址轉(zhuǎn)換為 IP 地址的協(xié)議。
一般來說,數(shù)據(jù)第一次發(fā)送給目的主機時,在這之前應(yīng)該發(fā)送 ARP 協(xié)議,根據(jù)目的主機的 IP 地址來確定目的主機的 MAC 地址,從而為后面的數(shù)據(jù)發(fā)送與接收提供便利。
MAC地址與IP地址
在數(shù)據(jù)發(fā)送傳輸?shù)倪^程中,目的 IP 地址與源 IP 地址是永遠(yuǎn)不會變的,這是這個數(shù)據(jù)的起始與終點,而 MAC 地址是一直在變化的,由于數(shù)據(jù)在傳輸?shù)倪^程中會經(jīng)歷很多的主機等,所以在這個過程中 MAC 地址一直在變。類似于我們坐車,要坐車從 A 出發(fā),目的地是 D。這個過程中我們會經(jīng)過 B C,在到達(dá) B 的時候,此時的 MAC 地址相當(dāng)于我們上一站是 A , 下一站是 C。而目的 IP 地址與 源 IP 地址 分別是 D 與 A,這樣說的話就很好理解了。
MAC 地址與 IP 地址,一個代表的目的與終點,一個代表著途中的經(jīng)過。所以在到達(dá)目的局域網(wǎng)后,數(shù)據(jù)包并不知道要傳輸給哪臺主機,因為 MAC 地址的變化,但是目的 IP 地址一直沒有變化,所以此時就需要 ARP 協(xié)議來確定目的主機的 MAC 地址。
MTU
在談 IP 協(xié)議的時候說到, IP數(shù)據(jù)報的長度受數(shù)據(jù)鏈路層的 MTU 影響。數(shù)據(jù)鏈路層要求在網(wǎng)絡(luò)層傳輸過來的數(shù)據(jù)包必須在 MTU 范圍內(nèi),以太網(wǎng)幀中的數(shù)據(jù)長度必須在 46字節(jié)到1500字節(jié)當(dāng)中去。也就是說在 IP 層在添加報頭信息之前,要判斷此時由傳輸層傳輸過來的數(shù)據(jù)段是否超過了 1480 個字節(jié)(以太網(wǎng)幀中的數(shù)據(jù)包括 IP 協(xié)議的報頭信息,IP 協(xié)議的報頭信息為 20 字節(jié)),如果超過了,那么則對該數(shù)據(jù)段進(jìn)行分片,所有被分片的數(shù)據(jù)的 IP 報頭信息當(dāng)中,它們的 16 位標(biāo)識都是相同的,并且報頭信息中的標(biāo)志字段中第二位為 0 ,第三位如果為 1 ,代表著報文的結(jié)束。
接收端在接收到這里分片數(shù)據(jù)后,根據(jù) IP 報頭信息的 16 為標(biāo)識信息、三位標(biāo)志位、13位偏移量信息進(jìn)行組裝。
如果分片后的數(shù)據(jù)在接收端丟失某一片,那么就組裝失敗。即使組裝失敗, IP 層也不負(fù)責(zé)重新傳輸?shù)墓δ堋_@是傳輸層所該做的事情。
我們發(fā)現(xiàn) ARP 協(xié)議與 RARP 協(xié)議它們的實際數(shù)據(jù)只有 28 個字節(jié),于是在它的報文后進(jìn)行補位,其中 PAD 就是用來填充的,使 ARP / RARP 協(xié)議的長度達(dá)到 MTU 的最小字節(jié)數(shù)。
對 TCP 傳輸?shù)挠绊?/h5>
TCP 協(xié)議在傳輸時也收到 MTU 的影響。一個 TCP 數(shù)據(jù)報的最大長度為 MSS 。MSS 處于 TCP 報頭信息選項中。在 TCP 進(jìn)行鏈接的時候,雙方在發(fā)送 SYN 與 SYN + ACK 時就會在選項內(nèi)對 MSS 進(jìn)行設(shè)置。在雙方都得到對方的 MSS 時,選擇較小的 MSS 的值作為最終的 MSS 。
再說明白點,MSS 的大小其實就是應(yīng)用層給傳輸層的交付的數(shù)據(jù)的大小。不包括傳輸層的報頭信息。所以在計算 MSS 的時候,用 MTU 減去網(wǎng)絡(luò)層報頭長度以及傳輸層報頭長度即可。
歡迎大家共同討論,如有錯誤及時聯(lián)系作者指出,并改正。謝謝大家!
總結(jié)
以上是生活随笔為你收集整理的数据链路层之以太网协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot starter自定
- 下一篇: Linux中光盘使用的文件类型,Linu