1、獲取IP。瀏覽器地址欄中輸入"http://www.xxx.edu.cn/"並提交之后,首先它會在DNS本地緩存表中查找,如果有則直接告訴IP地址。如果沒有則要求網關DNS進行查找,如此下去,當找到對應的ip后,則返回給瀏覽器。
2、建立TCP連接。當獲取到IP之后,就開始與所請求的服務器建立TCP連接,你可以在下圖中發現syn,ack,這些標識符就是用來同步用的。
3、連接建立后,就向服務器發出http請求(大家可以從圖中看出來)。如果是HTTP1.0的版本則,每一次請求結束后,就釋放TCP連接。
HTTP請求過程
· 建立連接完畢以后客戶端會發送響應給服務端
· 服務端接受請求並且做出響應發送給客戶端
· 客戶端收到響應並且解析響應給用戶
HTTPS
-
在使用HTTPS是需要保證服務端配置正確了對應的安全證書
-
客戶端發送請求到服務端
-
服務端返回公鑰和證書到客戶端
-
客戶端接收后會驗證證書的安全性,如果通過則會隨機生成一個隨機數,用公鑰對其加密,發送到服務端
-
服務端接受到這個加密后的隨機數后會用私鑰對其解密得到真正的隨機數,隨后用這個隨機數當做私鑰對需要發送的數據進行對稱加密
-
客戶端在接收到加密后的數據使用私鑰(即生成的隨機值)對數據進行解密並且解析數據呈現結果給客戶
-
SSL加密建立
-
SSL的目的
為了網絡通信的安全,具體講可分為:
1.防泄露:數據必須用密文傳輸(加密算法);
2.防止篡改:數據必須加完整性校驗(數字簽名);
3.防止抵賴:服務端使用自己私鑰加密的數字簽名(數字簽名);
4.防身份偽造:服務端身份必須經過認證(數字證書);
對於HTTPS這種應用而言,由於還需要額外的TLS握手,所需RRT:
如果碰到Certificate過大過長的,握手完成還不止3個RTT
HTTP 的連接方式
HTTP 的連接方式是指 連接的持續性,它分為:短連接和長連接。(http1.0是短連接,http2.0及以后長連接)
短連接
顧名思義,瀏覽器和服務器沒進行一次HTTP操作,就建立一次連接,但是任務結束就中斷連接。在HTTP/1.0中,默認使用的是短連接。如:瀏覽器訪問某個HTML或者其他類型的Web頁中包含有其他的web資源,如JavaScript,圖像文件,CSS文件等;當瀏覽器遇到這樣的web資源,就會建立一個HTTP會話。
長連接
同樣的意思,在客戶端與瀏覽器建立了連接后,會保持這個連接的狀態。在HTTP/1.1中,默認的是長連接。使用長連接的HTTP協議,會在響應頭有如下的代碼:
Connection:keep-alive
當使用了長連接的時候,客戶端一旦建立了連接,第二次建立連接的時候就直接使用已經建立的通道。但是keep-alive並不是永久的保持,可以在不同的服務器軟件設置這個時間。
HTTP 的長連接短連接,其實是TCP的長連接和短連接。
TCP 長連接短連接的過程
長連接:
建立連接----傳輸數據---(保持連接)--傳輸數據-- 關閉連接
短連接
建立連接--- 傳輸數據----關閉連接........建立連接---傳輸數據----關閉連接
數據庫的連接用長連接, 如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創建也是對資源的浪費
WEB網站的http服務一般都用短鏈接,因為長連接對於服務端來說會耗費一定的資源,而像WEB網站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,那可想而知吧。所以並發量大,但每個用戶無需頻繁操作情況下需用短連好。