一、三次握手


第一次握手: 客戶端向服務器發送連接請求包,標志位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 會話識別符號,解決會話快取問題,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271849.html
標籤:其他
上一篇:深入淺出-XXE漏洞
