1. 程式人生 > >iOS 一個HTTPS連線的客戶端與服務端互動過程

iOS 一個HTTPS連線的客戶端與服務端互動過程

在一個HTTPS連線的網路中,輸入賬號和密碼並單擊登陸按鈕後,到伺服器返回這個請求前,這期間經歷了什麼?

答:具體經歷了一下8步:

  1. 客戶端打包請求。其中包括URL、埠、賬號和密碼等。使用賬號和密碼登陸應該用的是POST方式,所以相關的使用者資訊會被載入到body中。這個請求應該包含3個方面:網路地址、協議和資源路徑。注意:這裡用的是HTTPS,即HTTP+SSL/TLS,在HTTP上又加了一層處理加密資訊的模組(相當於加了一個鎖)。這個過程相當於客戶端請求鑰匙。
  2. 伺服器端接受請求。一般客戶端的請求會先被髮送到DNS伺服器中。DNS伺服器負責將網路地址解析成IP地址,這個IP地址對應網上的一臺計算機。這其中可能發生Hosts Hijack和ISP failure的問題。過了DNS這一關,資訊就到伺服器端,此時客戶端和服務端的埠之間會建立一個socket連線。socket一般都是以file descriptor的方式解析請求的。這個過程相當於伺服器端分析是否要想客戶端傳送鑰匙模板。
  3. 伺服器端返回數字證書。伺服器端會有一套數字證書(相當於一個鑰匙模板),這個證書會先被髮送個客戶端。這個過程相當於服務端向可獨斷髮送鑰匙模板。
  4. 客戶端生成加密資訊。根據收到的數字證書(鑰匙模板),客戶端就會生成鑰匙,並把內容鎖起來,此時資訊已經被加密。這個過程相當於客戶端生成鑰匙並鎖上請求。
  5. 客戶端方傳送加密資訊。伺服器端會收到由自己傳送的數字證書加密的資訊。這個時候生成的鑰匙也一併被髮送到服務端。這個過程相當於客戶端傳送請求。
  6. 服務端解鎖加密資訊。服務端收到加密資訊後,會根據得到的鑰匙進行解密,並把要返回的資料進行對稱加密。這個過程相當於伺服器端解鎖請求,生成、加鎖迴應資訊。
  7. 伺服器端向客戶端返回資訊。
    客戶端會收到相應的加密資訊。這個過程相當於伺服器端向客戶端傳送迴應資訊。
  8. 客戶端解鎖返回資訊。客戶端會用剛剛生成的鑰匙進行解密,將內容顯示在瀏覽器上。

 以上內容摘自《iOS面試之道》一書,感謝作者。