天天看點

http的連接配接和斷開

@ http的了解

用戶端發送一個HTTP請求到伺服器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、請求資料三個部分組成,

請求行包括:請求格式,請求url,請求協定等

請求頭包括:

Accept :請求封包可通過一個“Accept”封包頭屬性告訴服務端 用戶端接受什麼類型的響應。

例如Accept:text/plain 說明用戶端接收文本

Accept-Charset:接收的編碼集

Cookie:客戶資訊

Referer表示這個請求是從哪個URL過來的

詳情請看https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

請求資料就是post傳的參數

HTTP響應也由三個部分組成,分别是:狀态行、消息報頭、響應正文。

狀态碼就是請求傳回的結果碼:200代表成功,其餘代表失敗比如404

消息報頭和請求頭部一樣

響應正文就是得到的資料。

http三次握手

http的連接配接和斷開

第一次握手:主機A發送位碼為syn=1,随機産生seq number=1234567的資料包到伺服器,主機B由SYN=1知道,A要求建立聯機;

第二次握手:主機B收到請求後要确認聯機資訊,向A發送ack number=(主機A的seq+1),syn=1,ack=1,随機産生seq=7654321的包

第三次握手:主機A收到後檢查ack number是否正确,即第一次發送的seq number+1,以及位碼ack是否為1,若正确,主機A會再發送ack number=(主機B的seq+1),ack=1,主機B收到後确認seq值與ack=1則連接配接建立成功。

倆次握手行不行

如果倆次握手,主機A無法知道消息是不是由剛才連接配接的主機發過來的。容易受到中間商攻擊。

http斷開需要幾次握手

四次揮手(斷開連接配接)

第一次: TCP用戶端發送一個FIN,用來關閉客戶到伺服器的資料傳送。

第二次:伺服器收到這個FIN,它發回一個ACK,确認序号為收到的序号加1。和SYN一樣,一個FIN将占用一個序号。

第三次:伺服器關閉用戶端的連接配接,發送一個FIN給用戶端。

第四次:用戶端發回ACK封包确認,并将确認序号設定為收到序号加1。

https幾次握手

http的連接配接和斷開

在使用HTTPS是需要保證服務端配置正确了對應的安全證書

用戶端發送請求到服務端

服務端傳回公鑰和證書到用戶端

用戶端接收後會驗證證書的安全性,如果通過則會随機生成一個随機數,用公鑰對其加密,發送到服務端

服務端接受到這個加密後的随機數後會用私鑰對其解密得到真正的随機數,随後用這個随機數當做私鑰對需要發送的資料進行對稱加密

用戶端在接收到加密後的資料使用私鑰(即生成的随機值)對資料進行解密并且解析資料呈現結果給客戶

SSL加密建立