HTTP協議詳解

1.HTTP協議簡介

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

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版本。css

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

靜態頁面:
常見的後綴名是:
文本:html、htm、txt、css、doc;
圖片:gif、jpg、png;
視頻:mp四、flv;html

請求過程,如圖:
HTTP協議詳解web

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上訪問到了,減輕了後端服務器的壓力。

相關文章
相關標籤/搜索