或許這樣能幫你了解 OSI 七層模型

2021-09-11 09:57:29 字數 4188 閱讀 1950

可能有觀眾老爺會問,前端知道這個有什麼用,平時基本用不上不是麼?這個倒是事實,我們平時一般只接觸應用層的http協議, 底層的協議我們可以毫不關心。但有些場景還是需要一些底層知識的。比如前端一般優化有一條原則是,盡量少發請求,那麼為何少發請求就能優化載入,它的開銷到底是什麼?又比如最近產品希望uv打點同一計算機唯一,但很可能使用者會採用不同客戶端使用該產品,研發該如何**啪打產品臉。仔細思考一下,其實不少情景也需要一點底層知識,因而不要書到用時方恨少啊~

osi(open system interconnect),即開放式系統互聯。 一般都叫osi參考模型,是iso(國際標準化組織)組織在2023年研究的網路互聯模型。該體系結構標準定義了網路互連的七層框架(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層),即iso開放系統互連參考模型。在這一框架下進一步詳細規定了每一層的功能,以實現開放系統環境中的互連性、互操作性和應用的可移植性。

傳送方從最高層開始,從上到下按順序傳輸資料,每一層接收到由上層處理的資料時,新增該層的首部並可能會對資料進行處理(如表示層)。而接收端則將順序反過來,從首層開始,將資料的內容與該層對應的首部拆開,傳給上一層。看起來很繞對吧?簡單理解可以這樣,想象a將要寄乙個易碎品寄給b,a所在的快遞站寄件時有由七個人組成的打包流程,每個人只管接收上乙個人的打包好的物件,並在外面套乙個大一點盒子,傳給下乙個人。當物件寄到b所在的快遞站時,同樣也有七個人負責拆盒子,每個人只拆乙個,最後將物件給到b手上。這樣是不是簡單易懂了?

當時我看到這裡時,不知道看官大人是否與我有一樣的疑問:其實這麼分層,不同層之間肯定有差不多的處理邏輯,處理也麻煩,有必要分層嗎?然而這個問題也很好理解,分層後,如若某層產生變化,也不會波及整個系統。我們也知道,每一層其實都有不同的協議,如果各層混合在一起,切換協議就無從談起,每次更換某一層,都需要改造整個系統。這和前端為何要使用框架,讓我們按mvcmvvm分層組織**是乙個道理的。明確界定各層的作用,有助於系統的健壯性。

那麼每一層到底有什麼協議,又有什麼作用呢?先從最高層往下看。

作為前端,應用層肯定是最熟悉的。它的作用是為應用程式提供服務並規定應用程式中通訊相關的細節,也就是為應用提供服務。常見的協議有httpftptelnetsmtp等。

我們日常開發中,接觸的協議主要以http為主,那麼把瀏覽器看作乙個應用,當使用者發起請求時,通過http協議獲得資料以供瀏覽器使用,這就是應用層的用途。而請求時發生錯誤,對錯誤進行處理,也是應用層需要負責的。

這一層可以想象成快遞公司的收件員,當客戶(應用)打**(發起請求)給收件員(應用層)時,收件員可以根據使用者的不同需求提供不同的服務(不同協議),比如隔天送達、指定時間送達等等。

表示層的作用是將應用處理的資訊轉換為適合網路傳輸的格式,或者將來自下一層的資料轉換為上層能處理的格式。它主要負責資料格式的轉換。具體來說,就是講裝置固有的資料格式轉換為網路標準格式。常見的協議有asciissl/tls等。

作用看起來可能比較繞,但其實是挺好理解的。我只會說中文,而日本友人只會說日文,那麼我們兩個是無法交流的。但如果我們都會說英文,交流時我先在心裡想好要說的話是什麼,再用英語說出來,日本友人聽到英文,在心裡轉換為日語,他就能弄懂我的意思,此時表示層就是各自在心裡轉化語言。而瀏覽器請求回一堆資料,是解析成文字還是,就由表示層決定。資料的壓縮、加密、打包等功能也都在這層完成。

這一層相當於快遞公司的打包員。如果快遞(資料)太臃腫,他會在不破壞快遞的情況下壓扁(壓縮)它。如果客戶注重安全線,全能的快遞公司還能用密碼箱(ssl/tls)打包快遞再快送。當然,打包員會確定,目的地快遞站的拆包員,能無損地拆開包裹,將快遞交給使用者。

會話層作用是負責建立和斷開通訊連線(資料流動的邏輯通路),以及資料的分割等資料傳輸相關的管理。常見的協議有adsprpc等。

會話層可看作是快遞公司的排程員。他管理著這次快遞的相關的資訊。例如這次客戶要發100噸沙土(資料),發到哪,到底是一車一車發、還是用輪船一次運過去。這些都是他的職責。而運完之後,相關資訊(連線)也可以被銷毀了,這也是排程員的職責。

傳輸層起著可靠傳輸的作用。只在通訊雙方節點進行處理,而不需在路由器上處理。此層有兩個具有代表性的協議:tcpudp

tcp協議提供可靠的通訊傳輸,簡單說就是確認目標能通訊的情況下才會傳輸資料(因此需要三次握手),傳輸過程如果丟了資料,也會重發。而udp協議則不然,不會確認目標能否通訊,只會根據協議發到對方位址的埠。至於對方收不收到,丟不丟包,一概不管。

傳輸層有乙個重要作用,就是指定通訊埠。以請求伺服器資料為例,伺服器有處理多種協議的能力,如之前應用層所說的httpftptelnet等,但到底你是用什麼協議呢?伺服器並不知道。但如果你指定了埠,如80,伺服器就會知道你是想用http協議的,自然會轉給對應協議的處理程式進行處理。

作比喻的話,可以將傳輸層看作是快遞公司的跟單員。負責任的跟單員(使用tcp協議)會保證快遞送到客戶手上,如果送不到就讓公司再發一次。不負責任的跟單員(使用udp協議)層只管將快遞送到客戶指定的地方,不管快遞是否送到客戶手上。

網路層負責將資料傳輸到目標位址。目標位址可以使多個網路通過路由器連線而成的某乙個位址。因此這一層主要負責定址和路由選擇。主要由ipicmp兩個協議組成。

網路層將資料從傳送端的主機傳送到接收端的主機,兩台主機間可能會存在很多資料鏈路,但網路層就是負責找出一條相對順暢的通路將資料傳遞過去。傳輸的位址使用的是ip位址。ip位址和我們的住址有點相似,我們的住址可以從省到市再到街逐步縮小範圍,直至我們住址。ip位址也有這樣的能力,通過不斷**到更近的ip位址,最終可以到達目標位址。如何選擇這條路,就看網路層了。

這好比是快遞公司的路線規劃者。快遞公司有很多集散中心,根據集散中心的情況(是否擁堵),找出一條經過n個集散中心的路徑將貨物(資料)沿路運過去。

資料鏈路層會將0、1序列劃分為具有意義的資料幀傳送給對端(資料幀的生成與接收)。舉個例子可能會更好理解,暫且把需要傳輸的資料看作為不同**的水,如果直接倒入池子中時,是無法重新分辨出不同**的水的。但如果將不同**的灌入瓶子中並打上記號,那就能區分出不同**的水。這也就是為什麼要劃分為具有意義的資料幀傳送給對端。同時要注意的是,資料鏈路層只負責將資料運送給物理相連的兩端,並不負責直接傳送到最終位址。

資料鏈路層可以看作是快遞公司的司機,他們駕駛著汽車,將打包好的貨物(資料幀)從乙個城市(物理節點)運輸到另乙個城市。

物理層負責0、1位元流(0、1序列)與電壓高低、光的閃滅之間的互換。典型的協議有rs 232crs 449/422/423v.24x.21x.21bis等。

看著高大上,其實是將資料的0、1轉換成電訊號或者光訊號。通過光纖、雙絞線甚至是無限電波等介質傳輸到指定的位址。而傳輸過程中的集線器、中繼器、數據機等,也屬於物理層的傳輸介質。物理層是osi七層模型的物理基礎,沒有它就談不上資料傳輸了。

物理層就是由實物所承載的,所以作比喻的話,公路、汽車和飛機等承載貨物(資料)的交通工具,就是物理層的象徵。

至此,osi七層模型的功能與協議就簡單地介紹完了~

上文只是osi七層模型一些粗淺的介紹,希望能幫到你更好地理解它。然而由於篇幅所限與本人能力不足,七層模型中有很多細節仍未涉及,如需深入了解,還應該仔細閱讀相關資料,加深對各層模型的認識。

感謝各位看官大人看到這裡~希望本文對你有所幫助。由於我對這方面的知識接觸不深,因而難免有錯漏,希望各位dalao打我臉,讓我知道**的理解有誤,保證很快更正哦~謝謝!

**tcp/ip

網際網路協議入門(一)

開放系統互連參考模型

OSI七層網路模型與TCP IP四層網路模型

osi七層模型 osi中的層 功能 tcp ip協議族 應用層 檔案傳輸,電子郵件,檔案服務,虛擬終端 tftp,http,snmp,ftp,smtp,dns,telnet 表示層 資料格式化,轉換,資料加密 沒有協議 會話層 解除或建立與別的接點的聯絡 沒有協議 傳輸層 提供端對端的介面 tcp,...

OSI七層網路模型與TCP IP四層網路模型

osi模型,即開放式通訊系統互聯參考模型 open system interconnection,osi rm,open systems interconnection reference model 是 國際標準化組織 iso 提出的乙個試圖使各種計算機在世界範圍內互連為網路的標準框架,簡稱osi...

OSI七層網路模型與TCP IP四層網路模型

1.osi網路分層參考模型 網路協議設計者不應當設計乙個單 一 巨大的協議來為所有形式的通訊規定完整的細節,而應把通訊問題劃分成多個小問題,然後為每乙個小問題設計乙個單獨的協議。這樣做使得每個協議的設計 分析 時限和測試比較容易。協議劃分的乙個主要原則是確保目標系統有效且效率高。為了提高效率,每個協...