2017年8月22日 星期二

OSI 參考模型 OSI Reference Model

研究網路參考模型之前,先討論一下網路到底為誰服務,PC流量到底是由誰產生送往何方?說到底所有的流量來源基本都是來自於應用程序,應用程序需要互相溝通達到資源供享,而人類只是使用這些應用程序所提供的便利性,所以網路是為應用程序提供服務。


於網路開發成熟以前,各家廠商都有各自開發網路協議來達到資源的供享,所以大都是私有的協議為主,但這樣造成的問題就是網路的擴充性不佳,及相容性問題,如果有某些網路廠商有較新的技術時,網路必需要大量的更換網路設備移轉到另一個廠商的協議來達到網路的互通性,所以IOS(international organization standardization 國際標準化組織)這個組織則希望能有一套標準來讓網路標準化,讓網路能夠有一套標準讓各大廠商來參考來降低相容性及擴充性問題,而這一套標準中包含協議眾多所以稱為協議棧(protocol suite)而這一套協議棧就是OSI(open system interconnection 開放式系統互連)參考模型。


重點提出分層的概念
  1. 為了能讓開發人員及研究人員更有效的了解裡面的協議。
  2. 下層為上層提供服務,而上層為下層提供連接介面
  3. 其中一層升級異動不影響其它層運作,方便網路升級。



OSI Reference Model (open system interconnection)開放式系統互連

Application(應用層)
剛剛說了下層為上層提供服務,那麼這個應用層身為最頂層那它就直接為應用程序提供服務,所以應用層裡的各種協議就是幫助應用程序可以訪問網路,各式各樣的應用程序都會嵌入一些應用層的協議來幫助訪問網路,如IE瀏灠器則使用http這個協議,outlook使用SMTPPOP3等,所以開啟這些應用程序時會連帶執行這些協議來幫助應用程序訪問網路,而這些協議對使用者來說是見不著的,故也可以說這層表示的就是應用程序本身。

Presentation(表示層)
就針對剛剛的應用層來說,是不是由應用層協議來協助應用程序來完成網路的訪問進而互連互通即可呢?當然不是。試想一下應用程序能在各式各樣的系統上(windowns XP,7,8,10
linux, MAC OS, mobile iOS, mobile android)等等,那同一個應用程序研發時基本都不太一樣,編碼方式,加解密方式,壓縮及解壓縮方式等等,如果不同可能會有亂碼的產生,所以表示層工作就是在協商通信二端都能使用的編碼,加解密及解壓縮的方式,來確保二端都能正常達到有效的通信。

Session(會話層)
建立連接提供表示層來協商所需要有編碼及加解密方式,並且應用程序在發送接收數據過程中,會話層會為應用程序監控並維護連接會話,待應用程序結束後斷開連接來減少系統資源浪費。

Transport(傳輸層)
傳輸層提供會話層一個端到端連接,指的就是發送的數據能成功的到達目的並且能成功的返回到發送端,確保應用程序能順利接收,並區分各應用程序之間流量。

確保上層數據所要發送的大小是符合規定,如Ethernet MTU 1500jumbo MTU 9000以上,所以為了避免傳輸問題,傳輸層必需要負責數據分片,並且做完數據分片後必需要額外加上頭部封裝協助區分應用程序。

Network(網路層)
傳輸層頭部並無法定位到目的節點,僅針對數據做分段及可靠確認機制,而目的節點定位這部份必需依賴三層協議,目前三層協議指的就是ipv4或是ipv6,而IP協議在於數據分片基礎之上在加上三層頭部來尋址定位到目的,而這個三層頭部封裝主要工作則是協助提供網路設備轉發訊息。

三層地址屬於邏輯地址,使用時並不關心二層數據鏈路類型(Ethernet,Serial,Virtual interface)等,只要是工作在三層狀態即可以配置三層地址。

Data link(數據鏈路層)
二層定義了數據傳輸格式、傳輸機制、地址信息,提供數據在每一種鏈路上都能正常傳遞(Ethernet->MAC address PPP->0xFF),因為網路整個通信體系由多種傳輸介質組成,而每種介質所傳輸的格式不同、機制不同、地址也不同,而二層主要將數據封裝成該鏈路介質所需要的格式及機制來達到傳輸工作。

Physical(實體層)
將二層數據轉換成bit,並轉換為出介面介質所能支援的訊號來傳送到鏈路上進行傳遞(如雙絞線->,光纖->)等。

結論:上三層統稱為應用層,它不會管流量怎麼到達目的及怎麼返回,也不會管網路設備到底如何轉發數據,它只管應用層序及操作系統,而下四層可以理解為網路傳輸層,它關注的是端到端的通信及如何詢址定位到目的,確保流量從源到目的能正常通信及如何傳遞。

沒有留言:

張貼留言