什麼是http協議

一,HTTP協議

HTTP協議是超文本傳輸協議的縮寫,是用於從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議。
         (超文本是用超鏈接的方法,將各種不同空間的文字信息組織在一起的網狀文本)

HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML文件,圖片文件,查詢結果等)

HTTP是一個屬於應用層的面向對象的協議,工作於客戶端-服務器端架構爲上。

瀏覽器作爲HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。Web服務器根據接受到請求後,向客戶端發送響應信息。


二,HTTP協議特點

1,簡單快速

客戶向服務器請求服務時,只需傳送請求方法和路徑。
         請求方法常有的有GET,HEAD,POST。每種方法規定了客戶與服務器聯繫的類型不同

由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快

2,靈活

HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記

3,無連接

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

TCP的面向連接是傳輸層的,而HTTP的無連接則是應用層的 。

簡單點講就是,比如發快遞,我只需要知道對方地址,然後把包裹給快遞公司發送過去就行,我自己不用清除對面在哪,再寄包裹時,又要重新郵寄。比如HTTP只需要知道源地址和目的地址就行了。

而有狀態就比如TCP,需要兩個人同時在線,可以互相聯繫。發送時需要先建立連接

4,無狀態

HTTP協議是無狀態協議。無狀態是指協議對於事物處理沒有記憶能力。

缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。

另一方面,在服務器不需要先前信息時它的應答就較快。

就是沒有記憶,一件事完成後,就忘記了。即下一次的http請求與上一次的http

5,支持B/S及C/S模式

6,默認端口80

7,基於TCP協議


三,HTTP過程概述

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

HTTP協議採用了請求/響應模型。

客戶端向服務器發送一個請求報文,請求報文包含請求的方法,URL,協議版本,請求頭部和請求數據。

服務器以一個狀體行作爲響應,響應的內容包括協議的版本,成功或者錯誤代碼,服務器信息,響應頭部和響應數據。

HTTP請求/響應的步驟如下:

  1. 客戶端連接到Web服務器
    一個HTTP客戶端,通常是瀏覽器,與Web服務器的HTTP端口(默認爲80)建立一個TCP套接字連接
  2. 發送HTTP請求
    通過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行,請求頭部,空行和請求數據4部分組成
  3. 服務器接收請求並返回HTTP響應
    Web服務器解析請求,定位請求資源。
    服務器將資源複本寫到TCP套接字,由客戶端讀取。一個響應由狀態行,響應頭部,空行和響應數據4部分組成

  4. 釋放連接TCP連接
    若connection模式爲close,則服務器主動關閉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. 釋放Tco連接;
  6. 瀏覽器將該html文本顯示內容
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章