《透視HTTP協議》是
羅劍鋒
(奇虎360技術專家)在極客時間開的一門專欄課,筆者記錄一下學習筆記,僅供參考。後端
層次圖以下:服務器
負責在以太網、WiFi 這樣的底層網絡上發送原始數據包,工做在網卡這個層次,使用 MAC 地址來標記網絡上的設備,因此有時候也叫
MAC 層
。網絡
IP 協議
就處在這一層。由於 IP 協議定義了IP 地址
的概念,因此就能夠在連接層
的基礎上,用 IP 地址取代MAC 地址
,把許許多多的局域網、廣域網鏈接成一個虛擬的巨大網絡,在這個網絡裏找設備時只要把 IP 地址再「翻譯」成 MAC 地址就能夠了。app
保證數據在 IP 地址標記的兩點之間「可靠」地傳輸,是 TCP 協議工做的層次。負載均衡
TCP
:是一個有狀態的協議,須要先與對方創建鏈接而後才能發送數據,並且保證數據不丟失不重複UDP
:則無狀態,不用事先創建鏈接就能夠任意發送數據,但不保證數據必定會發到對方。字節流
,有前後順序
,而 UDP 則是分散的小數據包,是順序發
,亂序收
。有各類面向具體應用的協議。例如
Telnet、SSH、FTP、SMTP、HTTP
。學習
MAC 層的傳輸單位是幀
(frame)。編碼
IP 層的傳輸單位是包
(packet)。操作系統
TCP 層的傳輸單位是段
(segment)。翻譯
HTTP 的傳輸單位則是消息或報文
(message)。code
能夠統稱爲數據包
。
OSI,全稱是
開放式系統互聯通訊參考模型
(Open System Interconnection Reference Model
)。
OSI 模型分紅了七層,以下圖:
TCP/IP
的連接層TCP/IP
裏的網際層TCP/IP
裏的傳輸層大概的一個對應關係:
TCP/IP
裏無對應TCP/IP
的連接層TCP/IP
的網際層TCP/IP
的傳輸層TCP/IP
的應用層TCP/IP 實際應用時的
會話管理
、編碼轉換
、壓縮
等和具體應用常常聯繫的很緊密,很難分開。例如:HTTP 協議就同時包含了鏈接管理
和數據格式定義
。
四層負載均衡:就是指工做在傳輸層
上,基於 TCP/IP
協議的特性,例如 IP 地址、端口號等實現對後端服務器的負載均衡。
七層負載均衡:就是指工做在應用層
上,看到的是 HTTP 協議,解析 HTTP 報文裏的 URI、主機名、資源類型等數據,再用適當的策略轉發給後端服務器。
小竅門(不是絕對的):
「兩個凡是」:凡是由操做系統負責處理的就是四層或四層如下,不然,凡是須要由應用程序(也就是你本身寫代碼)負責處理的就是七層。
一、HTTP 協議的傳輸過程就是這樣經過協議棧逐層向下,每一層都添加本層的專有數據,層層打包,而後經過下層發送出去。
二、接收數據則是相反的操做,從下往上穿過協議棧,逐層拆包,每層去掉本層的專有頭,上層就會拿到本身的數據。