OSI七層協議,顧名思義,分為七層,實際上七層是不存在的,是人為的進行劃分,讓人更好的理解
七層協議包括,物理層(我),數據鏈路層(據),網絡層(網),傳輸層(傳輸),會話層(會),表示層(表),應用層(用)(記憶口訣->我會用表傳輸網據)
五層協議,物理層,數據鏈路層,網絡層,傳輸層,應用層
四層協議,網絡接口層(口),網絡層(網),傳輸層(傳輸),應用層(用)(記憶口訣->用傳輸網口)
物理層
字面意思就是物理特性,物理傳輸,硬件的意思,正如我們打電話,必須有網線連接,才能打電話,正如計算機之間進行通訊,而網線傳輸就是電信號,如10101010,這樣的二進制數據,當然我們知道電信號一串數字傳輸過去,根本就不知道這些二進制是什么意思,所以我們要定義一個規則即協議,比如8位為一組,但是這不是在物理層能干的事情,要在數據鏈路層
數據鏈路層
數據鏈路層,定義了一種協議就是我們經常說的,以太網協議Ethernet,他把電信號分為一組,就是我們經常說的數據包,也叫做幀,每一幀由兩部分組成,頭和數據
首先,我們在發送數據包的的過程,就如我們寫信一樣,我們必須知道我們的地址和對方的地址,才能進行發送信息,而計算的的地址就是mac地址,而mac地址是我們計算機出廠就存在的一個唯一標識,因此在包頭就有了目標mac地址和源mac地址
此時我們計算機之間就可以進行通訊了,假設一個教室就是一個局域網,教室的每一個位置就是一臺計算機,比如教室有A,B兩個人要進行交談,A就站起來大喊一聲B,說我們下午一起吃飯吧,此時教室的所有人都聽見了,但是所有人聽到A是喊B,就知道叫的不是自己,就會忽略,而B知道叫的是自己,就答應A說,好的,而這種方式叫做廣播,數據鏈路層的工作方式就是廣播的方式
剛才我們知道局域網計算機的通信方式,但是我們計算機通訊肯定不能單單在一個局域網進行通訊,而是有無數個局域網組成的一個更大的局域網,假設全世界的計算機就是一個大型局域網,他們之間通訊好像是不是也可以通過廣播的方式進行通訊呢,理論上是可以的,但是仔細想想,都在哪里吼一嗓子,世界不會亂了嗎,因此就會出現了網絡層的概念
網絡層
此時網絡層也定義了一個協議叫做ip協議,首先舉個例子,就是我們每一個教室是一個局域網,有one,two兩個教室各自的A,B兩個同學要進行交流,但是他們之間不認識,而每個教室都有一個負責人,我們叫做one Teacher ,two Teacher,兩位老師,這兩位老師相當于我們的網關,然后A同學要找B同學,首先要知道B同學在那個教室,那么就會用上ip協議,ip協議就會區分出B同學在那個教室,這樣A同學找到了two Teacher老師告訴他,我要找你們班的B同學,而two Teacher老師就會大吼一聲,B同學有人找你,此時就可已進行交流了
mac地址定位的是教室的某一個位置,而ip定位的是哪個教室,此時我們的數據包就會是下面的樣子
此時我們還有一個疑問就是在吼之前,要明確幾個地址,自己的mac地址,和ip地址,我可以知道,目標的ip,我們肯定也可以知道,正如我們要訪問百度,肯定知道他的域名一樣,但是我們怎么知道目標的mac地址呢
其實要知道目標的mac地址,還要靠ARP協議,其實就是靠廣播的方式發送ARP數據包,他的格式如下
其中目標mac地址是12F這叫做廣播地址,他的功能就是獲取對方的mac地址,當這個包在局域網中發送的時候,每個計算機進行拆解,發現不是自己就會忽略,但是如果是自己就會回把自己的mac地址返回,此時就知道了目標的mac地址了
但是如果是在跨局域網是如何處理的呢,首先通過ip區分目標在哪個網關,然后把目標ip換成網關的ip
然后網關就會把他自己的mac地址返回給你,放到目標mac地址
然后在正常發包,此時就會通過網關去找你的目標地址,其實這個過程我們根本就不知道網絡的存在
傳輸層
上面我們通過mac地址和ip地址定位了一條計算機,但是我們的計算機不單單運行一個應用程序,此時就要通過端口進行區分了,傳輸層就是端口到端口之間通信,且傳輸層也有他的協議的,比如TCP,UDP
應用層
應用層位于傳輸層之上,主要提供兩個終端設備上的應用程序之間信息交換的服務,它定義了信息交換的格式,消息會交給下一層傳輸層來傳輸。我們把應用層交互的數據單元稱為報文,應用層定義了許多協議,對于不同的網絡應用使用不同的協議,比如Email,WWW,FTP,HTTP等等
TCP和UDP區別
是否面向連接 :UDP 在傳送數據之前不需要先建立連接。而 TCP 提供面向連接的服務,在傳送數據之前必須先建立連接,數據傳送結束后要釋放連接。
是否是可靠傳輸:遠地主機在收到 UDP 報文后,不需要給出任何確認,并且不保證數據不丟失,不保證是否順序到達。TCP 提供可靠的傳輸服務,TCP 在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、擁塞控制機制。通過 TCP 連接傳輸的數據,無差錯、不丟失、不重復、并且按序到達。
是否有狀態 :這個和上面的“是否可靠傳輸”相對應。TCP 傳輸是有狀態的,這個有狀態說的是 TCP 會去記錄自己發送消息的狀態比如消息是否發送了、是否被接收了等等。為此 ,TCP 需要維持復雜的連接狀態表。而 UDP 是無狀態服務,簡單來說就是不管發出去之后的事情了。
傳輸效率 :由于使用 TCP 進行傳輸的時候多了連接、確認、重傳等機制,所以 TCP 的傳輸效率要比 UDP 低很多。
傳輸形式 :TCP 是面向字節流的,UDP 是面向報文的。
首部開銷 :TCP 首部開銷(20 ~ 60 字節)比 UDP 首部開銷(8 字節)要大。
是否提供廣播或多播服務 :TCP 只支持點對點通信,UDP 支持一對一、一對多、多對一、多對多
參考文獻:OSI協議