1.http
http:超文本傳輸協議,是一個客戶端和服務器端請求和應答的標準,客戶端和服務端是通過發送報文來相互通信的
http工作過程
(1)首先客戶端和服務端需建立連接,點擊某個連接,http開始
(2)建立連接后,客戶端像服務端發送一個請求
(3)服務端接到請求后,給予相應的響應信息
(4)客戶端接收到服務器端所返回的信息通過瀏覽器顯示,然后客戶端與服務器端斷開連接
TCP/IP協議:三次握手
(1)第一次握手:Client將標志位SYN置為1,隨機產生一個值seq=J,并將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。
(2)第二次握手:Server收到數據包后由標志位SYN=1知道Client請求建立連接,Server將標志位SYN和ACK都置為1,ack=J+1,隨機產生一個值seq=K,并將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。
(3)第三次握手:Client收到確認后,檢查ack是否為J+1,ACK是否為1,如果正確則將標志位ACK置為1,ack=K+1,并將該數據包發送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨后Client與Server之間可以開始傳輸數據了。
2.https
過程
(1)客戶端像服務端發起https請求
(2)服務端的配置:采用HTTPS協議的服務器必須要有一套數字證書,可以是自己制作或者CA證書。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用CA證書則不會彈出提示頁面。這套證書其實就是一對公鑰和私鑰。公鑰給別人加密使用,私鑰給自己解密使用
(3)傳送證書:這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等。
(4)客戶端解析證書:這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨即值,然后用證書對該隨機值進行加密。
(5)傳送加密信息:這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了.
(6)服務端解密信息:服務端用私鑰解密后,得到了客戶端傳過來的隨機值(私鑰),然后把內容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復雜,數據就夠安全。
(7)傳輸加密后的信息:這部分信息是服務段用私鑰加密后的信息,可以在客戶端被還原。
(8)客戶端解密信息:客戶端用之前生成的私鑰解密服務段傳過來的信息,于是獲取了解密后的內容。
3.區別
http與https的主要區別:
(1)https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用
(2)http是超文本傳輸協議,信息是明文傳輸,https則具有安全性的SSL加密傳輸協議
(3)http和https使用的完全不同的連接方式,用的端口也不一樣,前者80,后者443
(4)http的連接很簡單,是無狀態的;https是由ssl+http協議構建的可進行加密傳輸,身份驗證的網絡協議,比http安全,可防止數據在傳輸過程中不被竊取,改變,確保數據的完整性
http://www.lxweimin.com/p/3e4f3de18e3b