java面試題15:http原理

fans news 發佈 2021-12-01T03:18:08+00:00

HTTP 是一個無狀態的協議。無狀態是指客戶機(Web 瀏覽器)和伺服器之間不需要建立持久的連接,這意味著當一個客戶端向伺服器端發出請求,然後伺服器返迴響應(response),連接就被關閉了,在伺服器端不保留連接的有關信息.

HTTP 是一個無狀態的協議。無狀態是指客戶機(Web 瀏覽器)和伺服器之間不需要建立持久的連接,這意味著當一個客戶端向伺服器端發出請求,然後伺服器返迴響應(response),連接就被關閉了,在伺服器端不保留連接的有關信息.HTTP 遵循請求(Request)/應答(Response)模型。客戶機(瀏覽器)向伺服器發送請求,伺服器處理請求並返回適當的應答。所有 HTTP 連接都被構造成一套請求和應答。

一,傳輸流程


1:地址解析

如用客戶端瀏覽器請求這個頁面:http://localhost.com:8080/index.htm 從中分解出協議名、主機名、埠、對象路徑等部分,對於我們的這個地址,解析得到的結果如下:

協議名:http

主機名:localhost.com

埠:8080

對象路徑:/index.htm

在這一步,需要域名系統 DNS 解析域名 localhost.com,得主機的 IP 地址

2:封裝 HTTP 請求數據包

把以上部分結合本機自己的信息,封裝成一個 HTTP 請求數據包

3:封裝成 TCP 包並建立連接

封裝成 TCP 包,建立 TCP 連接(TCP 的三次握手)

4:客戶機發送請求命

4)客戶機發送請求命令:建立連接後,客戶機發送一個請求給伺服器,請求方式的格式為:統一資源標識符(URL)、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶機信息和可內容。

5:伺服器響應

伺服器接到請求後,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括伺服器信息、實體信息和可能的內容

6:伺服器關閉 TCP 連接

伺服器關閉 TCP 連接:一般情況下,一旦 Web 伺服器向瀏覽器發送了請求數據,它就要關閉 TCP 連接,然後如果瀏覽器或者伺服器在其頭信息加入了這行代碼 Connection:keep-alive,TCP 連接在發送後將仍然保持打開狀態,於是,瀏覽器可以繼續通過相同的連接發送請求。保持連接節省了為每個請求:建立新連接所需的時間,還節約了網絡帶寬

二,HTTP 狀態

三,HTTPS

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP 通道,簡單講是 HTTP 的安全版。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL。其所用的埠號是 443。 過程大致如下:

建立連接獲取證書

1) SSL 客戶端通過 TCP 和伺服器建立連接之後(443 埠),並且在一般的 tcp 連接協商(握手)過程中請求證書。即客戶端發出一個消息給伺服器,這個消息裡面包含了自己可實現的算法列表和其它一些需要的消息,SSL 的伺服器端會回應一個數據包,這裡面確定了這次通信所需要的算法,然後伺服器向客戶端返回證書。(證書裡面包含了伺服器信息:域名。申請證書的公司,公共秘鑰)。

證書驗證

2) Client 在收到伺服器返回的證書後,判斷簽發這個證書的公共簽發機構,並使用這個機構的公共秘鑰確認簽名是否有效,客戶端還會確保證書中列出的域名就是它正在連接的域名。

數據加密和傳輸

3) 如果確認證書有效,那麼生成對稱秘鑰並使用伺服器的公共秘鑰進行加密。然後發送給伺服器,伺服器使用它的私鑰對它進行解密,這樣兩台計算機可以開始進行對稱加密進行通信。

關鍵字: