做爲一個 Web 程序員👨💻,對於網絡模型你應該瞭解,知道網絡究竟是怎麼進行通訊的,進行工做的,爲何服務器可以接收到請求,作出響應。這裏面的原理應該是每一個 Web 程序員應該瞭解的。程序員
網絡模型不是一開始就有的,在網絡剛發展時,網絡協議是由各互聯網公司本身定義的,好比那時的巨頭網絡公司 IBM、微軟、蘋果、思科等等,他們每家公司都有本身的網絡協議,各家的協議也是不能互通的,那時候你們以爲這是能夠的,但對消費者來講這其實是技術壟斷,由於你買了蘋果的設備就不能用微軟的設備,由於他們的協議不是同樣的,沒有統一的標準來規範網絡協議,都是這些公司的私有協議。服務器
這樣大大的阻礙了互聯網的發展,爲了解決這個問題,國際標準化組織 1984 提出的模型標準,簡稱 OSI(Open Systems Interconnection Model),這是一個標準,並不是實現。網絡
TCP/IP 協議就是基於此模型設計。優化
OSI 模型是從上往下的,越底層越接近硬件,越往上越接近軟件,這七層模型分別是物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。加密
這種分層模型是咱們計算機科學中經常使用的方法,分層直接經過規定好的接口進行交互,每一層其實對它的上層或下層都是一個黑盒,其實它的上層和下層也不關心它內部的實現,只關心它們之間進行交互的接口,接口是規定的信息,要給到什麼都是規定好的。設計
這種分層模型的好處就是能夠對任何一層進行獨立升級、優化,只要保持接口不變那麼這個模型總體就不會有問題,好比說物理層從以太網線到光纖,咱們的網絡速度大大提升,可是整個技術革新的時候,其餘層是沒有作更多工做的,工做只在物理層完成。這樣作的好處也同時提升了咱們技術的發展革新速度。3d
咱們簡化模型,假設有 計算機 A 和 計算機 B 要進行信息交互,好比 A 上開發了一個網頁,須要 B 去訪問。B 發出一個請求給 A,那麼請求數據從 B 的 應用層開始向下傳到表示層、再從表示層傳到會話層直到物理層,經過物理層傳遞到 A ,A 的物理層接到請求後將請求向上傳遞到本身的應用層,應用層再將要請求的數據向本身的物理層方向傳遞而後 B 接到數據傳遞數據到本身的應用層。這裏簡化理解,咱們去除了三次握手四次揮手的邏輯。cdn
數據就是這樣在計算機和網絡中進行傳遞的。這其中作的工做就是每層進行層層解包和附加本身所要傳遞的信息,術語叫作報頭。blog
在四層,既傳輸層數據被稱做段(Segments);三層網絡層數據被稱作包(Packages);二層數據鏈路層時數據被稱爲幀(Frames);一層物理層時數據被稱爲比特流(Bits)。接口
TCP/IP 模型將 OSI 模型由七層簡化爲四層,傳輸層和網絡層被完整保留,所以網絡中最核心的技術就是傳輸層和網絡層技術。
TCP/IP 協議中每層技術舉例:
網絡訪問層:ARP、RARP
互聯網層:ICMP、IP
傳輸層:TCP、UDP
應用層:DNS、FTP、HTTP、SMTP、TELNET、IRC、WHOIS
網絡七層模型是一個標準,而非實現。
網絡四層模型是一個實現的應用模型。
網絡四層模型由七層模型簡化合並而來。