OSI七層協議大白話解讀

互聯網的本質就是一系列的網絡協議,這個協議就叫OSI協議(一系列協議),按照功能不同,分工不同,人爲的分層七層。實際上這個七層是不存在的。沒有這七層的概念,只是人爲的劃分而已。區分出來的目的只是讓你明白哪一層是幹什麼用的。

每一層都運行不同的協議。協議是幹什麼的,協議就是標準。

實際上還有人把它劃成五層、四層。

七層劃分爲:應用層、表示層、會話層、傳輸層、網絡層、數據鏈路層、物理層。

五層劃分爲:應用層、傳輸層、網絡層、數據鏈路層、物理層。

四層劃分爲:應用層、傳輸層、網絡層、網絡接口層。

物理層:

字面意思解釋:物理傳輸、硬件、物理特性。在深圳的你與北京的朋友聊天,你的電腦必須要能上網,物理體現是什麼?是不是接一根網線,插個路由器,北京的朋友那邊是不是也有根網線,也得插個路由器。也就是說計算機與計算機之間的通信,必須要有底層物理層方面的連通,就類似於你打電話,中間是不是必須得連電話線。

中間的物理鏈接可以是光纜、電纜、雙絞線、無線電波。中間傳的是電信號,即010101...這些二進制位。

底層傳輸的010010101001...這些二級制位怎麼才能讓它有意義呢?

要讓這些010010101001...有意思,人爲的分組再適合不過了,8位一組,發送及接收都按照8位一組來劃分。接收到8位爲一組的話,那麼就可以按照這8位數來做運算。如果沒有分組,對方接收的計算機根本就不知道從哪一位開始來做計算,也解析不了收到的數據。我發了16位你就按照16位來做計算嗎?我發100位你就按照100位做計算嗎?沒什麼意義是吧。因此要想讓底層的電信號有意義,必須要把底層的電信號做分組。我做好8位一組,那麼我收到數據,我就知道這幾個8位做一組,這幾個8位做一組。那麼每個8位就可以得到一個確定的數。分組是誰幹的活呢?物理層幹不了,這個是數據鏈路層乾的。

數據鏈路層

早期的時候,數據鏈路層就是來對電信號來做分組的。以前每個公司都有自己的分組方式,非常的亂,後來形成了統一的標準(標準就是協議),即以太網協議Ethernet。

Ethernet規定

一組電信號稱之爲一個數據包,或者叫做一個“幀”

每一數據幀分成:報頭head和數據data兩部分


head包含:(固定18個字節)

發送者(源地址,6個字節)
接收者(目標地址,6個字節)
數據類型(6個字節)
data包含:(最短46字節,最長1500字節)

數據包的具體內容
head長度+data長度=最短64字節,最長1518字節,超過最大限制就分片發送。

這就像寫信,發送者的地址(源地址)就是你家的地址,接收者地址(目標地址)就是對方的收信地址,你家的路由器就相當於郵局。其實在計算機通信中的源地址和目標地址指的是mac地址。

Mac地址的由來:

head中包含的源和目標地址由來:Ethernet規定接入Internet的設備都必須具備網卡,發送端的和接收端的地址便是指網卡的地址,即Mac地址。

每塊網卡出廠時都被燒錄上一個實際上唯一的Mac地址,長度爲48位2進制,通常由12位16進制數表示,(前六位是廠商編碼,後六位是流水線號)

有了mac地址以後,計算機就可以通信了,假設一個教室就是一個局域網(隔離的網絡),這個教室裏面有幾臺計算機,計算機的通信和人的通信是一個道理,把教室裏面的人都比作一個個計算機,假設教室裏面的人都是瞎子,其實計算機就是瞎子的,計算機通信基本靠吼,現在我要找教室裏面的飛哥要戰狼2的片,然後我就吼一聲,說我要找飛哥要戰狼2的片,戰狼2的片就屬於我的數據,但是我在發的時候我是不是要標識我是誰,我要找誰,我是誰就是我的mac地址,我要找誰就是飛哥的mac地址,這兩個地址做數據包的頭部,再加上數據戰狼2的片就構成了一個數據幀。

這個數據包封裝好以後就往外發,到物理層以後就全部轉成二級制,往外發是怎麼發的呢?就是靠吼。即“我是Edison,我找飛哥要戰狼2的片”。這麼吼了一嗓子以後,全屋子的人都能聽到,這就是廣播。

計算機底層,只要在一個教室裏(一個局域網),都是靠廣播的方式,吼。

局域網的理解:什麼是互聯網,互聯網就是由一個個局域網組成,局域網內的計算機不管是對內還是對外都是靠吼,這就是數據鏈路層的工作方式-----廣播。

廣播出去以後,所有人都聽得見,所有人都會拆開這個包,讀發送者是誰,接收者是誰,只要接收者不是自己就丟棄掉。對計算機來說,它會看自己的Mac地址,飛哥收到以後,他就會把片發給我,發送回來同樣採用廣播的方式了,靠吼。

同一個教室(同一個局域網)的計算機靠吼來通信,那不同教室的計算機又如何?

比如說局域網1的pc1與局域網2的pc10如何通信?你在教室1(局域網1)吼,教室2(局域網2)的人肯定是聽不見的。這就是跨網絡進行通信,數據鏈路層就解決不了這個問題了,這就得靠網絡層出面了。

在講網絡層之前,其實基於廣播的這種通信就可以實現全世界通信了,你吼一聲,如果全世界是一個局域網,全世界的計算機肯定可以聽得見,從理論上似乎行得通,如果全世界的計算機都在吼,你想一想,這是不是一個災難。因此,全世界不能是一個局域網。於是就有了網絡層。

網絡層:

網絡層定義了一個IP協議,

你想,我是這個教室的一個學生,我想找隔壁教室一個叫老王的學生,我也不認識老王,那怎麼辦,我吼?老王在另外一個教室肯定是聽不到的。找教室的負責人,這個教室的負責人就負責和隔壁教室的負責人說話,說我們教室的有個學生要找你們教室的老王。往外傳的東西交給負責人就可以了,內部的話上面已經提到,通過廣播的方式,對外的東西廣播失效。教室的負責人就是網關,網關即網絡關口的意思。

Mac地址是用來標識你這個教室的某個位置,IP地址是用來標識你在哪個教室(哪個局域網)。你要跨網絡發包你是不是要知道對方的IP地址,比如你要訪問百度,你肯定得知道百度服務器的IP地址。計算機在發包前,會判斷你在哪個教室,對方在哪個教室,如果在一個教室,基於mac地址的廣播發包就OK了;如果不在一個教室,即跨網絡發包,那麼就會把你的包交給教室負責人(網關)來轉發。Mac地址及IP地址唯一標識了你在互聯網中的位置。

數據鏈路層中會把網絡層的數據包封裝到數數據鏈路層的數據位置,然後再添加上自己的包頭,再發給物理層,物理層發給網關,網關再發給對方教室的網關,對方教室的網關收到後在那個教室做廣播。

在數據鏈路層看,數據封裝了兩層,跟玩俄羅斯套娃有點類似,一層套了一層。

最終變成

現在來看另一個問題,在吼之前怎麼知道對方的Mac地址?這就得靠ARP協議。

ARP協議的由來:在你找飛哥要片之前,你的先幹一件事,想辦法知道飛哥的Mac地址。即你的機器必須先發一個ARP包出去,ARP也是靠廣播的方式發,ARP發送廣播包的方式如下:

局域網中怎麼獲取對方的Mac地址:

肯定要知道對方的IP地址,這是最基本的,就像你要訪問百度,肯定得知道百度的域名,域名就是百度的IP地址。自己的IP可以輕鬆獲得,自己的Mac也輕鬆獲取,目標Mac爲12個F,我們叫廣播地址,表達的意思是我想要獲取這個目標IP地址172.16.10.11的機器的Mac地址。Mac爲12個F代表的是一種功能,這個功能就是獲取對方的MAC地址,計算機的Mac永遠不可能是12個F。假設是在本教室廣播,一嗓子吼出去了,所有人開始解包,只有IP地址是172.16.10.11的這個人才會返回他的Mac地址,其他人全部丟棄。發回來源Mac改成飛哥自己的Mac地址,同時把飛哥的Mac地址放在數據部分。

跨網絡怎麼獲取對方的Mac地址:

通過IP地址區分,計算機運算判斷出飛哥不在同一個教室,目標IP就變成了網關的IP了。網關的IP在計算機上配死了,可以輕鬆獲取。

這樣網關就會把它的Mac地址返回給你,然後正常發包

網關幫你去找飛哥,但對用戶來說,我們根本就感覺不到網關的存在。

傳輸層

傳輸層的由來:網絡層的ip幫我們區分子網,以太網層的mac幫我們找到主機,然後大家使用的都是應用程序,你的電腦上可能同時開啓qq,暴風影音,等多個應用程序,

那麼我們通過ip和mac找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。

傳輸層功能:建立端口到端口的通信

補充:端口範圍0-65535,0-1023爲系統佔用端口

tcp協議:

可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是爲了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。

以太網頭    ip 頭                  tcp頭                  數據                                                    
 

udp協議:

不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。

以太網頭    ip頭                         udp頭                               數據              
 

 

應用層

應用層由來:用戶使用的都是應用程序,均工作於應用層,互聯網是開發的,大家都可以開發自己的應用程序,數據多種多樣,必須規定好數據的組織形式 。

應用層功能:規定應用程序的數據格式。

例:TCP協議可以爲各種各樣的程序傳遞數據,比如Email、WWW、FTP等等。那麼,必須有不同協議規定電子郵件、網頁、FTP數據的格式,這些應用程序協議就構成了”應用層”。

 
--------------------- 
作者:陶通寧 
來源:CSDN 
原文:https://blog.csdn.net/taotongning/article/details/81352985 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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