精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試 HTTP ,99% 的面試官都愛問這些問題

網絡 網絡管理
HTTP 是一種 超文本傳輸協議(Hypertext Transfer Protocol),HTTP 是一個在計算機世界里專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規范。

[[322727]]

HTTP 和 HTTPS 的區別

HTTP 是一種 超文本傳輸協議(Hypertext Transfer Protocol),HTTP 是一個在計算機世界里專門在兩點之間傳輸文字、圖片、音頻、視頻等超文本數據的約定和規范。

 

HTTP 主要內容分為三部分,超文本(Hypertext)、傳輸(Transfer)、協議(Protocol)。

  • 超文本就是不單單只是本文,它還可以傳輸圖片、音頻、視頻,甚至點擊文字或圖片能夠進行超鏈接的跳轉。
  • 上面這些概念可以統稱為數據,傳輸就是數據需要經過一系列的物理介質從一個端系統傳送到另外一個端系統的過程。通常我們把傳輸數據包的一方稱為請求方,把接到二進制數據包的一方稱為應答方。
  • 而協議指的就是是網絡中(包括互聯網)傳遞、管理信息的一些規范。如同人與人之間相互交流是需要遵循一定的規矩一樣,計算機之間的相互通信需要共同遵守一定的規則,這些規則就稱為協議,只不過是網絡協議。

說到 HTTP,不得不提的就是 TCP/IP 網絡模型,一般是五層模型。如下圖所示:

但是也可以分為四層,就是把鏈路層和物理層都表示為網絡接口層:

還有一種就是 OSI 七層網絡模型,它就是在五層協議之上加了表示層和會話層:

而 HTTPS 的全稱是 Hypertext Transfer Protocol Secure,從名稱我們可以看出 HTTPS 要比 HTTPS 多了 secure 安全性這個概念,實際上, HTTPS 并不是一個新的應用層協議,它其實就是 HTTP + TLS/SSL 協議組合而成,而安全性的保證正是 TLS/SSL 所做的工作。

也就是說,HTTPS 就是身披了一層 SSL 的 HTTP。

那么,HTTP 和 HTTPS 的主要區別是什么呢?

  • 最簡單的,HTTP 在地址欄上的協議是以 http:// 開頭,而 HTTPS 在地址欄上的協議是以 https:// 開頭
    1. http://www.cxuanblog.com/ 
    2. https://www.cxuanblog.com/ 
  • HTTP 是未經安全加密的協議,它的傳輸過程容易被攻擊者監聽、數據容易被竊取、發送方和接收方容易被偽造;而 HTTPS 是安全的協議,它通過 密鑰交換算法 - 簽名算法 - 對稱加密算法 - 摘要算法 能夠解決上面這些問題。
  • HTTP 的默認端口是 80,而 HTTPS 的默認端口是 443。

HTTP Get 和 Post 區別

HTTP 中包括許多方法,Get 和 Post 是 HTTP 中最常用的兩個方法,基本上使用 HTTP 方法中有 99% 都是在使用 Get 方法和 Post 方法,所以有必要我們對這兩個方法有更加深刻的認識。

get 方法一般用于請求,比如你在瀏覽器地址欄輸入 www.cxuanblog.com 其實就是發送了一個 get 請求,它的主要特征是請求服務器返回資源,而 post 方法一般用于

  • 表單的提交,相當于是把信息提交給服務器,等待服務器作出響應,get 相當于一個是 pull/拉的操作,而 post 相當于是一個 push/推的操作。
  • get 方法是不安全的,因為你在發送請求的過程中,你的請求參數會拼在 URL 后面,從而導致容易被攻擊者竊取,對你的信息造成破壞和偽造;
    1. /test/demo_form.asp?name1=value1&name2=value2 

而 post 方法是把參數放在請求體 body 中的,這對用戶來說不可見。

  1. POST /test/demo_form.asp HTTP/1.1 
  2. Host: w3schools.com 
  3. name1=value1&name2=value2 
  • get 請求的 URL 有長度限制,而 post 請求會把參數和值放在消息體中,對數據長度沒有要求。
  • get 請求會被瀏覽器主動 cache,而 post 不會,除非手動設置。
  • get 請求在瀏覽器反復的 回退/前進 操作是無害的,而 post 操作會再次提交表單請求。
  • get 請求在發送過程中會產生一個 TCP 數據包;post 在發送過程中會產生兩個 TCP 數據包。對于 get 方式的請求,瀏覽器會把 http header 和 data 一并發送出去,服務器響應 200(返回數據);而對于 post,瀏覽器先發送 header,服務器響應 100 continue,瀏覽器再發送 data,服務器響應 200 ok(返回數據)。

什么是無狀態協議,HTTP 是無狀態協議嗎,怎么解決

無狀態協議(Stateless Protocol) 就是指瀏覽器對于事務的處理沒有記憶能力。舉個例子來說就是比如客戶請求獲得網頁之后關閉瀏覽器,然后再次啟動瀏覽器,登錄該網站,但是服務器并不知道客戶關閉了一次瀏覽器。

HTTP 就是一種無狀態的協議,他對用戶的操作沒有記憶能力。可能大多數用戶不相信,他可能覺得每次輸入用戶名和密碼登陸一個網站后,下次登陸就不再重新輸入用戶名和密碼了。這其實不是 HTTP 做的事情,起作用的是一個叫做 小甜餅(Cookie) 的機制。它能夠讓瀏覽器具有記憶能力。

如果你的瀏覽器允許 cookie 的話,查看方式 chrome://settings/content/cookies

也就說明你的記憶芯片通電了…… 當你向服務端發送請求時,服務端會給你發送一個認證信息,服務器第一次接收到請求時,開辟了一塊 Session 空間(創建了Session對象),同時生成一個 sessionId ,并通過響應頭的 Set-Cookie:JSESSIONID=XXXXXXX 命令,向客戶端發送要求設置 Cookie 的響應;客戶端收到響應后,在本機客戶端設置了一個 JSESSIONID=XXXXXXX 的 Cookie 信息,該 Cookie 的過期時間為瀏覽器會話結束;

接下來客戶端每次向同一個網站發送請求時,請求頭都會帶上該 Cookie信息(包含 sessionId ), 然后,服務器通過讀取請求頭中的 Cookie 信息,獲取名稱為 JSESSIONID 的值,得到此次請求的 sessionId。這樣,你的瀏覽器才具有了記憶能力。

還有一種方式是使用 JWT 機制,它也是能夠讓你的瀏覽器具有記憶能力的一種機制。與 Cookie 不同,JWT 是保存在客戶端的信息,它廣泛的應用于單點登錄的情況。JWT 具有兩個特點

  • JWT 的 Cookie 信息存儲在客戶端,而不是服務端內存中。也就是說,JWT 直接本地進行驗證就可以,驗證完畢后,這個 Token 就會在 Session 中隨請求一起發送到服務器,通過這種方式,可以節省服務器資源,并且 token 可以進行多次驗證。
  • JWT 支持跨域認證,Cookies 只能用在單個節點的域或者它的子域中有效。如果它們嘗試通過第三個節點訪問,就會被禁止。使用 JWT 可以解決這個問題,使用 JWT 能夠通過多個節點進行用戶認證,也就是我們常說的跨域認證。

UDP 和 TCP 的區別

TCP 和 UDP 都位于計算機網絡模型中的運輸層,它們負責傳輸應用層產生的數據。下面我們就來聊一聊 TCP 和 UDP 分別的特征和他們的區別

1. UDP 是什么

UDP 的全稱是 User Datagram Protocol,用戶數據報協議。它不需要所謂的握手操作,從而加快了通信速度,允許網絡上的其他主機在接收方同意通信之前進行數據傳輸。

數據報是與分組交換網絡關聯的傳輸單元。

UDP 的特點主要有:

  • UDP 能夠支持容忍數據包丟失的帶寬密集型應用程序
  • UDP 具有低延遲的特點
  • UDP 能夠發送大量的數據包
  • UDP 能夠允許 DNS 查找,DNS 是建立在 UDP 之上的應用層協議。

2. TCP 是什么

TCP 的全稱是Transmission Control Protocol ,傳輸控制協議。它能夠幫助你確定計算機連接到 Internet 以及它們之間的數據傳輸。通過三次握手來建立 TCP 連接,三次握手就是用來啟動和確認 TCP 連接的過程。一旦連接建立后,就可以發送數據了,當數據傳輸完成后,會通過關閉虛擬電路來斷開連接。

TCP 的主要特點有:

  • TCP 能夠確保連接的建立和數據包的發送
  • TCP 支持錯誤重傳機制
  • TCP 支持擁塞控制,能夠在網絡擁堵的情況下延遲發送
  • TCP 能夠提供錯誤校驗和,甄別有害的數據包。

3. TCP 和 UDP 的不同

下面為你羅列了一些 TCP 和 UDP 的不同點,方便理解,方便記憶。

TCP 三次握手和四次揮手

TCP 三次握手和四次揮手也是面試題的熱門考點,它們分別對應 TCP 的連接和釋放過程。下面就來簡單認識一下這兩個過程。

1. TCP 三次握手

在了解具體的流程前,我們需要先認識幾個概念

  • SYN:它的全稱是 Synchronize Sequence Numbers,同步序列編號。是 TCP/IP 建立連接時使用的握手信號。在客戶機和服務器之間建立 TCP 連接時,首先會發送的一個信號。客戶端在接受到 SYN 消息時,就會在自己的段內生成一個隨機值 X。
  • SYN-ACK:服務器收到 SYN 后,打開客戶端連接,發送一個 SYN-ACK 作為答復。確認號設置為比接收到的序列號多一個,即 X + 1,服務器為數據包選擇的序列號是另一個隨機數 Y。
  • ACK:Acknowledge character, 確認字符,表示發來的數據已確認接收無誤。最后,客戶端將 ACK 發送給服務器。序列號被設置為所接收的確認值即 Y + 1。

如果用現實生活來舉例的話就是:小明 - 客戶端 小紅 - 服務端

  • 小明給小紅打電話,接通了后,小明說喂,能聽到嗎,這就相當于是連接建立。
  • 小紅給小明回應,能聽到,你能聽到我說的話嗎,這就相當于是請求響應。
  • 小明聽到小紅的回應后,好的,這相當于是連接確認。在這之后小明和小紅就可以通話/交換信息了。

2. TCP 四次揮手

在連接終止階段使用四次揮手,連接的每一端都會獨立的終止。下面我們來描述一下這個過程。

  • 首先,客戶端應用程序決定要終止連接(這里服務端也可以選擇斷開連接)。這會使客戶端將 FIN 發送到服務器,并進入 FIN_WAIT_1 狀態。當客戶端處于 FIN_WAIT_1 狀態時,它會等待來自服務器的 ACK 響應。
  • 然后第二步,當服務器收到 FIN 消息時,服務器會立刻向客戶端發送 ACK 確認消息。
  • 當客戶端收到服務器發送的 ACK 響應后,客戶端就進入 FIN_WAIT_2 狀態,然后等待來自服務器的 FIN 消息
  • 服務器發送 ACK 確認消息后,一段時間(可以進行關閉后)會發送 FIN 消息給客戶端,告知客戶端可以進行關閉。
  • 當客戶端收到從服務端發送的 FIN 消息時,客戶端就會由 FIN_WAIT_2 狀態變為 TIME_WAIT 狀態。處于 TIME_WAIT 狀態的客戶端允許重新發送 ACK 到服務器為了防止信息丟失。客戶端在 TIME_WAIT 狀態下花費的時間取決于它的實現,在等待一段時間后,連接關閉,客戶端上所有的資源(包括端口號和緩沖區數據)都被釋放。

還是可以用上面那個通話的例子來進行描述:

  • 小明對小紅說,我所有的東西都說完了,我要掛電話了。
  • 小紅說,收到,我這邊還有一些東西沒說。
  • 經過若干秒后,小紅也說完了,小紅說,我說完了,現在可以掛斷了
  • 小明收到消息后,又等了若干時間后,掛斷了電話。

簡述 HTTP1.0/1.1/2.0 的區別

1. HTTP 1.0

HTTP 1.0 是在 1996 年引入的,從那時開始,它的普及率就達到了驚人的效果。

  • HTTP 1.0 僅僅提供了最基本的認證,這時候用戶名和密碼還未經加密,因此很容易收到窺探。
  • HTTP 1.0 被設計用來使用短鏈接,即每次發送數據都會經過 TCP 的三次握手和四次揮手,效率比較低。
  • HTTP 1.0 只使用 header 中的 If-Modified-Since 和 Expires 作為緩存失效的標準。
  • HTTP 1.0 不支持斷點續傳,也就是說,每次都會傳送全部的頁面和數據。
  • HTTP 1.0 認為每臺計算機只能綁定一個 IP,所以請求消息中的 URL 并沒有傳遞主機名(hostname)。

2. HTTP 1.1

HTTP 1.1 是 HTTP 1.0 開發三年后出現的,也就是 1999 年,它做出了以下方面的變化:

  • HTTP 1.1 使用了摘要算法來進行身份驗證
  • HTTP 1.1 默認使用長連接,長連接就是只需一次建立就可以傳輸多次數據,傳輸完成后,只需要一次切斷連接即可。長連接的連接時長可以通過請求頭中的 keep-alive 來設置
  • HTTP 1.1 中新增加了 E-tag,If-Unmodified-Since, If-Match, If-None-Match 等緩存控制標頭來控制緩存失效。
  • HTTP 1.1 支持斷點續傳,通過使用請求頭中的 Range 來實現。
  • HTTP 1.1 使用了虛擬網絡,在一臺物理服務器上可以存在多個虛擬主機(Multi-homed Web Servers),并且它們共享一個IP地址。

3. HTTP 2.0

HTTP 2.0 是 2015 年開發出來的標準,它主要做的改變如下

  • 頭部壓縮,由于 HTTP 1.1 經常會出現 User-Agent、Cookie、Accept、Server、Range 等字段可能會占用幾百甚至幾千字節,而 Body 卻經常只有幾十字節,所以導致頭部偏重。HTTP 2.0 使用 HPACK 算法進行壓縮。
  • 二進制格式,HTTP 2.0 使用了更加靠近 TCP/IP 的二進制格式,而拋棄了 ASCII 碼,提升了解析效率
  • 強化安全,由于安全已經成為重中之重,所以 HTTP2.0 一般都跑在 HTTPS 上。
  • 多路復用,即每一個請求都是是用作連接共享。一個請求對應一個id,這樣一個連接上可以有多個請求。

請你說一下 HTTP 常見的請求頭

這個問題比較開放,因為 HTTP 請求頭有很多,這里只簡單舉出幾個例子。

HTTP 標頭會分為四種,分別是 通用標頭、實體標頭、請求標頭、響應標頭。分別介紹一下

1. 通用標頭

通用標頭主要有三個,分別是 Date、Cache-Control 和 Connection

(1) Date

Date 是一個通用標頭,它可以出現在請求標頭和響應標頭中,它的基本表示如下

  1. Date: Wed, 21 Oct 2015 07:28:00 GMT  

表示的是格林威治標準時間,這個時間要比北京時間慢八個小時

(2) Cache-Control

Cache-Control 是一個通用標頭,他可以出現在請求標頭和響應標頭中,Cache-Control 的種類比較多,雖然說這是一個通用標頭,但是有一些特性是請求標頭具有的,有一些是響應標頭才有的。主要大類有 可緩存性、閾值性、 重新驗證并重新加載 和其他特性

(3) Connection

Connection 決定當前事務(一次三次握手和四次揮手)完成后,是否會關閉網絡連接。Connection 有兩種,一種是持久性連接,即一次事務完成后不關閉網絡連接

  1. Connection: keep-alive 

另一種是非持久性連接,即一次事務完成后關閉網絡連接

  1. Connection: close 

HTTP1.1 其他通用標頭如下:

2. 實體標頭

實體標頭是描述消息正文內容的 HTTP 標頭。實體標頭用于 HTTP 請求和響應中。頭部Content-Length、 Content-Language、 Content-Encoding 是實體頭。

  • Content-Length 實體報頭指示實體主體的大小,以字節為單位,發送到接收方。
  • Content-Language 實體報頭描述了客戶端或者服務端能夠接受的語言。
  • Content-Encoding 這又是一個比較麻煩的屬性,這個實體報頭用來壓縮媒體類型。Content-Encoding 指示對實體應用了何種編碼。

常見的內容編碼有這幾種: gzip、compress、deflate、identity ,這個屬性可以應用在請求報文和響應報文中

  1. Accept-Encoding: gzip, deflate //請求頭 
  2. Content-Encoding: gzip  //響應頭 

下面是一些實體標頭字段

3. 請求標頭Host

(1) Host

請求頭指明了服務器的域名(對于虛擬主機來說),以及(可選的)服務器監聽的 TCP 端口號。如果沒有給定端口號,會自動使用被請求服務的默認端口(比如請求一個 HTTP 的 URL 會自動使用 80 作為端口)。

  1. Host: developer.mozilla.org 

上面的 Accpet、 Accept-Language、Accept-Encoding 都是屬于內容協商的請求標頭。

(2) Referer

HTTP Referer 屬性是請求標頭的一部分,當瀏覽器向 web 服務器發送請求的時候,一般會帶上 Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用于處理。

  1. Referer: https://developer.mozilla.org/testpage.html 

(3) If-Modified-Since

If-Modified-Since 通常會與 If-None-Match 搭配使用,If-Modified-Since 用于確認代理或客戶端擁有的本地資源的有效性。獲取資源的更新日期時間,可通過確認首部字段 Last-Modified 來確定。

大白話說就是如果在 Last-Modified 之后更新了服務器資源,那么服務器會響應 200,如果在 Last-Modified 之后沒有更新過資源,則返回 304。

  1. If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT 

(4) If-None-Match

If-None-Match HTTP 請求標頭使請求成為條件請求。對于 GET 和 HEAD 方法,僅當服務器沒有與給定資源匹配的 ETag 時,服務器才會以 200 狀態發送回請求的資源。對于其他方法,僅當最終現有資源的ETag與列出的任何值都不匹配時,才會處理請求。

  1. If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a" 

(5) Accept

接受請求 HTTP 標頭會通告客戶端其能夠理解的 MIME 類型

(6) Accept-Charset

accept-charset 屬性規定服務器處理表單數據所接受的字符集。

常用的字符集有:UTF-8 - Unicode 字符編碼 ;ISO-8859-1 - 拉丁字母表的字符編碼

(7) Accept-Language

首部字段 Accept-Language 用來告知服務器用戶代理能夠處理的自然語言集(指中文或英文等),以及自然語言集的相對優先級。可一次指定多種自然語言集。

請求標頭我們大概就介紹這幾種,后面會有一篇文章詳細深挖所有的響應頭的,下面是一個響應頭的匯總,基于 HTTP 1.1

4. 響應標頭

(1) Access-Control-Allow-Origin

一個返回的 HTTP 標頭可能會具有 Access-Control-Allow-Origin ,Access-Control-Allow-Origin 指定一個來源,它告訴瀏覽器允許該來源進行資源訪問。

(2) Keep-Alive

Keep-Alive 表示的是 Connection 非持續連接的存活時間,可以進行指定。

(3) Server

服務器標頭包含有關原始服務器用來處理請求的軟件的信息。

應該避免使用過于冗長和詳細的 Server 值,因為它們可能會泄露內部實施細節,這可能會使攻擊者容易地發現并利用已知的安全漏洞。例如下面這種寫法

  1. Server: Apache/2.4.1 (Unix) 

(4) Set-Cookie

Set-Cookie 用于服務器向客戶端發送 sessionID。

(5) Transfer-Encoding

首部字段 Transfer-Encoding 規定了傳輸報文主體時采用的編碼方式。

HTTP /1.1 的傳輸編碼方式僅對分塊傳輸編碼有效。

(6) X-Frame-Options

HTTP 首部字段是可以自行擴展的。所以在 Web 服務器和瀏覽器的應用上,會出現各種非標準的首部字段。

首部字段 X-Frame-Options 屬于 HTTP 響應首部,用于控制網站內容在其他 Web 網站的 Frame 標簽內的顯示問題。其主要目的是為了防止點擊劫持(clickjacking)攻擊。

下面是一個響應頭的匯總,基于 HTTP 1.1

地址欄輸入 URL 發生了什么

這道題也是一道經常會考的面試題。那么下面我們就來探討一下從你輸入 URL 后到響應,都經歷了哪些過程。

首先,你需要在瀏覽器中的 URL 地址上,輸入你想訪問的地址,如下:

你應該訪問不到的,對不對~

然后,瀏覽器會根據你輸入的 URL 地址,去查找域名是否被本地 DNS 緩存,不同瀏覽器對 DNS 的設置不同,如果瀏覽器緩存了你想訪問的 URL 地址,那就直接返回 ip。如果沒有緩存你的 URL 地址,瀏覽器就會發起系統調用來查詢本機 hosts 文件是否有配置 ip 地址,如果找到,直接返回。如果找不到,就向網絡中發起一個 DNS 查詢。

首先來看一下 DNS 是啥,互聯網中識別主機的方式有兩種,通過主機名和 IP 地址。我們人喜歡用名字的方式進行記憶,但是通信鏈路中的路由卻喜歡定長、有層次結構的 IP 地址。所以就需要一種能夠把主機名到 IP 地址的轉換服務,這種服務就是由 DNS 提供的。DNS 的全稱是 Domain Name System 域名系統。DNS 是一種由分層的 DNS 服務器實現的分布式數據庫。DNS 運行在 UDP 上,使用 53 端口。

DNS 是一種分層數據庫,它的主要層次結構如下

一般域名服務器的層次結構主要是以上三種,除此之外,還有另一類重要的 DNS 服務器,它是 本地 DNS 服務器(local DNS server)。嚴格來說,本地 DNS 服務器并不屬于上述層次結構,但是本地 DNS 服務器又是至關重要的。每個 ISP(Internet Service Provider) 比如居民區的 ISP 或者一個機構的 ISP 都有一臺本地 DNS 服務器。當主機和 ISP 進行連接時,該 ISP 會提供一臺主機的 IP 地址,該主機會具有一臺或多臺其本地 DNS 服務器的 IP地址。通過訪問網絡連接,用戶能夠容易的確定 DNS 服務器的 IP地址。當主機發出 DNS 請求后,該請求被發往本地 DNS 服務器,它起著代理的作用,并將該請求轉發到 DNS 服務器層次系統中。

首先,查詢請求會先找到本地 DNS 服務器來查詢是否包含 IP 地址,如果本地 DNS 無法查詢到目標 IP 地址,就會向根域名服務器發起一個 DNS 查詢。

注意:DNS 涉及兩種查詢方式:一種是遞歸查詢(Recursive query) ,一種是迭代查詢(Iteration query)。《計算機網絡:自頂向下方法》竟然沒有給出遞歸查詢和迭代查詢的區別,找了一下網上的資料大概明白了下。

  • 如果根域名服務器無法告知本地 DNS 服務器下一步需要訪問哪個頂級域名服務器,就會使用遞歸查詢;
  • 如果根域名服務器能夠告知 DNS 服務器下一步需要訪問的頂級域名服務器,就會使用迭代查詢。

在由根域名服務器 -> 頂級域名服務器 -> 權威 DNS 服務器后,由權威服務器告訴本地服務器目標 IP 地址,再有本地 DNS 服務器告訴用戶需要訪問的 IP 地址。

  • 第三步,瀏覽器需要和目標服務器建立 TCP 連接,需要經過三次握手的過程,具體的握手過程請參考上面的回答。
  • 在建立連接后,瀏覽器會向目標服務器發起 HTTP-GET 請求,包括其中的 URL,HTTP 1.1 后默認使用長連接,只需要一次握手即可多次傳輸數據。
  • 如果目標服務器只是一個簡單的頁面,就會直接返回。但是對于某些大型網站的站點,往往不會直接返回主機名所在的頁面,而會直接重定向。返回的狀態碼就不是 200 ,而是 301,302 以 3 開頭的重定向碼,瀏覽器在獲取了重定向響應后,在響應報文中 Location 項找到重定向地址,瀏覽器重新第一步訪問即可。
  • 然后瀏覽器重新發送請求,攜帶新的 URL,返回狀態碼 200 OK,表示服務器可以響應請求,返回報文。

HTTPS 的工作原理

我們上面描述了一下 HTTP 的工作原理,下面來講述一下 HTTPS 的工作原理。因為我們知道 HTTPS 不是一種新出現的協議,而是

所以,我們探討 HTTPS 的握手過程,其實就是 SSL/TLS 的握手過程。

TLS 旨在為 Internet 提供通信安全的加密協議。TLS 握手是啟動和使用 TLS 加密的通信會話的過程。在 TLS 握手期間,Internet 中的通信雙方會彼此交換信息,驗證密碼套件,交換會話密鑰。

每當用戶通過 HTTPS 導航到具體的網站并發送請求時,就會進行 TLS 握手。除此之外,每當其他任何通信使用HTTPS(包括 API 調用和在 HTTPS 上查詢 DNS)時,也會發生 TLS 握手。

TLS 具體的握手過程會根據所使用的密鑰交換算法的類型和雙方支持的密碼套件而不同。我們以RSA 非對稱加密來討論這個過程。整個 TLS 通信流程圖如下:

  • 在進行通信前,首先會進行 HTTP 的三次握手,握手完成后,再進行 TLS 的握手過程
  • ClientHello:客戶端通過向服務器發送 hello 消息來發起握手過程。這個消息中會夾帶著客戶端支持的 TLS 版本號(TLS1.0 、TLS1.2、TLS1.3) 、客戶端支持的密碼套件、以及一串 客戶端隨機數。
  • ServerHello:在客戶端發送 hello 消息后,服務器會發送一條消息,這條消息包含了服務器的 SSL 證書、服務器選擇的密碼套件和服務器生成的隨機數。
  • 認證(Authentication):客戶端的證書頒發機構會認證 SSL 證書,然后發送 Certificate 報文,報文中包含公開密鑰證書。最后服務器發送 ServerHelloDone 作為 hello 請求的響應。第一部分握手階段結束。
  • 加密階段:在第一個階段握手完成后,客戶端會發送 ClientKeyExchange 作為響應,這個響應中包含了一種稱為 The premaster secret 的密鑰字符串,這個字符串就是使用上面公開密鑰證書進行加密的字符串。隨后客戶端會發送 ChangeCipherSpec,告訴服務端使用私鑰解密這個 premaster secret 的字符串,然后客戶端發送 Finished 告訴服務端自己發送完成了。

Session key 其實就是用公鑰證書加密的公鑰。

實現了安全的非對稱加密:然后,服務器再發送 ChangeCipherSpec 和 Finished 告訴客戶端解密完成,至此實現了 RSA 的非對稱加密。

 

責任編輯:趙寧寧 來源: Java建設者
相關推薦

2021-01-06 08:34:21

Spring核心組件

2015-08-13 10:29:12

面試面試官

2019-07-23 09:30:17

HTTP 2.0HTTP協議傳輸

2021-05-12 08:20:53

開發

2020-01-15 08:06:28

HTTP超文本傳輸協議網絡協議

2022-08-23 09:48:13

面試JavaScriptoffer

2023-09-26 00:37:38

Spring微服務框架

2022-05-23 08:43:02

BigIntJavaScript內置對象

2021-01-18 05:13:04

TomcatHttp

2021-05-27 05:37:10

HTTP請求頭瀏覽器

2024-09-24 10:28:22

2018-10-22 14:28:26

面試官數據公司

2010-08-23 15:06:52

發問

2025-02-19 00:00:00

RabbitMQTTL插件

2010-08-12 16:28:35

面試官

2023-02-16 08:10:40

死鎖線程

2022-04-08 08:26:03

JavaHTTP請求

2025-04-02 01:20:00

阻塞隊列源碼

2025-03-17 07:46:41

2013-11-14 13:32:43

面試流程谷歌
點贊
收藏

51CTO技術棧公眾號

欧美性片在线观看| 国产黄色av片| 极品束缚调教一区二区网站| 亚洲在线免费播放| 国模精品一区二区三区| 看片网址国产福利av中文字幕| 日韩三区视频| 欧美性高清videossexo| 最新av在线免费观看| 国产自产一区二区| 香蕉久久夜色精品| 神马久久桃色视频| 欧美在线观看视频网站| 理论片午午伦夜理片在线播放| 国产成人精品一区二区三区网站观看| 欧美性视频网站| 国产精品 欧美激情| 亚洲警察之高压线| 日韩精品资源二区在线| www日韩在线观看| bbw在线视频| 自拍偷在线精品自拍偷无码专区| 蜜桃狠狠色伊人亚洲综合网站| 国产99999| 日本va欧美va精品| 97超碰国产精品女人人人爽 | 久久久久国产精品人| 91免费高清视频| 无码人妻丰满熟妇奶水区码| 在线播放精品| 久久影院模特热| 女人黄色一级片| 杨幂一区二区三区免费看视频| 欧美电影免费提供在线观看| 中文字幕av专区| 欧美大片免费| 日韩欧美亚洲成人| 激情伊人五月天| 国产丝袜精品丝袜| 一区二区三区视频在线看| 亚洲最新在线| 91短视频版在线观看www免费| 久久综合九色综合欧美98| 国产在线精品一区二区中文| 高潮毛片7777777毛片| 国产精品综合久久| 亚洲一区二区三区毛片 | 激情视频网站在线播放色| 一区二区三区四区在线免费观看| 中文字幕一区二区三区5566| 国产三级在线免费观看| 久久看人人爽人人| 久中文字幕一区| 三级在线观看| 国产日韩综合av| 四虎影院一区二区三区| 成年在线电影| 中文一区在线播放| 亚洲精美视频| 蜜桃视频在线观看www社区| 国产精品久久久久毛片软件| 一区二区精品在线观看| 五月天婷婷在线视频| 亚洲欧洲日韩av| 18视频在线观看娇喘| 91精品久久久久久粉嫩| 一区二区三区日韩精品| 久久这里只有精品18| a级片免费在线观看| 伊人一区二区三区| 欧美无砖专区免费| 中日韩脚交footjobhd| 色妹子一区二区| 亚洲一级免费观看| 国产 日韩 欧美| 欧美精品一区二区在线播放| 国产精品无码网站| 欧美中文字幕一区二区| 日韩网站免费观看高清| 欧美成人777| 日韩一级在线| 国产精品视频自在线| 日韩精品成人免费观看视频| 免费人成黄页网站在线一区二区| 成人激情黄色网| 天堂av资源网| 国产精品无码永久免费888| 色呦呦网站入口| 欧洲一区精品| 欧美日韩国产色站一区二区三区| 欧美日韩一区二区区| 国产精品网在线观看| 中文字幕日韩欧美在线视频| 青青青在线视频| 亚洲制服少妇| 亚洲xxxx做受欧美| 青青免费在线视频| 亚洲精品乱码久久久久| 日韩avxxx| www.成人| 日韩久久午夜影院| 男人晚上看的视频| 亚洲在线国产日韩欧美| 91福利视频导航| 东热在线免费视频| 亚洲电影中文字幕在线观看| 美女网站色免费| 欧美深夜视频| 免费91麻豆精品国产自产在线观看| www日韩精品| 激情综合网最新| 日本精品一区二区| 欧美1—12sexvideos| 欧美日韩黄色一区二区| 亚洲精品成人无码熟妇在线| 欧美日韩国产一区精品一区| 国产精品狠色婷| 午夜黄色小视频| 亚洲精品国产品国语在线app| 能看的毛片网站| 久草精品视频| 色综合导航网站| 中文在线字幕av| 91免费在线视频观看| 女人色极品影院| 亚洲综合伊人| 日韩中文字幕亚洲| 黄色片视频免费| 91污在线观看| 777精品久无码人妻蜜桃| 亚洲一区二区免费在线观看| 精品国产一区二区三区久久久| 免费的毛片视频| 2021中文字幕一区亚洲| 亚洲熟妇无码一区二区三区| 视频在线观看免费影院欧美meiju| 综合久久五月天| 特级西西444www高清大视频| 国产片一区二区三区| 18禁男女爽爽爽午夜网站免费 | 美女脱光内衣内裤视频久久影院| 欧美日韩在线播放一区二区| 在线天堂新版最新版在线8| 亚洲精品91美女久久久久久久| 91精品国产高潮对白| 国产成人免费高清| 久久国产精品网| 老司机在线精品视频| 性欧美在线看片a免费观看| 亚洲第一天堂在线观看| 亚洲午夜免费福利视频| 中文字幕天堂网| 1024成人| 免费在线观看一区二区| yw.尤物在线精品视频| 一道本无吗dⅴd在线播放一区| 亚洲图片欧美日韩| 亚洲国产精品成人综合色在线婷婷| 超碰av在线免费观看| 精品久久久久久久久久久aⅴ| 日韩免费在线观看视频| www.亚洲免费| 欧美精品电影在线播放| 欧美国产精品一二三| 国产69精品久久777的优势| 青青青青在线视频| 老司机精品在线| 国产suv精品一区二区三区88区| xxxxx日韩| 这里只有精品视频在线观看| 久久久久久av无码免费网站| 91亚洲精品久久久蜜桃网站 | 欧美精品影院| 国语自产在线不卡| 国产98在线| 91精品蜜臀在线一区尤物| 国产第100页| 久久久久国产精品厨房| 免费黄频在线观看| 亚洲狼人精品一区二区三区| 日韩一区二区三区高清| 欧美一级大片在线视频| 国内精品400部情侣激情| 国产经典自拍视频在线观看| 欧美一区二区视频在线观看2020| 国产情侣在线视频| 中文在线一区二区| 亚洲天堂2024| 美女国产一区二区三区| 日本大片免费看| 成人在线丰满少妇av| 色av综合在线| 在线免费观看麻豆| 激情国产一区二区| 可以在线看的av网站| 清纯唯美日韩| 国产亚洲一区在线播放| 免费一级欧美在线观看视频| 久久久亚洲网站| 18视频免费网址在线观看| 欧美zozozo| 一区二区日韩在线观看| 精品福利在线视频| 欧洲美女女同性互添| 91美女福利视频| 亚洲天堂av一区二区三区| 噜噜噜在线观看免费视频日韩 | 国产在线免费av| 成人高清伦理免费影院在线观看| xx欧美撒尿嘘撒尿xx| 国产亚洲永久域名| 少妇久久久久久被弄到高潮| jvid福利在线一区二区| 久久99久久精品国产| 日本免费精品| 91精品国产综合久久男男| 亚洲高清黄色| 69精品小视频| 丁香花在线电影| 欧美刺激性大交免费视频| 69久久精品| 亚洲视频日韩精品| 天天在线女人的天堂视频| 日韩丝袜情趣美女图片| 91久久精品无码一区二区| 色综合久久九月婷婷色综合| 日韩毛片在线视频| 一区二区三区日韩欧美| 久久中文免费视频| 中文字幕视频一区| 欧美aaa级片| 国产亚洲欧美色| 97伦伦午夜电影理伦片| 91免费在线视频观看| 亚洲综合自拍网| 成人精品国产免费网站| 韩国三级在线看| 国产成人综合在线观看| 北条麻妃亚洲一区| 国内精品第一页| 两性午夜免费视频| 国产精品综合久久| 26uuu国产| 国产很黄免费观看久久| 一级片免费在线观看视频| 国产一区二区三区黄视频| 日本在线观看视频一区| 国产美女精品一区二区三区| 亚洲第一天堂久久| 国产剧情一区二区三区| 丰满少妇一区二区三区专区| 国产精品主播直播| 性生交大片免费看l| 国产 欧美在线| 亚洲 欧美 日韩在线| av在线不卡免费看| 国产又爽又黄无码无遮挡在线观看| 91亚洲午夜精品久久久久久| 久久只有这里有精品| 国产日本亚洲高清| 成人欧美一区二区三区黑人一 | 久久露脸国语精品国产91| 岛国av一区二区三区| 欧美 日韩 精品| 欧美主播一区二区三区美女| 国产精品国产一区二区三区四区 | 国产一区二区在线播放| 国产一区二区三区国产精品| 99超碰麻豆| 日韩mv欧美mv国产网站| 日韩一区二区三区资源| 伊人色**天天综合婷婷| 福利视频一二区| 天堂精品中文字幕在线| 三上悠亚在线一区| 国产精品18久久久久久久网站| 亚洲av成人片无码| 国产日韩综合av| 四虎免费在线视频| 福利精品视频在线| 一级片视频播放| 精品国精品自拍自在线| 六十路在线观看| 久久手机精品视频| 天堂资源在线| 成人夜晚看av| 日韩欧美国产大片| 一区二区三区观看| 影音先锋在线一区| 男女男精品视频站| 国产91丝袜在线播放九色| av电影网站在线观看| 亚洲免费色视频| 中文字幕免费高清网站| 日韩欧美一级精品久久| 精品av中文字幕在线毛片| 久久91精品国产91久久跳| 澳门成人av网| 91手机在线观看| 精品视频黄色| 久久综合色视频| 国产一区二区免费看| 国产呦小j女精品视频| 亚洲精品视频在线观看免费| 日韩精品一区二区亚洲av观看| 日韩欧美一区二区三区在线| jizz在线免费观看| 性色av一区二区咪爱| 国产精品毛片aⅴ一区二区三区| 国严精品久久久久久亚洲影视| 欧美丰满日韩| 欧美日韩一区二区在线免费观看 | 中文字幕一区二区三区人妻电影| 亚洲乱码一区二区三区在线观看| 五月婷婷丁香在线| 亚洲乱码国产乱码精品精| 久久www人成免费看片中文| 国产精品一区二区三区久久| 欧美黑人做爰爽爽爽| 国产成人生活片| 狠狠v欧美v日韩v亚洲ⅴ| 在线免费观看麻豆| 精品美女永久免费视频| 亚洲a视频在线| 久久夜色撩人精品| 九九热这里有精品| 无遮挡亚洲一区| 久久一二三四| 在线免费观看麻豆| 欧美日韩国内自拍| 少妇喷水在线观看| 欧美激情第一页xxx| silk一区二区三区精品视频| 成人高清dvd| 狠狠v欧美v日韩v亚洲ⅴ| 欧美风情第一页| 在线播放欧美女士性生活| aiai在线| 国产欧美久久一区二区| 成人精品中文字幕| 午夜两性免费视频| 国产精品美女久久久久久2018 | 高清视频在线观看三级| 99在线免费观看视频| 亚洲视频久久| 怡红院一区二区| 精品久久久久人成| 五月婷婷六月色| 欧美中文在线字幕| 国产精品自拍区| 日本黄大片一区二区三区| 国产精品视频在线看| 国产又粗又猛视频免费| www.欧美精品| 麻豆精品一区| 久久在线中文字幕| 91麻豆免费看片| 国产情侣小视频| 日韩在线观看视频免费| 国产精品1区| 欧美这里只有精品| 91色在线porny| 波多野结衣黄色网址| 日韩中文字幕网| 99re8这里有精品热视频免费| 国产乱淫av片杨贵妃| 久久综合久久综合久久综合| 无码人妻精品一区二区三区不卡| 在线电影中文日韩| 精品中文视频| 97国产在线播放| 中文字幕精品—区二区四季| 精品人妻一区二区三区含羞草| 欧美激情女人20p| 国产精品欧美在线观看| 亚洲一级免费在线观看| 一区二区三区四区在线| 免费福利在线视频| 成人激情春色网| 一本久久综合| avhd101老司机| 精品久久久久香蕉网| 玛雅亚洲电影| 五月天激情图片| 久久五月婷婷丁香社区| 国产精品欧美激情在线| 98精品国产高清在线xxxx天堂| 精品国产成人| 男人的天堂影院| 欧美喷水一区二区| 黄色污网站在线观看| 中文字幕成人一区| 91麻豆国产福利在线观看| 国产又粗又大又爽视频| 久久免费福利视频| 欧美成免费一区二区视频| 中出视频在线观看| 欧美一区二区三区视频在线| 黑人巨大精品| 成年女人18级毛片毛片免费|