網絡七層協議(轉載)

最近看了一篇文章,一文看懂什麼是OSI七層協議感覺很有用,就copy到CSDN。
另一篇,老_張博客園也很值得借鑑。

我們都知道互聯網的本質是一系列的網絡協議,這個協議就叫做OSI協議。按照功能不同分工不同,認爲的分爲七層。實際上這七層是並不存在的,也就是說沒有這些概念,而我們今天提到的七層概念,只是人爲的劃分而已。目的只是爲了讓大家更好地理解這些都是用來做什麼的。

從專業的角度來說,OSI就是一個開放的通信系統互聯參考模型,也是一個定義的很好的協議規範。OSI模型有7層結構,每層都可以有幾個子層。OSI的7層從下到上分別是7-應用層、6-表示層、5-會話層、4-傳輸層、3-網絡層、2-數據鏈路層、1-物理層。

在這裏插入圖片描述2. OSI歷史

忘記告訴大家,這個協議是從下到上倒推出來的。

我們來回顧一下這段有趣的歷史吧~

OSI模型最初是因爲美國人的兩臺機器之間有進行通信的需求。

需求1:兩個硬件之間如何進行通信,具體就是一臺發比特流,另一臺能夠收到。於是就有了物理層:主要是定義設備標準,如網線的額接口類型、管線的接口類型、各種傳輸介質的傳輸速率等。它的主要租用是傳輸比特流,就是從1/0轉化爲電流強弱來進行傳輸,到達目的之後再轉化爲1/0,也就是我們常說的數模轉換。這一層的數據是比特。

需求2:現在通過電線我能發數據流了,但是我還是希望能通過無線電波,通過其他介質來進行傳輸。然後我還要保證傳輸過去的比特流是正確的,需要由糾正錯誤的功能。

數據鏈路層:定義瞭如何讓格式化數據進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保數據的可靠傳輸。

需求3:現在我能發正確的比特流數據到另一臺計算機了,但是當我發大量數據的時候,可能需要很長時間,例如:一個視頻格式的,網絡會中斷好多次,實際上,即使有了物理層和數據鏈路層,網絡還是經常中斷,只是中斷的時間是毫秒級別的。

那麼,我還需要保證傳輸大量文件時的準確性。於是,我要對發出去的數據進行封裝。就像發快遞一樣,一個個發送。

於是,發明了傳輸層(傳輸層在OSI模型中,是在網絡層面上)。

比如TCP,是用於發送大量數據的,我發出去一萬個包,另一臺電腦就需要告訴我是否接收到一萬個包,如果缺少3個包,就告訴我是第1001/234/8888個包丟了,那我再發一次。這樣,就能保證對方把這個視頻完整接收了。

例如UDP,適用於發送少量數據的。我發20個包出去,一般不會丟包,所以 ,我不管你收到多少,在多人互動遊戲中,也經常受到UDP協議,因爲一般都是簡單的額信息,而且有廣播的需求。如果用TCP,效率就會很低,因爲它會不停地告訴主機我收到20個包,或者18個包,再發我兩個!如果同時有1萬臺計算機都這樣做,那麼用TCP反而會降低效率,還不如用UDP,主機發出去就算了,丟幾個包就卡一下,算了,下次再發包更新。

TCP協議是會綁定IP和端口的協議,下面會介紹IP協議。

需求4:傳輸層是解決了打包的問題。但是如果我有多臺計算機,怎麼能找到我要發的那臺?或者A要給F發信息,中間要經過B/C/D/E,但是中間還有好多節點,如K/J/Z/Y.我怎麼選擇最佳路徑?這就是路由要做的事情。

於是,發明了網絡層,也就是路由器,交換那些具有尋址功能的設備所實現的功能。這一層定義的是IP複製,通過IP地址尋址,所以產生了協議。

需求5:現在已經能夠給指定計算機發送正確的封裝過的信息了,但是用戶級別的體驗並不是很好?難道我每次都要調用TCP去打包,然後調用IP協議去找路由,自己去發?當然不行,所以我們要建立一個自動收發包,自動尋址的功能。

於是發明了會話層。會話層的作用就是建立和管理應用程序之間的通信。

需求6:現在我能保證應用程序自動收發包和尋址了,但是我要用Linux給window發包,兩個系統語法不一致,就像安裝包一樣,EXE不能在Linux下用,shell在window也也是不能直接運行的。

於是需要表示層,幫我們解決不同系統之間的通信語法問題。

需求7:現在所有必要條件都準備好了,我們可以寫個Android程序,web程序去實現需求吧。

補充:不知道有沒有小夥伴熟悉Socket,這不是一個協議,而是一個通信模型。其實它最初是伯克利加州分校軟件研究所,簡稱BSD發明的,主要是一臺電腦兩個進程之間進行通信,然後把它用到兩臺電腦的進程間通信。所以,可以把它簡單理解爲進程間通信,不是什麼高級的東西,主要是這麼做的:A發包:發請求包給某個已經綁定的端口;收到B的允許後,正式開始發送,發送完了,高速B要斷開連接;收到斷開允許後,馬上斷開,然後發送已經斷開信息給B。

B收包:綁定端口和IP,然後在這個端口監聽接收到A的請求,發給A,並做好接收準備,主要就是清理緩存等待接收新數據;然後正式接收,接收到斷開請求,並允許斷開,確認斷開後,繼續監聽其他請求。

換句話說,socket就是I/O操作,socket並不僅限於網絡通信。在網絡通信中,它涵蓋了網絡層、傳輸層、會話層、表示層、應用層。

  1. OSI七層協議中每一層的特徵

第一層:物理層

機械性能:接口的形狀,尺寸的大小,引腳的數目和排列方式等;

電氣性能:接口規定信號的電壓、電流、阻抗、波形、速率好平衡特性等;

工程規範:接口引腳的意義、特性、標準。

工作方式:確定數據位流的傳輸方式,如:半雙工、全雙工等。

物理層協議:美國電子工業協會(EIA)的RS232/RS422/RS423等;

國際電報電話諮詢委員會(CCITT)的X.25/X.21等;

物理層的數據單位是位(BIT),典型設備時集線器HUB。

這主要是和硬件有關,與軟件關係不大。

第二層:鏈路層

鏈路層屏蔽傳輸介質的物理特徵,使數據可靠傳送。

內容包括介質訪問控制、連接控制、順序控制、流量控制、差錯控制和仲裁協議等。

鏈路層協議有:協議有面向字符的通訊協議(PPP)和麪向位的通訊協議(HDLC)。

仲裁協議:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、Token Bus、Token Ring

鏈路層數據單位是幀,實現對MAC地址的訪問,典型設備是交換機SWITCH。

第三層:網絡層

網絡層管理連接方式和路由選擇。

連接方式:虛電路和數據報服務。

虛電路是面向連接的,數據通訊一次路由,通過會話建立的一條通路。數據報是非連接的,每個數據報都有路由能力。網絡層的數據單位是包,使用的是IP地址,典型設備時路由器Router。

這一層可以進行流量控制,但流量控制更多的是使用第二層或第四層。

第四層:傳輸層

提供端到端的服務,可以實現流量控制、負載均衡。

傳輸層信息包括端口、控制字和校驗和。

傳輸層協議主要是TCP和UDP。

傳輸層位於OSI的第四層,這層使用的設備時主機本身。

第五層:會話層

會話層主要內容時通過 繪畫進行身份驗證、繪畫管理和確定通訊方式。一旦建立連接,會話層的任務就是管理會話。

第六層:表示層

表示層主要是解釋通訊數據的意義,如代碼轉換、格式變換等,使不同的終端可以表示。

還包括加密與解密、壓縮與解壓等。

第七層:應用層

應用層應該是直接面向用戶的程序或服務,包括系統程序和用戶程序,比如www、FTP、DNS、POP3和SMTP等都是應用層服務。

數據再發送時是數據從應用層至物理層的一個大包的過程,接收時是數據從物理層至應用層的一個解包過程。

從功能角度可以分爲三組:1/2層解決網絡通信問題,3/4層解決傳輸問題,5/6/7層處理對應用進程的訪問。

從控制角度可分爲二組:1/2/3層是通信子網,4/5/6/7是主機控制層。

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