OSI網絡七層協議

OSI(Open System Interconnect),即開放式系統互聯參考模型,一般都叫OSI參考模型,是ISO(國際標準化組織)在1985年提出的一個試圖將各種計算機或者通信系統在世界範圍內互聯爲網絡的標準框架模型。在這一框架下詳細的規定了每一層的功能,以實現開放系統環境中的互連性、相互操作性和應用的可移植性。

OSI七層協議模型主要有:應用層(Application)、表示層(Presentation)、會話層(Session)、傳輸層(Transport)、網絡層(Network)、數據鏈路層(Data Link)、物理層(Physical)。

協議

常見的協議

互聯網中代表性的協議有IP、TCP、HTTP等,LAN中常用協議有IPX、SPX等。

計算機網絡體系結構將這些網絡協議進行了系統的歸納,TCP/IP就是這些協議的集合。除此以外,還有Novell公司的IPX/SPX、蘋果公司的AppleTalk(僅限蘋果公司計算機使用)、IBM開發的用於構件大規模網絡的SNA以及前DEC公司開發的DECnet等。

協議的必要性

協議是計算機之間通過網絡實現通信時事先達成的一種約定;這種約定使那些由不同廠商的設備,不同CPU及不同操作系統組成的計算機之間,只要遵循相同的協議就可以實現通信。

協議可以分很多種,每一種協議都明確界定了它的行爲規範:2臺計算機之間必須能夠支持相同的協議,並且遵循相同的協議進行處理,才能實現相互通信。

分組交換協議

將大數據分割爲一個個叫做包(Packet)的較小單位進行傳輸。

  計算機通信會在每一個分組中附加上源主機地址和目標主機地址送給通信線路;這些發送端地址接收端地址以及分組序號寫入的部分就是報文首部

一個較大的數據被分爲很多個分組,爲了標明原始數據的歸屬,有必要將分組序號寫入包中,接收端會根據序號,分組按序重新裝配爲原始數據。

協議中,通常會規定報文首部應寫入哪些信息,如何處理;相互通信的每臺計算機則根據協議構造報文首部,讀取首部等內容,發送和接收方必須對報文首部和主體保持一致的定義和解釋。

協議的標準化

計算機通信誕生之初,系統化與標準化未收到重視,不同廠商只出產各自的網絡來實現通信,這樣就造成了對用戶使用計算機網絡造成了很大障礙,缺乏靈活性和可擴展性。

爲解決該問題,ISO(國際標準化組織)制定了一個國際標準OSI(開放式通信系統互聯參考模型),而TCP/IP並非ISO指定,是由IETF(國際互聯網工程任務組)建議、致力推進標準化的一種協議,協議的標準化推動了計算機網絡的普及。

協議的分層

ISO在指定標準的OSI之前,提出了作爲通信協議設計指標的OSI參考模型,將協議分爲七層,使得原來複雜的網絡協議更加簡單化。

在七層模型中,每個分層都接受由它下一層所提供的特定服務,並且負責爲自己的上一層提供特定的服務,上下層之間進行交互所遵循的約定叫做接口,同一層之間的交互所遵循的約定叫做協議。

協議分層的優點

每個分層可以獨立使用,其實系統中某些分層發生變化,也不會影響整個系統,因此可以構造一個擴展性和靈活性都比較強的系統;

此外,通過分層可以細分通信功能,更易於單獨實現每個分層的協議,界定各個分層的具體責任和義務

協議分層的劣勢

過分模塊化,處理變得更加沉重,以及每個模塊都不得不事先相似的處理邏輯等。

OSI參考模型

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

  還有人把它劃成五層、四層,不管劃分爲幾層,目的都是爲了更好的理解這個模型。

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

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

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

OSI七層模型各層作用

OSI七層模型 功能 對應的網絡協議 每層功能概況
應用層 文件傳輸,文件管理,電子郵件的信息處理——apdu HTTP,TFTP,FTP,NFS,WAIS,SMTP 文件傳輸——文件傳輸協議、電子郵件——電子郵件服務、遠程登陸——遠程登陸協議
表示層 確保一個系統的應用層發送的消息可以被另一個系統的應用層讀取,編碼轉換,數據解析,管理數據的解密和加密,最小單位——ppdu Telnet,Rlogin,SNMP,Gopher 接受不同表現形式的信息,比如文字流、圖像、聲音等
會話層 負責在網絡中的兩節點建立,維持和終止通信,在一層協議中,可以解決節點連接的協調和管理問題。包括通信連接的建立,保持會話過程通信連接的暢通,兩節點之間的對話,決定通信是否被中斷以及通信中斷時決定從何處重新發送,最小單位——spdu SMTP,DNS 何時建立連接,何時斷開連接以及保持多久的連接
運輸層 定義一些傳輸數據的協議和端口。傳輸協議同時進行流量控制,或是根據接收方接收數據的快慢程度,規定適當的發送速率,解決傳輸效率及能力的問題——tpdu TCP,UDP 是否有數據丟失
網絡層 控制子網的運行,如邏輯編址,分組傳輸,路由選擇最小單位——分組(包)報文 IP,ICMP,ARP,RARP,AKP,UUCP 經過哪個路由傳遞到目標地址
數據鏈路層 主要是對物理層傳輸的比特流包裝,檢測保證數據傳輸的可靠性,將物理層接收的數據進行MAC(媒體訪問控制)地址的封裝和解封裝,也可以簡單的理解爲物理尋址。交換機就處在這一層,最小的傳輸單位——幀 FDDI,Ethernet,Arpanet,PDN,SLIP,PPP,STP,HDLC,SDLC,幀中繼 數據幀與比特流之間的轉換
物理層 定義物理設備的標準,主要對物理連接方式,電氣特性,機械特性等制定統一標準,傳輸比特流,因此最小的傳輸單位——位(比特流) IEEE 802.1A,IEEE 802.2到IEEE 802. 11 比特流與電子信號之間的切換

物理層

主要定義了物理設備的標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流,就是由1、0轉化爲電流強弱來進行傳輸,到達目的地後在轉化爲1、0,也就是我們常說的數模轉換與模數轉換。這一層的數據叫做比特。

數據鏈路層

數據鏈路層就是來對電信號來做分組的,該層的作用包括了物理地址尋址,數據的成幀,流量控制,數據的檢錯,重發等。該層控制網絡層與物理層之間的通信,解決的是所傳輸數據的準確性的問題。爲了保證傳輸,從網絡層接收到的數據被分製成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括髮送方和接收方的物理地址以及糾錯和控制的信息。其中的地址確定了幀將發送的位置,糾錯和控制信息則保證幀的準確到達。如果傳送數據的過程中,接收點檢測到數據有錯誤,就通知發送方重新發送這一幀。

Ethernet規定:一組電信號稱之爲一個數據包,或者叫做一個幀。

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

head包含:固定18個字節,發送者(源地址,6個字節),接收者(目標地址,6個字節),數據類型(6個字節)。

data包含:最短46字節,最長1500字節。

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

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

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

MAC地址(Media Access Control或者Medium Access Control):媒體訪問控制,或稱爲物理地址、硬件地址,用來定義網絡設備的位置。在OSI模型中,第三層網絡層負責IP地址,第二層數據鏈路層則負責MAC地址。因此一個主機會有一個MAC地址,而每個網絡位置會有一個專屬於它的IP地址。

MAC地址是網卡決定的,是固定的。用來表示互聯網上每一個站點的標識符,採用十六進制數表示,共6個字節(48位)。其中,前三個字節是由IEEE的註冊管理機構RA負責給不同廠家分配的代碼(高位24位),也稱爲“編制上唯一的標識符”,後三個字節(低位24位)由各廠家自行指派給生產的適配器接口,稱爲擴展標識符(唯一性)。一個地址塊可以生成224個不同的地址。MAC地址實際上就是適配器地址或適配器標識符EUI-48。

MAC地址對應於OSI參考模型的第二層數據鏈路層,工作在數據鏈路層的交換機維護着計算機MAC地址和自身端口的數據庫,交換機根據收到的數據幀中的“目的MAC地址”字段來轉發數據幀。

IP地址工作在OSI參考模型的第三層網絡層。兩者之間分工明確,默契合作,完成通信過程。IP地址專注於網絡層,將數據包從一個網絡轉發到另外一個網絡;而MAC地址專注於數據鏈路層,將一個數據幀從一個節點傳送到相同鏈路的另一個節點。
在這裏插入圖片描述
  有了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找到了一臺特定的主機,如何標識這臺主機上的應用程序,答案就是端口,端口即應用程序與網卡關聯的編號。

運輸層的主要作用就是建立端口到端口的通信。

運輸層定義了一些傳輸數據的協議和端口號(WWW端口80等),如:

TCP——傳輸控制協議,可靠傳輸,數據包沒有長度限制,理論上可以無限長,但是爲了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必再分割。用於傳輸可靠性要求高,數據量大的數據

UDP——用戶數據報協議,與TCP特性恰恰相反,不可靠傳輸,”報頭”部分一共只有8個字節,總長度不超過65,535字節,正好放進一個IP數據包。用於傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的。

會話層

會話層負責在網絡中的兩節點之間建立,維持和終止通信,在這層協議中,解決節點鏈接的協調和管理問題。
  會話層的功能包括:建立通信鏈接,保持會話過程通信連接的暢通。同步兩個節點之間的對話,決定通信是否被中斷以及通信中斷時決定從何處重新發送。當通過撥號向你的ISP(因特網服務提供商)請求鏈接到因特網時,ISP服務器上的層就會向你與你的PC客戶機上的會話層進行協商鏈接。若你的電話線偶然從牆上插孔脫落,你終端機上的會話層將檢測到鏈接中斷並重新發起鏈接。會話層通過決定節點通信的優先級和通信市場來設置通信期限。

表示層

表示層是應用程序和網絡之間的翻譯官。可確保一個系統的應用層所發送的信息可以被另一個系統的應用層讀取。在表示層,數據需要按照網絡所能理解的方案的進行格式化。這種格式化因爲使用網絡的類型的不同而不同。表示層管理數據的加密和解密,例如銀行賬戶,賬戶數據發送前加密,接受的時候對賬戶進行解密。

應用層

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

應用層功能:規定應用程序的數據格式,提供數據接口的標準,提供的服務包括文件的傳輸,文件的管理以及電子郵件的信息處理等

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

數據包的完整格式

OSI七層模型各層協議

物理層:EIA/TIA-232,EIA/TIA-499,V.35,V.24,RJ45,Ethernet,802.3,802.5,FDDI,NRZI,NRZ,B8ZS

數據鏈路層:Frame Relay,HDLC,PPP,IEEE 802.3/802.2,FDDI,ATM,IEEE 802.5/802.2

網絡層:IP,IPX,AppleTalk DDP

傳輸層:TCP,UDP,SPX

會話層:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP

表示層:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML

應用層:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP

參考資料

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