詳解HTTP協議

詳解HTTP協議

1、HTTP協議簡介

http(超文本傳輸)協議,是互聯網應用最為廣泛的一種網絡協議,主要用于Web服務,通過計算機處理文本信息,格式為HTML(超文本標記語言)來實現。

2、Http協議的版本:

0.9版本:僅支持html頁面(已被淘汰);1.0版本: ? ? ?(1)引入MIME(多用途互聯網郵件擴展)機制,引入這個機制之后就可以發送多媒體信息;? ? ?(2)引入keep-alive機制,支持持久鏈接的功能(但這個keep-alive原理是在首部添加了某個字段而形成,并非原生就支持此功能);? ? ?(3)引入支持緩存頁面功能;1.1版本:1.0版本的升級,支持更多的請求連接方式、優化可持久鏈接、優化了頁面緩存;2.0版本:提供了http語義優化的傳輸,增加了一個spdy技術。Spdy技術:google引入的一個技術,能夠加速http數據交互,尤其是使用了ssl加速機制;被人們普遍稱為https協議;

目前網絡上最為常用的就是HTTP2.0版本。

3、常見的網頁頁面類型:

靜態頁面:

常見的后綴名是:

  • 文本:html、htm、txt、css、doc;

  • 圖片:gif、jpg、png;

  • 視頻:mp4、flv;

請求過程,如圖:

詳解HTTP協議

socket是在應用層和傳輸層之間的一個抽象層,socket本質是編程接口(API),它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用以實現進程在網絡中通信。TCP/IP只是一個協議棧,必須要具體實現,同時還要提供對外的操作接口(API),這就是Socket接口。通過Socket,我們才能使用TCP/IP協議。

①Web客戶端向內核注冊socket;

②客戶端通過瀏覽器,向Web服務器發送數據請求;

③Web服務端收到客戶端的請求信息;

④如果客戶端請求的資源在服務器本地,http服務會向系統內核申請調用;

⑤內核調用本地磁盤里的數據,并經數據發送給服務器;

⑥http將用戶請求的資源通過響應報文,最終響應客戶端;

特點:由開發人員預先編寫好,存放在當前文件系統中,響應速度快、頁面維護比較麻煩,數據交互性差、容易被搜索引擎收錄;

動態頁面:
常見的后綴名有:php、jsp、asp、net……

請求過程:

詳解HTTP協議

與靜態頁面不同的就是,如果用戶請求的是動態內容,那么此時http服務器就會調用后端的解釋器,由后端的解釋器在磁盤中獲取數據,通過解釋器運行生成html格式的文件。然后構建成響應報文,最終響應客戶端的請求。

特點:web服務器自身不支持動態頁面的處理,需要有專門的解釋器來進行完成,頁面數據多變,頁面維護比較簡單,響應速度慢、數據有交互性,頁面訪問時包含特殊符號?、%、&(特殊符號),不能被搜索引擎收錄;

偽靜態頁面:將動態頁面偽裝成靜態頁面,被搜索引擎收錄,消耗硬件資源;

4、http協議的報文:

request Message(請求報文):客戶端→服務器端

由客戶端向服務器端發出請求,不同的網站用于請求不同的資源(html文檔)

請求報文格式:

詳解HTTP協議

請求行:用來標識客戶端請求的資源時,使用的請求方法、請求資源、請求的協議是什么,它們直接使用“空格”進行分隔;

請求首部:作用是通過客戶端請求的相關內容告知服務器端(首部可以不止一個)

空白行:請求首部之后會有一個空白行,通過發送回車字符和換行字符,用于通知服務端以下內容將不會再出現請求首部的信息;

請求實體:請求的頁面的內容具體是什么

Response Message(響應報文):服務器端→客戶端

服務器響應客戶端的請求;

響應報文格式:

詳解HTTP協議

起始行:響應時采用的http協議的版本、響應的狀態碼、狀態碼的簡略信息;

響應首部:類似于請求報文,起始行后面一般有若干個頭部字段。每個頭部字段都包含一個名字和一個值,兩者用冒號進行分隔,可以包含一個或多個。

空白行:最后一個響應首部信息之后就是一個空行,通過發送回車符和換行符,通知客戶端空行下無首部信息;

響應實體:真正訪問頁面包含的內容;

5、HTTP請求方法

在HTTP通信過程中,每個HTTP請求報文中都會包含一個HTTP請求方法,用于告知客戶端向服務器端請求執行某些具體的操作。

常見的HTTP請求方式:GET、POST、HEAD

詳解HTTP協議

6、HTTP狀態碼

狀態碼大綱:

詳解HTTP協議

常見的狀態碼說明:

詳解HTTP協議

若是在上述狀態碼中沒有找到相應的信息,就參考HTTP狀態碼詳細介紹

7、HTTP的事物

包含一個HTTP請求,和對應請求的響應就叫做一個http事務,也可以理解http事務就是一個完整的HTTP請求和HTTP響應的過程。

HTTP協議默認情況下每個事務都會打開和關閉一個新的連接,所以相當耗費時間和帶寬,由于TCP慢啟動特性,所以每條新的連接的性能本身就會有所降低,所以可打開的并行連接的數量上限是有限的。所以使用持久連接這種模式比默認情況下不使用持久連接的方式會好一點,他的好處表現在其請求和tcp斷開的過程所消耗的時間會被減少。

8、HTTP資源

資源就是通過HTTP協議可以讓用戶通過瀏覽器或用戶代理能夠通過基于http協議向服務器端請求并獲取的內容,像html文檔、圖片等。

資源類型:是通過MIME進行標記;

格式:主標記和此標記;

常見的MIME類型:

詳解HTTP協議

9、URL介紹

URL,全稱為Uniform Resource Location,中文翻譯為統一資源定位符,也被稱為,網頁地址(網址)。如同門牌一樣,它是因特網上標準的資源唯一地址。通俗地說, URL是Internet上用來描述信息資源的字符串,主要用在各種www客戶端和服務器程序上。URL可以用一種統一的格式來描述各種信息資源,包括文件、服務器的地址和目錄等。嚴格來講,每個URL都是一個URI,它標識一個互聯網資源,并指定對其進行操作或取得該資源的方法。

URL的格式由下列三部分組成:

第一部分是協議,例如:http。

第二部分是主機資源服務器IP地址或域名(端口號),例如: www.kgc.cn

第三部分是主機資源的具體地址,如目錄和文件名等,例如: teacher/index.html

第一部分和第二部分之間用“:// “符號隔開,第二部分和第三部分用“/”符號隔開。第一部分和第二部分是不可缺少的,第三部分可以省略

10、URI介紹

URI(Uniform Resource Identifier) 中文稱為同一資源標示符, 用于標識某一互聯網資源名稱的字符串,通過這種標識來允許你用戶對資源可通過特定的協議進行交互操作。在 Web 上可用的每種資源,包括 HTML 文檔、圖 像、視頻片段、程序等, 由一個通用資源標識符進行定位。所以我們可以使用 URI 來標識每個資源的名稱;

11、http如何并發連接多個請求

因為 http 默認是工作在阻塞模型下的,默認一次只接收一個請求,處理完請求后再去接收 下一個請求,所以只能一個一個來。

所以我們希望并發響應用戶請求,需要多進程模型。web 服務器自己會生成多個子進程響應 用戶請求,也就是說,當一個用戶請求發到 Web 服務器,Web 主進程不會直接響應用戶請 求,而是生成一個子進程響應這個用戶請求,這樣當子進程和此用戶建立連接之后。Web 的主進程就會再等待另一個用戶的請求,當第二個用戶請求過來之后,再生成一個子進程響 應第二個用戶請求。以此類推。所以每一個用戶請求都由一個子進程來處理。

CDN機房:cdn機房是用來存放靜態資源的

假如一個用戶想要去請求一個數據,那么它就會去向web服務器發送請求,然后在響應給客戶端,那么要是全球上億人都去請求后端的服務器,那么這是后端額服務器就會扛不住,而且訪問到的速度也很慢,這是就會有CDN這么個東西的誕生了,cdn會存放頁面內容,當客戶端去訪問一個頁面的時候,會先訪問cdn機房,要是cdn機房沒有緩存就在回源,然后在給cdn緩存一份,呈現給客戶端,下次在訪問的時候就不需要在回源了,直接就在cdn上訪問到了,減輕了后端服務器的壓力。

相關文章教程:HTTP狀態碼詳細介紹

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享