淺談HTTP協議

概述: web

HTTP協議又稱超文本傳輸協議 HTTP(HyperTextTransfer Protocol)。HTTP 是一個無狀態(意味着客戶端跟服務器不能長時間處於鏈接狀態,一旦請求Request -> 響應Response過程完成,鏈接就會關閉)的應用層協議,基於C/S模式,它使用 TCP 鏈接進行可靠的傳送,可以在萬維網上進行文本、聲音、圖像、視頻等各類信息的交換。瀏覽器

HTTP鏈接過程服務器

HTTP基於C/S模式,那麼就有HTTP客戶端和 HTTP 服務器兩個部分,該過程主要由如下7個步驟組成:網絡

  • 創建TCP鏈接
    在HTTP工做開始前,web瀏覽器向服務器發起鏈接請求,並創建創建。http協議是比tcp協議更高層次的應用層協議,根據規則,只有低層的協議創建鏈接才能進行數據通訊。所以首先須要創建tcp鏈接,tcp鏈接的端口號通常是80.下面是創建鏈接的三次握手tcp

    第一次
    創建鏈接時,客戶端A向服務端B發送請求報文段,這時首部中的同步位SYN =1,同時選擇一個初始序號seq= x.TCP規定SYN=1報文段不能攜帶數據,可是要消耗一個序號。這時,TCP客戶進程進入SYN-SENT(同步已發送)狀態,等待服務器確認。
    第二次
    服務器收到請求報文後,如贊成鏈接,則向A發送確認,同時本身也發送一個確認報文段,確認報文段中SYN和ACK都置1,確認號ack = x+1,同時本身也爲本身選擇一個初始序號seq =y。注意,這個報文段也不能攜帶數據,但一樣要消耗掉一個序號。這時TCP服務器進程進入SYN-RCVD(同步收到)狀態。
    第三次
    客戶端A收到B的確認後,還要向B給出確認報文段。確認報文段的ACK=1,確認號ack =y+1,而本身的序號seq=x+1.此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP鏈接成功)狀態,完成三次握手。
  • 客戶端向服務器發送請求命令
    【請求行: 請求方法 、 url 、 協議版本】。一旦創建起鏈接,瀏覽器就會當即向服務器發起請求
  • Web瀏覽器發送請求頭信息
    瀏覽器向服務器發送他的頭部信息,頭部信息的格式爲name=value的格式發送,最後將以一個空行來告訴服務器發送的請求消息報頭已經發送完畢。
  • Web服務器應答
    【狀態行:協議版本號 、 應答狀態碼】。瀏覽器向服務器發送請求之後,服務器會作出應答,如HTTP/1.1 200 OK。
  • Web服務器發送應答頭信息
    就像客戶端向服務器發送本身的頭部消息同樣,服務器也向客戶端發送本身的數據和請求的文檔,並以一個空行表示頭部信息已經所有發送完畢。
  • Web服務器向瀏覽器發送數據
    這時候web服務器會以Content-Type應答頭部信息所描述的格式發送用戶所請求的實際數據
  • 服務器關閉TCP鏈接
    一旦web服務器向客戶端發送了請求數據,服務器就要斷開tcp鏈接。
    若是瀏覽器或是服務器的頭部信息中加入了「Content-Type:keep-alive」,那麼在TCP鏈接在發送數據以後仍是保持着打開狀態,瀏覽器仍是能夠向服務器發送請求。保持鏈接節省了爲每一個請求創建新的鏈接所須要的時間,還節約了網絡帶寬。

服務器響應狀態碼

圖片描述

詳情參考這篇文章url

相關文章
相關標籤/搜索