圖解HTTP----讀書筆記

HTTP的歷史

3 項 WWW 構建技術,分別是:把 SGML(Standard Generalized Markup Language,標準通用標記語言)做爲頁面的文本標記語言的瀏覽器

                                                      HTML(HyperText Markup Language,超文本標記語言);做爲文檔傳遞協議的 HTTP ; 指定文檔所在地址的安全

                                                      URL(Uniform Resource Locator,統一資源定位符)服務器


HTTP/0.9 HTTP 於1990 年問世。那時的 HTTP 並無做爲正式的標準被創建。如今的 HTTP 其實含有 HTTP1.0 以前版本的意思,所以被稱爲HTTP/0.9。網絡

HTTP/1.0 HTTP 正式做爲標準被公佈是在 1996 年的 5 月,版本被命名爲HTTP/1.0,並記載於 RFC1945。雖然說是初期標準,但該協議標準至今仍被普遍使用在服務器端。ide

HTTP/1.1 1997 年 1 月公佈的 HTTP/1.1 是目前主流的 HTTP 協議版本。當初的標準是 RFC2068,以後發佈的修訂版 RFC2616 就是當前的最新版本。編碼

HTTP/2.0 主要技術方向加密

 

 

TCP/IP

TCP/IP的分層管理

應用層:決定了向用戶提供應用服務時通訊的活動。TCP/IP 協議族內預存了各種通用的應用服務。好比,FTP(FileTransfer Protocol,文件傳輸協議)和 DNS(Domain Name System,域名系統)服務就是其中兩類。HTTP 協議也處於該層。spa

傳輸層:傳輸層對上層應用層,提供處於網絡鏈接中的兩臺計算機之間的數據傳輸。在傳輸層有兩個性質不一樣的協議:TCP(Transmission ControlProtocol,傳輸控制協議)和 UDP(User Data Protocol,用戶數據報協議)。操作系統

網絡層:用來處理在網絡上流動的數據包。數據包是網絡傳輸的最小數據單位。該層規定了經過怎樣的路徑(所謂的傳輸路線)到達對方計算機,並把數據包傳送給對方。與對方計算機之間經過多臺計算機或網絡設備進行傳輸時,網絡層所起的做用就是在衆多的選項內選擇一條傳輸路線3d

數據鏈路層:用來處理鏈接網絡的硬件部分。包括控制操做系統、硬件的設備驅動、NIC(Network Interface Card,網絡適配器,即網卡),及光纖等物理可見部分(還包括鏈接器等一切傳輸媒介)。硬件上的範疇均在鏈路層的做用範圍以內

TCP/IP通訊傳輸流

 


 


 

 利用 TCP/IP 協議族進行網絡通訊時,會經過分層順序與對方進行通訊。發送端從應用層往下走,接收端則往應用層往上走。

舉例來講明,首先做爲發送端的客戶端在應用層(HTTP 協議)發出一個想看某個 Web 頁面的 HTTP 請求。

接着在傳輸層(TCP 協議)把從應用層處收到的數據(HTTP 請求報文)進行分割,並在各個報文上打上標記序號及端口號後轉發給網絡層。

在網絡層(IP 協議),增長做爲通訊目的地的 MAC 地址後轉發給鏈路層。

接收端的服務器在鏈路層接收到數據,按序往上層發送,一直到應用層。當傳輸到應用層,才能算真正接收到由客戶端發送過來的 HTTP請求

 


 

 

 

發送端在層與層之間傳輸數據時,每通過一層時一定會被打上一個該層所屬的首部信息。反之,接收端在層與層傳輸數據時,每通過一層時會把對應的首部消去。這種把數據信息包裝起來的作法稱爲封裝。

負責傳輸的 IP 協議

IP 協議的做用是把各類數據包傳送給對方。而要保證確實傳送到對方那裏,則須要知足各種條件。其中兩個重要的條件是 IP 地址和 MAC地址(Media Access Control Address)

IP 地址指明瞭節點被分配到的地址,MAC 地址是指網卡所屬的固定地址。IP 地址能夠和 MAC 地址進行配對。IP 地址可變換,但 MAC地址基本上不會更改。使用 ARP 協議憑藉 MAC 地址進行通訊IP 間的通訊依賴 MAC 地址。

在網絡上,通訊的雙方在同一局域網(LAN)內的狀況是不多的,一般是通過多臺計算機和網絡設備中轉才能鏈接到對方。而在進行中轉時,會利用下一站中轉設備的 MAC地址來搜索下一個中轉目標。這時,會採用 ARP 協議(AddressResolution Protocol)。ARP 是一種用以解析地址的協議,根據通訊方的 IP 地址就能夠反查出對應的 MAC 地址---------這種機制稱爲路由選擇

 

TCP 協議

 

 TCP 位於傳輸層,提供可靠的字節流服務。所謂的字節流服務(Byte Stream Service)是指,爲了方便傳輸,將大塊數據分割成以報文段(segment)爲單位的數據包進行管理

 爲了準確無誤地將數據送達目標處,TCP 協議採用了三次握手

 

 

握手過程當中使用了 TCP 的標誌(flag) —— SYN(synchronize) 和ACK(acknowledgement)

發送端首先發送一個帶 SYN 標誌的數據包給對方。接收端收到後,回傳一個帶有 SYN/ACK 標誌的數據包以示傳達確認信息。最後,發送端再回傳一個帶 ACK 標誌的數據包,表明「握手」結束。若在握手過程當中某個階段莫名中斷,TCP 協議會再次以相同的順序發送相同的數據包

各類協議與 HTTP 協議的關係

 

 

 

URL(UniformResource Locator,統一資源定位符)URL 正是使用 Web 瀏覽器等訪問 Web 頁面時須要輸入的網頁地址

 URI(統一資源標識符):URI 就是由某個協議方案表示的資源的定位標識符。協議方案是指訪問資源所使用的協議類型名稱

 

 

HTTP/1.0 和 HTTP/1.1 支持的方法

 

 

持久鏈接

 HTTP/1.1 和一部分的 HTTP/1.0 想出了持久鏈接(HTTP Persistent Connections,也稱爲 HTTP keep-alive 或HTTP connection reuse)的方法。持久鏈接的特色是,只要任意一端沒有明確提出斷開鏈接,則保持 TCP 鏈接狀態

 

 

 

管線化 

持久鏈接使得多數請求以管線化(pipelining)方式發送成爲可能。從前發送請求後需等待並收到響應,才能發送下一個請求。管線化技術出現後,不用等待響應亦可直接發送下一個請求

 

 

 

Cookie管理

 


 

 

 

 

 

HTTP報文

HTTP 報文大體可分爲報文首部和報文主體兩塊。二者由最初出現的空行(CR+LF)來劃分。一般,並不必定要有報文主體

 

 

編碼提高傳輸速率

-報文(message)是 HTTP 通訊中的基本單位,由 8 位組字節流(octet sequence,其中 octet 爲 8 個比特)組成,經過 HTTP 通訊傳輸。

-實體(entity)做爲請求或響應的有效載荷數據(補充項)被傳輸,其內容由實體首部和實體主體組成。

HTTP 報文的主體用於傳輸請求或響應的實體主體。

壓縮傳輸的內容編碼

經常使用的內容編碼有如下幾種
gzip(GNU zip)
compress(UNIX 系統的標準壓縮)
deflate(zlib)
identity(不進行編碼)

 

分割發送的分塊傳輸編碼

 

 

4 種 HTTP 首部字段類型

通用首部字段(General Header Fields)
請求報文和響應報文兩方都會使用的首部。

請求首部字段(Request Header Fields)
從客戶端向服務器端發送請求報文時使用的首部。補充了請求的附加
內容、客戶端信息、響應內容相關優先級等信息。

響應首部字段(Response Header Fields)
從服務器端向客戶端返回響應報文時使用的首部。補充了響應的附加
內容,也會要求客戶端附加額外的內容信息。

實體首部字段(Entity Header Fields)
針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更
新時間等與實體有關的信息。

 

 

 

 

HTTPS

HTTP 主要有這些不足,例舉以下

  • 通訊使用明文(不加密),內容可能會被竊聽
  • 不驗證通訊方的身份,所以有可能遭遇假裝
  • 沒法證實報文的完整性,因此有可能已遭篡改

HTTP+ 加密 + 認證 + 完整性保護
=HTTPS


經過和 SSL(Secure Socket Layer,安全套接層)或TLS(Transport Layer Security,安全層傳輸協議)的組合使用,加密 HTTP 的通訊內容。用 SSL 創建安全通訊線路以後,就能夠在這條線路上進行 HTTP通訊了。與 SSL 組合使用的 HTTP 被稱爲 HTTPS(HTTPSecure,超文本傳輸安全協議)或 HTTP over SSL

 

 

 報文完整性的方法,但事實上並不便捷、可靠。其中經常使用的是 MD5 和 SHA-1 等散列值校驗的方法

相關文章
相關標籤/搜索