講講http和瀏覽器那些事

2021-09-12 02:47:57 字數 3316 閱讀 4752

1. http和https

https的ssl加密是在傳輸層實現的。

(1)http和https的基本概念

http: 超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,是乙個客戶端和伺服器端請求和應答的標準(tcp),用於從www伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。

https: 是以安全為目標的http通道,簡單講是http的安全版,即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。

(2)http和https的區別?

http傳輸的資料都是未加密的,也就是明文的,網景公司設定了ssl協議來對http協議傳輸的資料進行加密處理,簡單來說https協議是由http和ssl協議構建的可進行加密傳輸和身份認證的網路協議,比http協議的安全性更高。

主要的區別如下:

https協議需要ca證書,費用較高。

http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

使用不同的鏈結方式,埠也不同,一般而言,http協議的埠為80,https的埠為443

http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

(3)https協議的工作原理

客戶端在使用https方式與web伺服器通訊時有以下幾個步驟,如圖所示。

客戶使用https url訪問伺服器,則要求web 伺服器建立ssl鏈結。

web伺服器接收到客戶端的請求之後,會將**的證書(證書中包含了公鑰),返回或者說傳輸給客戶端。

客戶端和web伺服器端開始協商ssl鏈結的安全等級,也就是加密等級。

客戶端瀏覽器通過雙方協商一致的安全等級,建立會話金鑰,然後通過**的公鑰來加密會話金鑰,並傳送給**。

web伺服器通過自己的私鑰解密出會話金鑰。

web伺服器通過會話金鑰加密與客戶端之間的通訊。

(4)https協議的優點

使用https協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。

https是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

谷歌曾在2023年8月份調整搜尋引擎演算法,並稱「比起同等http**,採用https加密的**在搜尋結果中的排名將會更高」。

(5)https協議的缺點

https握手階段比較費時,會使頁面載入時間延長50%,增加10%~20%的耗電。

https快取不如http高效,會增加資料開銷。

ssl證書也需要錢,功能越強大的證書費用越高。

ssl證書需要繫結ip,不能再同乙個ip上繫結多個網域名稱,ipv4資源支援不了這種消耗。

2. tcp三次握手,一句話概括

客戶端和服務端都需要直到各自可收發,因此需要三次握手。

簡化三次握手:

3. tcp和udp的區別

(1)tcp是面向連線的,udp是無連線的即傳送資料前不需要先建立鏈結。

(2)tcp提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達;udp盡最大努力交付,即不保證可靠交付。 並且因為tcp可靠,面向連線,不會丟失資料因此適合大資料量的交換。

(4)tcp只能是1對1的,udp支援1對1,1對多。

(5)tcp的首部較大為20位元組,而udp只有8位元組。

(6)tcp是面向連線的可靠性傳輸,而udp是不可靠的。

4. websocket的實現和應用

(1)什麼是websocket?

websocket是html5中的協議,支援持久連續,http協議不支援永續性連線。http1.0和http1.1都不支援永續性的鏈結,http1.1中的keep-alive,將多個http請求合併為1個

(2)websocket是什麼樣的協議,具體有什麼優點?

http的生命週期通過request來界定,也就是request乙個response,那麼在http1.0協議中,這次http請求就結束了。在http1.1中進行了改進,是的有乙個connection:keep-alive,也就是說,在乙個http連線中,可以傳送多個request,接收多個response。但是必須記住,在http中乙個request只能對應有乙個response,而且這個response是被動的,不能主動發起。

websocket是基於http協議的,或者說借用了http協議來完成一部分握手,在握手階段與http是相同的。我們來看乙個websocket握手協議的實現,基本是2個屬性,upgrade,connection。

基本請求如下:

多了下面2個屬性:

upgrade:websocket

connection:upgrade

告訴伺服器傳送的是websocket

首先補充一下,http和https的區別,相比於http,https是基於ssl加密的http協議

簡要概括:http2.0是基於2023年發布的http1.0之後的首次更新。

提公升訪問速度(可以對於,請求資源所需時間更少,訪問速度更快,相比http1.0)

允許多路復用:多路復用允許同時通過單一的http/2連線傳送多重請求-響應資訊。改善了:在http1.1中,瀏覽器客戶端在同一時間,針對同一網域名稱下的請求有一定數量限制(連線數量),超過限制會被阻塞。

二進位制分幀:http2.0會將所有的傳輸資訊分割為更小的資訊或者幀,並對他們進行二進位制編碼

首部壓縮

伺服器端推送

相容 瀏覽器相容那些事

這段時間,經常會接到很多需要處理瀏覽器相容問題的工作。開個玩笑的說,如果看到乙個人的電腦裝了很多瀏覽器,那麼勇敢地懷疑他的崗位是不是web前端開發吧。有一段時間,我的電腦同時安裝了chrome ff 360 ie 搜狗和yy瀏覽器,另外還有ietester用作除錯不同版本的ie。瀏覽器相容一事是前端...

手機瀏覽器與我的那些事(三)

最近一直在學習,cordova與vue的結合 cordova與ios的結合 原生路由框架 axios的封裝 好多好多 分享下我最開始的一套 感受 對領導莫大的信任感覺到熱 lei 淚 liu 盈 man 眶 mian 只有2周,當然2週是開發時間,自動算上周末14天 動手前的想法 1.1介面的切換用...

手機瀏覽器與我的那些事(五)

1.建立專案 cordova create testcordovaproject com.catchzeng.testcordova testcordova 引數說明 2.新增平台 cd testcordovaproject sudo cordova platform add ios新增成功後可在專...