前端基礎-HTTP協議

HTTP協議(超文本傳輸協議)定義了Web客戶端如何從Web服務器請求Web界面,以及服務器如何把Web界面傳送給客戶端。css

HTTP是不保存狀態的協議,既無狀態協議,協議自己對於請求或響應之間的通訊狀態不進行保存,所以鏈接雙方都不能知曉對方當前的身份和狀態。html

HTTP協議採用請求/響應模型。
客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。緩存

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

TCP/IP協議族:網絡

鏈路層、網絡層、傳輸層、應用層
應用層規定了向用戶提goon應用服務時通訊的協議。TCP/IP協議族內預存了各種通用的應用服務協議,FTP,DNS,HTTP。
傳輸層提供處於網絡中的兩臺計算機之間的數據傳輸所用的協議。傳輸層中有兩個性質不一樣的協議。

tcp(傳輸控制協議):tcp發送和接收數據是同步的。tcp協議在創建和斷開鏈接時有三次握手和四次揮手,所以在傳輸的過程當中穩定可靠。
udp(用戶數據包協議):udp協議是面向無鏈接的,在正式傳遞數據以前不須要創建鏈接,udp協議不保證有序且不丟失的傳遞到對端,不夠穩定。

網絡層規定了數據經過怎樣的傳輸路線達到對方計算機傳送給對方。
鏈路層用來處理鏈接網絡的硬件部分。

HTTP/1.0併發

最先的http只是使用在一些較爲簡單的網頁和網絡請求上。每次請求都打開一個新的TCP鏈接,收到響應以後理解斷開鏈接。

HTTP/1.1tcp

http/1.1引入了更多的緩存控制策略
http/1.1容許範圍請求,即在請求頭中加入Range頭部
http/1.1的請求和響應信息都必須包含host頭部,以區分同一個物理主機中的不一樣虛擬主機域名
http/1.1默認開啓持久鏈接,在一個TCP鏈接上能夠傳送多個HTTP請求和響應,減小了創建和關閉鏈接的消耗和延遲。

HTTP/2.0性能

新的二進制格式:http/1.x的解析是基於文本的,基於文本協議的解析是存在自然缺陷的,文本的表現形式有多樣性,要作到全面性考慮的場景必然不少。二進制則不一樣,只識別0和1的組合。http/2.0採用二進制格式,方便且強大。
多路複用:多路複用容許併發的發起多個請求,每一個請求及該請求的響應不須要等待其餘請求或響應,避免了線頭阻塞的問題。這樣某個請求任務耗時嚴重,不會影響到其餘鏈接斷正常執行,極大地提升傳輸性能。
頭部壓縮:http/1.x的請求和響應頭攜帶有大量信息,並且每次請求都要重複發送,http/2.0使用encoder來減小要傳輸的頭部的大小。通信雙方各自cache一份頭部fileds表,既避免了重複頭部的傳輸,又減少了須要傳輸的大小。
服務端推送:把客戶端所須要的css/js/img資源伴隨着index.html一塊兒發送到客戶端,省去了客戶端重複請求的步驟。

HTTP/3.0code

避免包阻塞:基於UDP協議的QUIC協議中,不一樣的數據流之間的數據傳輸真正實現了相互獨立互不干擾,某個流的數據包在出問題須要重傳時,並不會對其餘的數據包傳輸產生影響。
快速重啓會話:在網絡切換時,ip會改變,改變ip就會致使tcp鏈接衝從新建立。而QUIC協議使用特有的UUID來標記每一次鏈接,在網絡環境發生變化的時候,只要UUID不變,就能不須要握手,繼續傳輸數據。

WebSocket是HTML5提出的一種客戶端和服務端通信的全雙工協議,由客戶端發起請求,創建鏈接以後不只客戶端能夠主動向服務端發送請求,服務端也能夠主動向客戶端推送信息。htm

相關文章
相關標籤/搜索