面試:你真的懂網絡分層模型嗎?(下)

上一篇大體給小夥伴介紹一下網絡分層的基本概念,以及每層的大體的功能,那麼今天我們來看看每層具體的功能是什麼?層與層之間又是怎麼進行封裝關聯的?


上一篇:面試:你真的懂網絡分層模型嗎?(上)


寫在前邊

上一篇主要分享了網絡分層的基本概念,爲什麼要進行網絡分層?又是如何進行分層?每一層的基本功能是什麼?而且對於每一層的的功能細節方面,比如數據包的組成以及每層包含的一些協議的使用都沒有細說,那麼這一篇文章將會分享網絡分層每層中協議等深入講解。(PS:可能裏邊有的講解不正確,還請大佬指出改正)


1、物理層

物理層裏邊涉及到最多的是硬件底層的一些內容,沒有需要過多瞭解的內容,我們直接看數據鏈路層。


2、數據鏈路層

上回講到數據鏈路層中規定的“以太網協議”來規定電信號的分組形式,什麼是以太網,以太網的數據包是什麼樣子的?


2.1 以太網協議

以太網規定,每組的電信號就是一個數據包,每個數據包我們可以成爲“幀”。每幀的組成是由標頭(Head)和數據(Data)組成。

在這裏插入圖片描述

那麼你會問,標頭裏有什麼信息?Data 數據又會存放寫什麼?爲什麼分爲兩部分?放在一塊不好嗎?

1、標頭

爲什麼傳輸數據會有標頭,我們想呀,在傳輸數據的時候,接收端怎麼判斷是不是給自己發送的,那麼就只取出標頭來進行判斷。

數據包的標頭中通常會存放一些有關數據包的說明、發送者是誰、接受者又是誰等相關識別信息。

標頭的長度固定爲 18 字節,也就是說,一些標頭識別信息的大小不能超過 18 字節。

2、數據

數據,顧名思義,你要傳輸給接收端什麼數據都會放到數據包中,也就是整個數據包的具體內容,比如文件、字符串之類的。

數據部分的長度最小至少爲 46 個字節,最長 1500 字節。我們可能會想到,如果小於 46 字節沒啥問題可以存放開,那麼大於 1500 字節怎麼處理呢?很簡單,我們就分成兩個包處理(分割),兩個包存放不下就分割成三個包…


2.2 廣播

上回說到,廣播的作用就是用來查找接收端的 MAC 地址,從而進行下一步的數據傳輸。注意,廣播只是一種發送數據的形式,而計算機想要知道另一臺計算機的 MAC 地址是通過 ARP 協議解決的,ARP 協議會在講完 IP 協議後再說,因爲它會涉及到 IP 協議的一點內容,現在講可能會有點亂。

如果你覺的上邊稍微有點亂,那怎們稍微屢一下,我們想要發送數據,首先要知道對方的唯一標識(MAC 地址),要想知道對方的 MAC 地址,需要使用 ARP 協議,假設我們通過 ARP 協議拿到了接收方的 MAC 地址。

我們開始發送數據,將發送方的 MAC 地址和接收方的 MAC 地址封裝在數據包中,然後發送端向同一子網絡中(同一局域網)中的所有計算機發送該數據包,所有的計算機接收到該包之後,就對數據包的頭部進行提取,提取出裏邊封裝好的接收端 MAC 地址和自己的 MAC 地址作比對,如果相同,就說明該數據包是給自己發送的,否則,就會丟棄該數據包,這個過程就是廣播的過程。

上一篇文章在這個地方留下的一個問題就以上是在同一局域網中,如果不在同一局域網中我們怎麼處理?我們平常使用無線網都知道每個無線局域網都會有一個路由器,我們先通過以上的方法將數據發送到路由器,然後路由器轉發數據到其他局域網中的計算機。


3、網絡層

網絡層中最重要的一個協議就是 IP 協議,我們一般發送端給服務端發送數據同時要知道兩個地址才能準確送達到對方,分別爲 IP 地址和 MAC 地址。停!stop! 上邊講到的明明知道對方的 MAC 地址就可以傳輸數據了,爲什麼現在需要兩個地址呢?你給我說明白,說不明白取關!

上邊確實是一個 MAC 地址就可以通信,但是前提是通過 ARP 協議獲得的 MAC 地址,而 ARP 協議正是利用的接收端的 IP 地址才獲取到接收端的 MAC 地址的,所以這兩個地址很重要,那麼如果實現的,下邊會繼續講。


3.1 IP 協議

IP 的數據包是直接放入到以太網數據包的“數據”部分的,這樣做有一個好處就是“上層的變動完全涉及不到下層的結構”。然後數據包就變成這個樣子了。

在這裏插入圖片描述

IP 數據包也分爲標頭(Head)和數據(Data)兩部分。

1、標頭

IP 數據包的標頭是 20 ~ 60 字節,主要包括版本、IP 地址等信息。

2、數據

數據的最大長度爲 65515 字節。整個 IP 數據包的最大總長度爲 65535 字節。主要存放 IP 數據包的具體內容。

問題來了,以太網的數據部分最長爲 1500 字節,你把一個長度爲 65535 字節的 IP 數據包放到以太網的數據包彙總,不會被撐破嗎?你在逗我麼?確實是呀,那我們就分割數據包吧,分割成幾個以太網數據包分開發送。


3.2 AND 運算

IP 協議上篇文章中最重要的作用就是判斷兩個設備是否屬於同一子網中(同一局域網中)。

將兩個IP地址與子網掩碼分別進行AND運算(兩個數位都爲1,運算結果爲1,否則爲0),然後比較結果是否相同,如果是的話,就表明它們在同一個子網絡中,否則就不是。

PS:看這篇文章之前,一定先要看之前寫的入門網絡分層的文章,不然會有很多疑問點。

我們可以通過 DNS 解析知道對方的 IP ,除了判斷兩個計算機是否在同一局域網中,還有一個作用就是然後通過 ARP 協議獲取到對方的 MAC 地址。停!真想讓我取關嗎?ARP 就 TN 的說了多少遍了,該詳細說一下了吧?


3.3 ARP 協議

前提:對方的 IP 地址是已知的,通過 DNS 解析得到。

ARP 協議發出一個數據包,包含在以太網的數據包中(其中包含對方的 IP 地址,對方的 MAC 地址欄是 FF:FF:FF:FF:FF:FF)。子網絡中的每臺主機都會收到這個包,然後從中取出 IP 地址與自身對比,如果兩者相同,都做出回覆,向對方報告自己的 MAC 地址,否則就丟棄這個包。


4、傳輸層

傳輸層主要涉及到兩個重要協議,UDP 和 TCP 協議,上篇講過主要用來確定端口到端口的通信,計算機中不同運行的程序端口號不相同。

"端口"是 0 到 65535 之間的一個整數,正好 16 個二進制位。0 到 1023的端口被系統佔用,我們只能選用大於1023 的端口。


4.1 UDP 協議

UDP 協議也分爲標頭(Head)和數據(Data)兩部分。

1、標頭

標頭的長度爲 8 字節。主要存放了發送和接收端口號。

2、數據

數據部分和標頭部分的總長度不超過 65535 字節,正好放進一個IP數據包。

前邊也講過,數據包之間是包含關係的,所以 UDP 的數據包是放到 IP 數據包的“數據”部分的,IP 數據包又放在以太網數據包的“數據”部分的。

在這裏插入圖片描述

4.2 TCP 協議

TCP 和 UDP 是相同的,上一篇講了 UDP 和 TCP 的優缺點,TCP 保證了網絡的可靠性,TCP 三次握手和四次揮手就是這部分內容。

TCP 的數據包和 UDP 相同嵌入在 IP 協議的“數據”部分,TCP 並沒有長度限制,但是爲了保證傳輸效率,肯定要進行限制的,TCP 的數據包的長度一般不會超過 IP 數據包的長度了,保證單個的 TCP 數據包不再進行分割。


5、應用層

應用層是最高一層,直接面向用戶,它的數據包會放在 TCP 的數據包的“數據”部分,那麼整個五層的數據包就會變成一下這樣。

在這裏插入圖片描述

以上五層中的內容基本講完了,我是從下到上逐層寫的,這兩篇文章可以讓你入門網絡五層協議的基本內容了。

裏邊還有一些 DNS 解析、如何分配 IP 地址以及TCP 三次握手四次揮手後續會單獨拿出來寫。老規矩,點贊、轉發,小鹿謝謝你的支持,我們下期再見!


❤️ 不要忘記留下你學習的腳印 [點贊 + 收藏 + 評論]

文章都看完了,爲何不妨點個贊呢?嘻嘻,那就說明你很自私,你怕那麼好的文章讓別人也看到。開個小小玩笑。

其實我也很自私,我把我的一直以來堅持原創的公衆號:「小鹿動畫學編程」偷偷給你,裏邊匯聚了小鹿以動畫形式講解的數據結構與算法、網絡原理、Web 等技術文章。
在這裏插入圖片描述

動一動你的小手,點贊就完事了,每個人出一份力量(點贊 + 評論)就會讓更多的學習者加入進來!非常感謝! ̄ω ̄=


作者Info:

【作者】:小鹿

【原創公衆號】:小鹿動畫學編程。

【簡介】:和小鹿同學一起用動畫的方式從零基礎學編程,將 Web前端領域、數據結構與算法、網絡原理等通俗易懂的呈獻給小夥伴。先定個小目標,原創 1000 篇的動畫技術文章,和各位小夥伴共同努力一起學習!公衆號回覆 “資料” 送一從零自學資料大禮包!

【轉載說明】:轉載請說明出處,謝謝合作!~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章