OSI网络七层模型简明教程
如果你讀過計算機專業,或者學習過網絡通信,那你一定聽說過 OSI 模型,它曾無數次讓你頭大。OSI 是 Open System Interconnection 的縮寫,譯為“開放式系統互聯”。
OSI 模型把網絡通信的工作分為 7 層,從下到上分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。
OSI 只是存在于概念和理論上的一種模型,它的缺點是分層太多,增加了網絡工作的復雜性,所以沒有大規模應用。后來人們對 OSI 進行了簡化,合并了一些層,最終只保留了 4 層,從下到上分別是接口層、網絡層、傳輸層和應用層,這就是大名鼎鼎的 TCP/IP 模型。
?
圖1:OSI 七層網絡模型和 TCP/IP 四層網絡模型的對比
這個網絡模型究竟是干什么呢?簡而言之就是進行數據封裝的。
我們平常使用的程序(或者說軟件)一般都是通過應用層來訪問網絡的,程序產生的數據會一層一層地往下傳輸,直到最后的網絡接口層,就通過網線發送到互聯網上去了。數據每往下走一層,就會被這一層的協議增加一層包裝,等到發送到互聯網上時,已經比原始數據多了四層包裝。整個數據封裝的過程就像俄羅斯套娃。
當另一臺計算機接收到數據包時,會從網絡接口層再一層一層往上傳輸,每傳輸一層就拆開一層包裝,直到最后的應用層,就得到了最原始的數據,這才是程序要使用的數據。
給數據加包裝的過程,實際上就是在數據的頭部增加一個標志(一個數據塊),表示數據經過了這一層,我已經處理過了。給數據拆包裝的過程正好相反,就是去掉數據頭部的標志,讓它逐漸現出原形。
你看,在互聯網上傳輸一份數據是多么地復雜啊,而我們卻感受不到,這就是網絡模型的厲害之處。我們只需要在代碼中調用一個函數,就能讓下面的所有網絡層為我們工作。
我們所說的?socket?編程,是站在傳輸層的基礎上,所以可以使用 TCP/UDP 協議,但是不能干「訪問網頁」這樣的事情,因為訪問網頁所需要的 http 協議位于應用層。
兩臺計算機進行通信時,必須遵守以下原則:
- 必須是同一層次進行通信,比如,A 計算機的應用層和 B 計算機的傳輸層就不能通信,因為它們不在一個層次,數據的拆包會遇到問題。
- 每一層的功能都必須相同,也就是擁有完全相同的網絡模型。如果網絡模型都不同,那不就亂套了,誰都不認識誰。
- 數據只能逐層傳輸,不能躍層。
- 每一層可以使用下層提供的服務,并向上層提供服務。
總結
以上是生活随笔為你收集整理的OSI网络七层模型简明教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python捕捉线程错误_Pythonr
- 下一篇: oracle 查询所有组合,Oracle