HTTP協議

HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型

 

HTTP:Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,HTTP是一個基於TCP/IP通信協議來傳遞數據,默認端口號爲80

  特點:無連接:限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

     媒體獨立的:只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型

       無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接

                                傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

 

HTTP/1.0 這是第一個在通訊中指定版本號的HTTP 協議版本,至今仍被廣泛採用,特別是在代理服務器中

HTTP/1.1 當前版本。持久連接被默認採用,並能很好地配合代理服務器工作。還支持以管道方式同時發送多個請求,以便降低線路負載,提高傳輸速度

 

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

HTTP工作原理

  HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端

  HTTP 請求/響應的步驟

1、客戶端連接到Web服務器

  一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認爲80)建立一個TCP套接字連接。例如,http://www.oakcms.cn。

2、發送HTTP請求

  通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。

3、服務器接受請求並返回HTTP響應

  Web服務器解析請求,定位請求資源。服務器將資源複本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。

4、釋放連接TCP連接

  若connection 模式爲close,則服務器主動關閉TCP連接,客戶端被動關閉連接,釋放TCP連接;若connection 模式爲keepalive,則該連接會保持一段時間,在該時間內可以繼續接收請求;

5、客戶端瀏覽器解析HTML內容

  客戶端瀏覽器首先解析狀態行,查看錶明請求是否成功的狀態代碼。然後解析每一個響應頭,響應頭告知以下爲若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。

 

例如:在瀏覽器地址欄鍵入URL,按下回車之後會經歷以下流程:

  1、瀏覽器向 DNS 服務器請求解析該 URL 中的域名所對應的 IP 地址;

  2、解析出 IP 地址後,根據該 IP 地址和默認端口 80,和服務器建立TCP連接;

  3、瀏覽器發出讀取文件(URL 中域名後面部分對應的文件)的HTTP 請求,該請求報文作爲 TCP 三次握手的第三個報文的數據發送給服務器;

  4、服務器對瀏覽器請求作出響應,並把對應的 html 文本發送給瀏覽器;

  5、釋放 TCP連接;

  6、瀏覽器將該 html 文本並顯示內容;   

消息結構

  HTTP是基於客戶端/服務端(C/S)的架構模型

  客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成,

請求報文的一般格式

 

 

 

 

 

 

HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。

以新華網爲例

請求消息

 

 

響應消息

HTTP首部字段根據用途分爲4種

通用首部字段:

請求首部字段

響應首部字段

 

 

使用Cookie的狀態管理。

  HTTP是無狀態協議,由於是無狀態不必保存狀態,自然減少了服務器的CPU及內存消耗。保留無狀態特徵又要解決登錄狀態問題,所以引入了cookie技術。cookie技術通過在請求和響應報文中寫入cookie來控制客戶端狀態。

  cookie會根據從服務器端發送的響應報文中叫做Set-Cookie的首部字段,通知客戶端保存Cookie,一個簡單的cookie

Set-Cookie: <cookie名>=<cookie值>

,下次再請求的時候客戶端自動在請求報文中加入Cookie值發送出去。服務器發現客戶端發送的Cookie,檢查是從哪個客戶端發來的,對比服務器記錄。得到之前的狀態。

給客戶端頒發一個通行證,訪問都必須攜帶自己通行證。這樣服務器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。

~ Cookie具有不可跨域名性

~ Cookie在客戶端是由瀏覽器來管理的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章