一、HTTP定義
超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本標記語言(HTML)檔案從Web服務器傳送到客戶端的瀏覽器,
HTTP是一個屬于應用層的面向物件協議,由于其簡捷、快速的方式,適用于分布式超媒體資訊系統,它于1990年提出,
HTTP協議是構建再TCP/IP協議之上的,是TCP/IP協議的一個子集,
二、TCP/IP協議
TCP/IP協議族是由一個四層協議組成的系統,這四層分別是:應用層、傳輸層、網路層、資料鏈路層

應用層:一般是我們撰寫的應用程式,決定了向用戶提供的應用服務,應用層可以通過系統呼叫與傳輸層進行通信,
如FTP、DNS、HTTP等,
傳輸層:通過系統呼叫向應用層提供處于網路連接中的兩臺計算機之間的資料傳輸功能,
傳輸層由兩個性質不同的協議:TCP和UDP,TCP面向連接,UDP無連接,
網路層:用來處理在網路上流動的資料包,資料包是網路傳輸的最小資料單位,
網路層規定了通過怎樣的路徑(傳輸路線)到達對方計算機,并把資料包傳輸給對方,
鏈路層:用來處理連接網路硬體部分,包括控制作業系統、硬體設備驅動、NIC網路配接器以及光纖等物理可見部分,硬體范疇均在鏈路層作用范圍,
三、資料包封裝程序

四、HTTP資料傳輸程序
發送端發送資料,資料會從上層傳輸到下層,且每經過一層都會被打上該層的頭部資訊,
接收端接受資料,資料會從下層傳輸到上層,傳輸前會把下層頭部資訊洗掉,

五、傳輸層TCP三次握手
使用TCP協議進行通信的雙方必須先建立連接,然后才能開始傳輸資料,為了確保連接雙方可靠性,在建立連接時,TCP協議采用了三次握手策略,

三次握手主要是為了判斷客戶端和服務端的收發能力都是正常,
第一次握手服務端能判斷客戶端發送能力正常
第二次握手客戶端能判斷服務端接收能力正常和自己發送能力正常
第三次握手服務端能判斷服務端發送能力正常
TCP連接全程序:

六、HTTP協議特點
1、支持客戶/服務器模式,必須是客戶端發起的請求
2、簡單快速,發送請求時只需傳送請求方法和路徑
3、靈活,允許傳輸任意型別的資料物件,正在傳輸的型別由Content-Type來標記
4、無連接,限制每次連接只處理一個請求
5、無狀態,對于事務處理沒有記憶能力
七、URI與URL
URI:一個緊湊的字串用來標示抽象或物理資源
URI可以進一步被分為定位符、名字或兩者都是
術語“Uniform Resource Locator”(URL)是URI的子集,除了確定一個資源,還提供一種定位該資源的主要訪問機制(如網路“位置”)
URI可以分為URL,URN或同時具備locators和names特性的一個東西
URN作用就好像一個人的名字,URL就像一個人的地址
URN確定了東西的身份,URL提供了找到它的方式
八、HTTP報文結構
請求報文:

HTTP的報文頭可分四類:
1、通用報文頭

2、請求報文頭

3、回應報文頭

4、物體報文頭

HTTP1.1中一共定義了47種報文頭
回應報文:

九、HTTP請求方法
1、GET
2、POST
3、PUT,PUT和POST的區別,PUT是冪等,而POST是不冪等,
4、HEAD,類似于GET請求,只不過回傳的回應中沒有具體內容,用于獲取報文頭,
5、DELETE
6、OPTIONS,用來查詢針對請求URI指定的資源支持的方法,
7、TRACE,回顯服務器收到的請求,主要用于測驗或診斷,容易引發XST的攻擊,
8、CONNECT,開啟一個客戶端與所請求資源之間的雙向溝通的通道,它可以用來創建隧道,一般代理服務會使用,
十、狀態碼
1XX:表示訊息,代表請求已被接受,
2XX:表示成功,
2XX常見狀態碼:

3XX:表示重定向,
3XX常見狀態碼

4XX:表示請求錯誤,一般是客戶端發生錯誤,
4XX常見狀態碼

5XX:表示服務端錯誤,
5XX常見狀態碼

十一、HTTP狀態管理
Cookies 與 Session
Cookies作業原理

Session作業原理

Cookies與Session的不同
1、存放位置
2、安全性(隱私策略)
3、有效期
4、對服務器壓力
十二、HTTP協議身份認證
1、BASIC認證(基本認證)
2、DIGEST認證(摘要認證)
3、SSL客戶端認證
4、FormBase認證(基于表單認證)
十三、HTTP的長連接和短連接
長連接和短連接本質是TCP長連接和短連接,
十四、代理
代理作用:抓包、FQ、匿名訪問、過濾器,
代理是相同協議的轉發,
十五、網關
網關可以作為某種翻譯器使用,它抽象了一種能夠到達資源的方,網關是資源和應用程式之間的粘合劑,
網關是不同協議的轉發,
十六、HTTP快取
1、Cache-Control:請求/回應頭,快取控制欄位
no-store:所有內容都不快取
no-cache:快取,但是瀏覽器使用快取前,都會請求服務器判斷快取資源是否是最新
max-age=x(單位秒)請求快取后的X秒不再發起請求
s-maxage=x(單位秒)代理服務器請求源站快取后的X秒不再發起請求,只對CDN快取有效
public:客戶端和代理服務器(CDN)都可快取
private:只有客戶端可以快取
2、Expires:回應頭,代表資源過期時間,由服務器回傳提供,是http1.0的屬性,在與max-age共存的情況下,優先級要低
3、Last-Modified,回應頭,資源最新修改時間,由服務器告訴瀏覽器,
if-Modified-Since,請求頭,資源最新修改時間,由瀏覽器告訴服務器,和Last-Modified是一對,兩個進行比對,
4、Etag,回應頭,資源標識,由服務器告訴瀏覽器,
if-None-Match,請求頭,快取資源標識,由瀏覽器告訴服務器(其實是上次服務器給的Etag),和Etag是一對,兩個進行比對,
用戶操作對快取的影響:

十七、HTTP內容協商機制
指客戶端和服務端就回應內容進行交涉,然后提供給客戶端最為適合的資源,內容協商會以回應資源的語言、字符集、編碼方式等作為判斷的基準,
內容協商方式:
1、客戶端驅動,幾乎不用,因為需要兩次請求才能進行正式內容的發送
2、服務器驅動,服務器檢查客戶端的請求頭部集決定提供哪個版本的頁面
請求頭部集:
(1)Accept:告知服務器發送何種媒體型別
(2)Accept-Language:告知服務器發送何種語言
(3)Accept-Charset:告知服務器發送何種字符集
(4)Accept-Encoding:告知服務器采用何種編碼
回應頭部集:
(1)Content-Type
(2)Content-Language
(3)Content-Type
(4)Content-Encoding
3、透明協商,中間設備協商,不常用可能是未來趨勢
服務器驅動內容協商的近似匹配
如:Accept-Language:en;q=0.5,fr;q=0.0,nl;q=1.0,tr;q=0.0
q1.0的優先級最高
十八、HTTP斷點續傳和多執行緒下載
斷點續傳實作方式:
HTTP是通過在Header里兩個引數實作,客戶端發請求時對應的時Range,服務端回應時對應的是Content-Range,
Range:用戶請求頭中,指定第一個位元組位置和最后一個位元組位置,
一般格式:Range:(unit=first byte pos)-(last byte pos)
Content-Range:用于回應頭中,在發出帶Range的請求后,服務器在Content-Range頭部回傳當前接受的范圍和檔案總大小,
一般格式:Content-Range:bytes(unit first byte pos)-[last byte pos]/[entity length]
使用斷點續傳的狀態碼是206 Partial Content
多執行緒下載就是利用斷點續傳進行主動的拆包下載,
十九、HTTPS
內容加密:非對稱密鑰交換、對稱內容加密
身份認證:數字證書
二十、HTTP協議的瓶頸
一條連接上只能發送一次請i去
請求只能從客戶端開始,客戶端不可以接受除回應以外的指令
請求\回應頭部不經壓縮就發送
每次相互發送相同的頭部造成的浪費
非強制壓縮發送
二十一、WebSocket

二十二、HTTP2.0
優勢點:
1、性能增強核心:二進制分幀
2、首部壓縮
3、多路復用
4、并行雙向位元組流的請求和回應,即可以無序傳輸
5、服務器推送
仍存問題
1、隊頭阻塞
2、建立連接的握手延遲大
二十三、HTTP3.0
基于谷歌提出的QUIC協議進行的改造,
優勢:
1、0 RTT

2、沒有隊頭阻塞的多路復用


3、前包糾錯功能
放棄安逸,持續努力——成長
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419932.html
標籤:其他
