HTTP響應連接介紹

HTTP即超文本傳輸協議,web站點的實現就是基于HTTP協議得以實現。本文將詳細討論HTTP。

1. HTTP協議版本:

HTTP從誕生到現在一共有如下幾個版本:

  • HTTP 0.9:是最早的版本,為HTTP的原型版本,其功能非常簡陋;

  • HTTP 1.0:此版本增加了很多新特性,如cache,method,MIME等,MIME的出現讓網頁不再是單純的純文本界面,而是可以嵌入很多的多媒體資源;

  • HTTP 1.1:此版本增強了緩存功能;

  • HTTP 2.0:為最新版本,增加了很多新的特性,但目前并沒有大范圍使用;

目前使用最廣泛的還是HTTP 1.0和1.1的版本。

2. HTTP的工作模式:

HTTP工作于tcp/ip協議之上,所以HTTP需要依托于tcp的三次握手和四次斷開機制來確保通信的可靠性。

HTTP的工作主要分為兩部分:

  • http請求報文(http request):客戶端向服務器發送請求報文;

  • http響應報文(http response):服務器相應客戶端報文請求;

一次完整的HTTP的請求處理過程分如下步驟:

  1. 建立或處理連接:接受請求或拒絕請求;

  2. 接收請求:接收來自于客戶端的請求報文中對某一特定資源的請求;

  3. 處理請求:對請求報文進行解析,根據請求報文的內容獲取相應的資源;

  4. 訪問資源:獲取請求中指定的資源;

  5. 構建響應報文;

  6. 發送響應報文:添加IP頭,TCP頭,數組幀頭文件等;

  7. 記錄日志;

3. HTTP接受請求的模型

目前HTTP的請求模型都是并發響應模型,并發響應模型分如下幾種:

  1. 單進程I/O模型:啟動一個進程處理所有的用戶請求,意味著所有的請求按照順序被串行處理,效率非常低;

  2. 多進程I/O模型:由父進程創建多個子進程,每個子進程響應一個請求;

  3. 復用的I/O模型:表示一個進程相應多個請求,其又分為如下模式:

    • 多線程模式:一個進程生成n個線程,每個線程處理一個請求;

    • 事件驅動(event-driven):一個進程直接處理n個請求;

  4. 復用的多線程I/O結構:啟動m個進程,每個進程處理n個線程,即可以響應請求的數量為m*n個;

隨著現在網站的訪問量越來越大,所以目前單進程I/O模型已經很少被用到了。

4. HTTP請求處理中的連接模式

目前網站的訪問已經越來越多,尤其是對于主要業務集中在web站點上的公司來說尤其如此。據亞馬遜的統計,如果在打開一個網站的時候等待3秒以上,那么可能就會丟失75%的用戶量,而如果再打開一個網站的時候等待了10秒以上,那么就會丟失95%的用戶量。所以網站的響應速度已經和企業的發展息息相關了。

那么在此詳細描述一下用戶在訪問一個網站的流程:

首先用戶會在客戶端通過網站地址打開網站。正常來說一個網頁會由很多資源組成,比如:圖片,視頻,流媒體,文字等。所以在我們看來所有內容都位于一個頁面加載,但是在瀏覽器的后臺其實是有多個資源請求的:

HTTP響應連接介紹

如圖打開的是www.sina.com的站點,右側可以看到的是打開這一個站點所請求的資源列表。由此我們知道一個網頁的打開是需要調用很多資源的。

下面我們來介紹HTTP在處理請求的連接模型:

其連接模式分為兩種方式:

  • keep-alive長連接模式;

  • 非保持連接模式;

4.1 非保持連接模式

非保持連接模式表示web站點在響應了客戶端的一個響應請求之后就會斷開此請求而再重新建立一個新的請求去處理其他的響應信息。我們都知道HTTP是建立在TCP協議之上的,其每次通信都會有三次握手和四次斷開的請求。這樣的話就會造成一個問題:服務器和客戶端大部分的時間會用在頻繁的建立連接和斷開上,通信效率會降低很多。由此就產生了長連接模式來解決此問題。

4.2 keep-alive長連接模式

keep-alive表示當客戶端和服務器建立起連接之后并不會因為一個資源傳輸結束而斷開連接,而是在此連接之上做多次資源的傳輸,這樣就不會把過多的時間浪費在建立連接和斷開連接的過程中。不過這樣也會帶來一個問題:如果有其他客戶端此時發起響應請求,此次連接不斷開的話其他客戶端將無法接入服務器。此問題通過如下兩種方式來解決:

  1. 定義傳輸資源數量上限:比如定義為200,當傳輸的資源數目達到200之后會服務器會自動斷開此連接去相應其他客戶端請求;

  2. 定義長連接時長:比如定義10秒,當連接達到10s之后服務器也會自動斷開此連接。

以上兩種方式哪一種先達到就會以哪一種為準,這樣就避免了某一客戶端長期占據服務器資源,同時也避免了非保持連接的弊端。

5. 總結

此文主要介紹了HTTP協議的版本,并發請求連接模型,客戶端和web站點之間的數據相應方式和http的兩種連接模式。后續會帶來HTTPD服務的詳細介紹。


原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/77258

(0)
王子豪王子豪
上一篇 2017-05-31
下一篇 2017-05-31

相關推薦

  • Linux系統程序包管理—rpm

     概述:      本章內容:軟件的運行環境,軟件包基礎,rpm包管理,yum管理,定制yum倉庫,編譯安裝 一、軟件運行環境     1.□API:Application Programming Interface (應用程序開發接口)         &n…

    Linux干貨 2016-09-01
  • N25第一周作業

    個人習慣用導圖寫的作業

    Linux干貨 2016-12-04
  • 磁盤管理(1)

    1、磁盤結構(機械硬盤) (1)磁盤構成: 磁臂(機械手臂):連接并固定磁頭 馬達(電機):可以轉動盤片,讓磁臂上的磁頭可以在盤片上讀寫數據 扇區:最小的物理存儲單位,每個扇區為512bytes 磁頭:可以讀寫數據 盤片:主要記錄數據 柱面:將扇區組成一個圓就是柱面,柱面是分區的最小單位 (2)磁盤接口 并口:IDE  SCSI&nbsp…

    Linux干貨 2016-08-30
  • old notes

    yum update: update software guest edition ***: how to install guest edition: 1) need to root: su – 2) yum install kernel-devel 3)yum install gcc* ( when don't remember n…

    Linux干貨 2016-09-19
  • 運維必備技能之磁盤管理

    磁盤分區的三個工具 1、fdisk交互式工具         fdisk /dev/sdb進入交互界面         交互式界面的幾個常用命令        …

    Linux干貨 2017-03-14
  • N26-博客作業-week13

    1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)  1)共享名為shared,工作組為magedu;  2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;  3)添加samb…

    Linux干貨 2017-06-15

評論列表(1條)

  • renjin
    renjin 2017-06-02 16:23

    一次完整的HTTP的請求處理過程分如下步驟:
    建立或處理連接、接收請求、處理請求、訪問資源、構建響應報文、發送響應報文、記錄日志。
    這是個重點,盡量達到沒有參考的情況下能說得出來

欧美性久久久久