一、三次握手
第一次握手: 用戶端向伺服器發送連接配接請求包,标志位SYN(同步序号)置為1,序号為X=0
第二次握手: 伺服器收到用戶端發過來封包,由SYN=1知道用戶端要求建立聯機。向用戶端發送一個SYN和ACK都置為1的TCP封包,設定初始序号Y=0,将确認序号(Acknowledgement Number)設定為客戶的序列号加1,即X+1 = 0+1=1, 如下圖:
第三次握手: 用戶端收到伺服器發來的包後檢查确認序号(Acknowledgement Number)是否正确,即第一次發送的序号加1(X+1=1)。以及标志位ACK是否為1。若正确,用戶端再次發送确認包,ACK标志位為1,SYN标志位為0。确認序号(Acknowledgement Number)=Y+1=0+1=1,發送序号為X+1=1。伺服器收到後确認序号值與ACK=1則連接配接建立成功,可以傳送資料了。
二、四次揮手
第一次揮手:用戶端向伺服器端發送一段TCP封包,其中将标志位FIN和ACK置為1,序号為Seq=X=1665,确認序号為ack=Z=673。
第二次揮手:伺服器收到FIN後,發回一個ACK(标志位ACK=1),确認序号為收到的序号加1,即ack=X=1665+1=1666。序号為收到的确認序号Seq=Z=673。
第三次揮手:伺服器關閉與用戶端的連接配接,發送一個FIN。标志位FIN和ACK置為1,序号為Seq=Y=673,确認序号為ack=X=1666。
第四次揮手:用戶端收到伺服器發送的FIN之後,發回ACK确認(标志位ACK=1),确認序号為收到的序号加1,即ack=Y+1=674。序号為收到的确認序号Seq=X=1666。
三、應用層HTTP流程協定分析
HTTP協定(超文本傳輸協定HyperText Transfer Protocol),它是基于TCP協定的應用層傳輸協定,簡單來說就是用戶端和服務端進行資料傳輸的一種規則。
HTTP請求封包分析:
HTTP響應封包分析:
四、SSL握手
TLS是一種密碼學協定,用于保證兩者之間的會話安全。
ClientHello為握手的第一條消息,發送的内容有如下圖:
ServerHello消息的意義是将伺服器選擇的連接配接參數傳送回用戶端,結構與ClientHello類似:
Certificate 該部分是伺服器傳回給用戶端的證書鍊:
ServerKeyExchange 該消息的目的是攜帶密鑰交換的額外資料
ServerHelloDone 消息表明伺服器已經将所有預計的握手消息發送完畢。
Client Key Exchange 消息攜帶用戶端為密鑰交換提供的所有資訊,内容随着不同的協商密碼套件而不同。
ChangeCipherSpec 消息表明發送端已取得用以生成連接配接參數的足夠資訊,已生成加密密鑰,并且将切換到加密模式,此後用戶端的資料均為協商密鑰加密的密文。
Encypted Handshake Message(finish) 為結合所有目前的通信參數資訊生成一段資料,并使用協商密鑰加密後的内容
New Session Ticket 會話辨別符,解決會話緩存問題。