本文力求簡(jiǎn)單講清每個(gè)知識(shí)點(diǎn),希望大家看完能有所收獲 一、HTTP協(xié)議的今生來(lái)世最近在看博客的時(shí)候,發(fā)現(xiàn)有的面試題已經(jīng)考HTTP/2了,于是我就順著去了解一下。 到現(xiàn)在為止,HTTP協(xié)議已經(jīng)有三個(gè)版本了:
下面就簡(jiǎn)單聊聊他們?nèi)叩膮^(qū)別,以及整理一些必要的額外知識(shí)點(diǎn)。 1.1 HTTP版本之間的區(qū)別1.1.1 HTTP1.0和HTTP1.1區(qū)別HTTP1.0和HTTP1.1最主要的區(qū)別就是:
在HTTP1.0默認(rèn)是短連接: 簡(jiǎn)單來(lái)說(shuō)就是:每次與服務(wù)器交互,都需要新開(kāi)一個(gè)連接! 試想一下:請(qǐng)求一張圖片,新開(kāi)一個(gè)連接,請(qǐng)求一個(gè)CSS文件,新開(kāi)一個(gè)連接,請(qǐng)求一個(gè)JS文件,新開(kāi)一個(gè)連接。HTTP協(xié)議是基于TCP的,TCP每次都要經(jīng)過(guò)三次握手,四次揮手,慢啟動(dòng)...這都需要去消耗我們非常多的資源的! 在HTTP1.1中默認(rèn)就使用持久化連接來(lái)解決:建立一次連接,多次請(qǐng)求均由這個(gè)連接完成!(如果阻塞了,還是會(huì)開(kāi)新的TCP連接的) 相對(duì)于持久化連接還有另外比較重要的改動(dòng):
參考資料:
1.1.2 HTTP2基礎(chǔ)在說(shuō)HTTP2之前,不如先直觀(guān)比較一下HTTP2和HTTP1.1的區(qū)別:
上面也已經(jīng)說(shuō)了,HTTP 1.1提出了管線(xiàn)化(pipelining)理論,但是僅僅是限于理論的階段上,這個(gè)功能默認(rèn)還是關(guān)閉了的。 管線(xiàn)化(pipelining)和非管線(xiàn)化的區(qū)別: HTTP Pipelining其實(shí)是把多個(gè)HTTP請(qǐng)求放到一個(gè)TCP連接中一一發(fā)送,而在發(fā)送過(guò)程中不需要等待服務(wù)器對(duì)前一個(gè)請(qǐng)求的響應(yīng);只不過(guò),客戶(hù)端還是要按照發(fā)送請(qǐng)求的順序來(lái)接收響應(yīng)! 就像在超市收銀臺(tái)或者銀行柜臺(tái)排隊(duì)時(shí)一樣,你并不知道前面的顧客是干脆利索的還是會(huì)跟收銀員/柜員磨蹭到世界末日(不管怎么說(shuō),服務(wù)器(即收銀員/柜員)是要按照順序處理請(qǐng)求的,如果前一個(gè)請(qǐng)求非常耗時(shí)(顧客磨蹭),那么后續(xù)請(qǐng)求都會(huì)受到影響。
1.1.3 HTTP1.1和HTTP2區(qū)別HTTP2與HTTP1.1最重要的區(qū)別就是解決了線(xiàn)頭阻塞的問(wèn)題!其中最重要的改動(dòng)是:多路復(fù)用 (Multiplexing)
使用了HTTP2可能是這樣子的: HTTP2所有性能增強(qiáng)的核心在于新的二進(jìn)制分幀層(不再以文本格式來(lái)傳輸了),它定義了如何封裝http消息并在客戶(hù)端與服務(wù)器之間傳輸。 看上去協(xié)議的格式和HTTP1.x完全不同了,實(shí)際上HTTP2并沒(méi)有改變HTTP1.x的語(yǔ)義,只是把原來(lái)HTTP1.x的header和body部分用frame重新封裝了一層而已 HTTP2連接上傳輸?shù)拿總€(gè)幀都關(guān)聯(lián)到一個(gè)“流”。流是一個(gè)獨(dú)立的,雙向的幀序列可以通過(guò)一個(gè)HTTP2的連接在服務(wù)端與客戶(hù)端之間不斷的交換數(shù)據(jù)。 實(shí)際上運(yùn)輸時(shí): HTTP2還有一些比較重要的改動(dòng):
1.2 HTTP2總結(jié)HTTP1.1新改動(dòng):
HTTP2新改動(dòng):
參考資料: 因鏈接較多,請(qǐng)?zhí)D(zhuǎn)至原文查看 1.3 HTTPS再次回顧之前在面試的時(shí)候被問(wèn)到了HTTPS,SSL這樣的知識(shí)點(diǎn),也沒(méi)答上來(lái),這里也簡(jiǎn)單整理一下。 首先還是來(lái)解釋一下基礎(chǔ)的東東:
3y的通訊之路:
對(duì)于數(shù)字簽名和CA認(rèn)證還是不太了解參考一下
回到我們的HTTPS,HTTPS其實(shí)就是在HTTP協(xié)議下多加了一層SSL協(xié)議(ps:現(xiàn)在都用TLS協(xié)議了) HTTPS采用的是混合方式加密: 過(guò)程是這樣子的:
所以相比HTTP,HTTPS 傳輸更加安全
參考資料: 因鏈接較多,請(qǐng)?zhí)D(zhuǎn)至原文查看 二、總結(jié)我只是在學(xué)習(xí)的過(guò)程中,把自己遇到的問(wèn)題寫(xiě)出來(lái),整理出來(lái),希望可以對(duì)大家有幫助。如果文章有錯(cuò)的地方,希望大家可以在評(píng)論區(qū)指正,一起學(xué)習(xí)交流~ 參考資料:
|
|
來(lái)自: windxn > 《Java技術(shù)指南》