#「HTTP 協議」90%的java程式設計師都看得懂的最全HTTP 協議講解

Java小蕭發表於2018-12-14

本篇文章篇幅比較長,先來個思維導圖預覽一下。堅持到文末,有黃圖喲。

文章目錄,方便閱讀:

一、概述

二、HTTP 工作過程

三、HTTP 協議基礎

四、HTTP 協議報文結構

五、HTTP 報文首部之請求行、狀態行

六、HTTP 報文首部之首部欄位(重點分析)

七、HTTP 響應狀態碼(重點分析)

八、HTTP 報文實體

九、與 HTTP 協作的 Web 伺服器

如果有想學習java的程式設計師,可來我們的java學習扣qun:94311,1692免費送java的視訊教程噢!我整理了一份適合18年學習的java乾貨,送給每一位想學的小夥伴,並且每天晚上8點還會在群內直播講解Java知識,歡迎大家前來學習哦。

「HTTP 協議」90%的java程式設計師都看得懂的最全HTTP 協議講解(1)

一、概述

  1. 計算機網路體系結構分層

「HTTP 協議」90%的java程式設計師都看得懂的最全HTTP 協議講解(1)

2.TCP/IP 通訊傳輸流

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

「HTTP 協議」90%的java程式設計師都看得懂的最全HTTP 協議講解(1)

TCP/IP 通訊傳輸流

  1. 首先作為傳送端的客戶端在應用層(HTTP 協議)發出一個想看某個 Web 頁面的 HTTP 請求。

  2. 接著,為了傳輸方便,在傳輸層(TCP 協議)把從應用層處收到的資料(HTTP 請求報文)進行分割,並在各個報文上打上標記序號及埠號後轉發給網路層。

  3. 在網路層(IP 協議),增加作為通訊目的地的 MAC 地址後轉發給鏈路層。這樣一來,發往網路的通訊請求就準備齊全了。

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

如下圖所示:

「HTTP 協議」90%的java程式設計師都看得懂的最全HTTP 協議講解(1)

HTTP 請求

在網路體系結構中,包含了眾多的網路協議,這篇文章主要圍繞 HTTP 協議(HTTP/1.1版本)展開。

  1. HTTP協議(HyperText Transfer Protocol,超文字傳輸協議)是用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文字文件,還確定傳輸文件中的哪一部分,以及哪部分內容首先顯示(如文字先於圖形)等。

  2. HTTP是客戶端瀏覽器或其他程式與Web伺服器之間的應用層通訊協議。在Internet上的Web伺服器上存放的都是超文字資訊,客戶機需要通過HTTP協議傳輸所要訪問的超文字資訊。HTTP包含命令和傳輸資訊,不僅可用於Web訪問,也可以用於其他因特網/內聯網應用系統之間的通訊,從而實現各類應用資源超媒體訪問的整合。

  3. 我們在瀏覽器的位址列裡輸入的網站地址叫做URL (Uniform Resource Locator,統一資源定位符)。就像每家每戶都有一個門牌地址一樣,每個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級連結時,URL就確定了要瀏覽的地址。瀏覽器通過超文字傳輸協議(HTTP),將Web伺服器上站點的網頁程式碼提取出來,並翻譯成漂亮的網頁。

二、HTTP 工作過程

HTTP請求響應模型

「HTTP 協議」90%的java程式設計師都看得懂的最全HTTP 協議講解(1)

HTTP通訊機制是在一次完整的 HTTP 通訊過程中,客戶端與伺服器之間將完成下列7個步驟:

1.建立 TCP 連線

在HTTP工作開始之前,客戶端首先要通過網路與伺服器建立連線,該連線是通過 TCP 來完成的,該協議與 IP 協議共同構建 Internet,即著名的 TCP/IP 協議族,因此 Internet 又被稱作是 TCP/IP 網路。HTTP 是比 TCP 更高層次的應用層協議,根據規則,只有低層協議建立之後,才能進行高層協議的連線,因此,首先要建立 TCP 連線,一般 TCP 連線的埠號是80;

2.客戶端向伺服器傳送請求命令

一旦建立了TCP連線,客戶端就會向伺服器傳送請求命令;

例如:GET/sample/hello.jsp HTTP/1.1

3.客戶端傳送請求頭資訊

客戶端傳送其請求命令之後,還要以頭資訊的形式向伺服器傳送一些別的資訊,之後客戶端傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送;

4.伺服器應答

客戶端向伺服器發出請求後,伺服器會客戶端返回響應;

例如: HTTP/1.1 200 OK

響應的第一部分是協議的版本號和響應狀態碼

5.伺服器返回響應頭資訊

正如客戶端會隨同請求傳送關於自身的資訊一樣,伺服器也會隨同響應向使用者傳送關於它自己的資料及被請求的文件;

6.伺服器向客戶端傳送資料

伺服器向客戶端傳送頭資訊後,它會傳送一個空白行來表示頭資訊的傳送到此為結束,接著,它就以 Content-Type 響應頭資訊所描述的格式傳送使用者所請求的實際資料;

7.伺服器關閉 TCP 連線

一般情況下,一旦伺服器向客戶端返回了請求資料,它就要關閉 TCP 連線,然後如果客戶端或者伺服器在其頭資訊加入了這行程式碼 Connection:keep-alive ,TCP 連線在傳送後將仍然保持開啟狀態,於是,客戶端可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了網路頻寬。

剩下的

三、HTTP 協議基礎

四、HTTP 協議報文結構

五、HTTP 報文首部之請求行、狀態行

六、HTTP 報文首部之首部欄位(重點分析)

七、HTTP 響應狀態碼(重點分析)

八、HTTP 報文實體

九、與 HTTP 協作的 Web 伺服器

相關文章