面經總結 協議相關

2021-09-27 02:54:51 字數 1925 閱讀 4002

http和https的區別;

http1.0和http2.0的區別

1、http和https的區別

https的誕生是為了解決http的缺點。

http的缺點:

通訊使用明文(不加密),內容可能會被竊聽

不驗證通訊方的身份,因此有可能遭遇偽裝

無法證明報文的完整性,所以有可能已遭篡改

為了解決 http 協議的以上缺點,由網景(netscape)公司設計了 ssl 協議。所謂的 https 其實是「http over ssl」或「http over tls」,它是 http 與 ssl/tsl 的結合使用而已。為了資料傳輸的安全,ssl依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。

「加密」的過程,就是把「明文」變成「密文」的過程;反之,「解密」的過程,就是把「密文」變為「明文」。在這兩個過程中,都需要乙個關鍵的東西——叫做「金鑰」——來參與數**算。

對稱加密:

非對稱加密:

不過,竊聽者可以偽造伺服器的公鑰與客戶端通訊,客戶端以為是跟伺服器通訊,其實是與竊聽者在通訊,後果可想而知。

ca 證書是為了解決上面非對稱加密被劫持的情況,伺服器申請 ca 證書時將伺服器的「公鑰」提供給 ca,ca 使用自己的「私鑰」將「伺服器的公鑰」加密後(即:ca證書)返回給伺服器,伺服器再將「ca 證書」提供給客戶端。一般系統或者瀏覽器會內建 ca 的根證書。

客戶端獲取到「ca 證書」會進行本地驗證,即使用本地系統或者瀏覽器中的公鑰進行解密,每個「ca 證書」都會有乙個證書編號可用於解密後進行比對。

2、 http1.0和http2.0的區別

1、 http2.0的基本單位為二進位制幀

http1.0利用文字與伺服器互動,而http2的基本協議單位為二進位制幀流,每幀都有自己的型別旨在實現不同功能,然而http1將繼續存在,因此,http2的二進位制幀流需對映到http1上以實現向下相容。

2、 http2.0的多路復用

瀏覽器對同一網域名稱下的併發連線數量有限制,一般為6個,http1中的keep-alive用於長連線而不必重新建立連線,然而keep-alive必須等本次請求徹底完成後才能傳送下乙個請求,而http2的請求與響應以二進位制幀的形式交錯進行,只需建立一次連線,即一輪三次握手,實現多路復用。

3、 http2.0壓縮訊息頭

http1的訊息頭很大冗餘,而http2.0利用hpack對訊息頭進行壓縮傳輸,假設將常用的請求get/index.html用1表示,post/index.html用2表示,即是將訊息頭中的不同的部分分別用不用的索引進行表示,且會用哈夫曼編碼壓縮字串,最後封裝成frame。

4、 http2.0服務端推送

http2.0中伺服器會主動將資源推送給客戶端,例如把js和css檔案主動推送給客戶端而不用客戶端解析html後請求再響應。

5、 http2.0只適用於https的場景

https是在http和tcp之間增加了一層ssl,即secure socket layer,增加了資料安全傳輸及客戶端和伺服器端的身份驗證,而http2.0只適用於https的場景。

總結http1.0的缺陷

每個請求都需單獨建立連線(keep-alive能解決部分問題單不能交叉推送)

每個請求和響應都需要完整的頭資訊

資料未加密

http2.0的優勢

多路復用

壓縮頭資訊

請求劃分優先順序

支援伺服器端主動推送

hldc面經總結

1.int32 a 1 設定bit3 2 清除bit3 3 獲取a的高八位的值和低八位的值 4 將資料存入高八位 解答 define bit3 0x1 3 static int a void set bit3 void void clear bit3 void include include cha...

網易面經總結

1.執行緒池的threadpoolexecutor的主要引數有哪些,詳細介紹了一下任務佇列 2.執行緒建立的幾種方式以及區別 3.hashmap的底層實現,以及1.7和1.8之間的區別 4.執行緒安全的容器有哪些 5.concurrenthashmap的底層實現原理,以及1.8是如何操作的 6.異常...

面經總結(初戰)

今天進行了一場面試,崗位是位元組跳動後端開發,發現對跨考真難,劍指才刷了三分之一,動態規劃題目不會做,害,最終結果沒通過,也是第一次面試,自己各個方面都存在問題。且先當一次查漏補缺吧 計算機網路相關 tcp如何確保資訊收到?當時沒記起來,應該是超時重發,發過一次資料報後,待伺服器端確認無誤,傳送ac...