TCP/IP:有層次的協議棧

說明

《透視HTTP協議》羅劍鋒 (奇虎360技術專家)在極客時間開的一門專欄課,筆者記錄一下學習筆記,僅供參考。後端

TCP/IP 網絡分層模型

層次圖以下:服務器

層次圖

第一層:連接層(link layer)

負責在以太網、WiFi 這樣的底層網絡上發送原始數據包,工做在網卡這個層次,使用 MAC 地址來標記網絡上的設備,因此有時候也叫 MAC 層網絡

第二層:網際層或者網絡互連層(internet layer)

IP 協議就處在這一層。由於 IP 協議定義了IP 地址的概念,因此就能夠在連接層的基礎上,用 IP 地址取代 MAC 地址,把許許多多的局域網、廣域網鏈接成一個虛擬的巨大網絡,在這個網絡裏找設備時只要把 IP 地址再「翻譯」成 MAC 地址就能夠了。app

第三層:傳輸層(transport layer)

保證數據在 IP 地址標記的兩點之間「可靠」地傳輸,是 TCP 協議工做的層次。負載均衡

  • TCP:是一個有狀態的協議,須要先與對方創建鏈接而後才能發送數據,並且保證數據不丟失不重複
  • UDP:則無狀態,不用事先創建鏈接就能夠任意發送數據,但不保證數據必定會發到對方。
  • TCP 的數據是連續的字節流有前後順序,而 UDP 則是分散的小數據包,是順序發亂序收

第四層:應用層(application layer)

有各類面向具體應用的協議。例如 Telnet、SSH、FTP、SMTP、HTTP學習

MAC 層的傳輸單位是(frame)。編碼

IP 層的傳輸單位是(packet)。操作系統

TCP 層的傳輸單位是(segment)。翻譯

HTTP 的傳輸單位則是消息或報文(message)。code

能夠統稱爲數據包

OSI 網絡分層模型

OSI,全稱是開放式系統互聯通訊參考模型Open System Interconnection Reference Model)。

OSI 模型分紅了七層,以下圖:

OSI 模型

  • 第一層(物理層):網絡的物理形式,例如電纜、光纖、網卡、集線器等等
  • 第二層(數據鏈路層):它基本至關於 TCP/IP 的連接層
  • 第三層(網絡層):至關於 TCP/IP 裏的網際層
  • 第四層(傳輸層):至關於 TCP/IP 裏的傳輸層
  • 第五層(會話層):維護網絡中的鏈接狀態,即保持會話和同步
  • 第六層(表示層):把數據轉換爲合適、可理解的語法和語義
  • 第七層(應用層):面向具體的應用傳輸數據。

兩個分層模型的映射關係

大概的一個對應關係:

  • 第一層:物理層,TCP/IP 裏無對應
  • 第二層:數據鏈路層,對應 TCP/IP 的連接層
  • 第三層:網絡層,對應 TCP/IP 的網際層
  • 第四層:傳輸層,對應 TCP/IP 的傳輸層
  • 第5、6、七層:統一對應到 TCP/IP 的應用層

TCP/IP 實際應用時的會話管理編碼轉換壓縮等和具體應用常常聯繫的很緊密,很難分開。例如:HTTP 協議就同時包含了鏈接管理數據格式定義

映射關係

四層負載均衡:就是指工做在傳輸層上,基於 TCP/IP 協議的特性,例如 IP 地址、端口號等實現對後端服務器的負載均衡。

七層負載均衡:就是指工做在應用層上,看到的是 HTTP 協議,解析 HTTP 報文裏的 URI、主機名、資源類型等數據,再用適當的策略轉發給後端服務器。

小竅門(不是絕對的):

兩個凡是」:凡是由操做系統負責處理的就是四層或四層如下,不然,凡是須要由應用程序(也就是你本身寫代碼)負責處理的就是七層。

TCP/IP 協議棧的工做方式

協議棧的工做方式

一、HTTP 協議的傳輸過程就是這樣經過協議棧逐層向下,每一層都添加本層的專有數據,層層打包,而後經過下層發送出去。

二、接收數據則是相反的操做,從下往上穿過協議棧,逐層拆包,每層去掉本層的專有頭,上層就會拿到本身的數據。

相關文章
相關標籤/搜索