TCP(Transmission Control Protocol) 三次握手
TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接:
位碼即tcp標誌位,有6種標示:
SYN(synchronous建立聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)
Sequence number(順序號碼)
Acknowledge number(確認號碼)
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(seq=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態,完成三次握手。
在Wireshark中,捕獲完整的打開https的過程 然後在statistics-->flow graph 看到流程圖。
如下圖所示: 本機的4694端口 與目的主機(Web)的443端口 建立TCP鏈接,並且發送了 Hello報文。
快速重傳
RFC5681定一個的一個過程。快速重傳不依賴定時器的超時,而是依靠ACK確認包來進行重傳。使用快速重傳相比RTO超時重傳通常可以更高效的修復TCP丟包問題。快速重傳是基於一個前提:即按照RFC5681,當TCP收到一個亂序報文的時候應該立即回覆ACK確認包,而不會延遲ACK(延遲ACK介紹參考之前文章介紹)確認。另外RFC5681還指出如果接收序列號空間存在洞,新接收的報文完全填充了這個洞或者部分填充了這個洞,TCP也應該立即回覆一個ACK確認包以便發送端及時獲取接收端相關的信息。
1.[TCP Out_of_Order] 443-->4719 Ack=1796
一般來說是網絡擁塞,導致順序包抵達時間不同,延時太長,或者包丟失,需要重新組合數據單元,因爲他們可能是由不同的路徑到達你的電腦上面.
2.[ TCP Retransmisson] Ack=1796 是未收到服務器的重發報文。
然後 [TCP Dup ACK 221#XX] 重複應答 ACK 221 丟失,#後面的是表示第幾(14)次丟失。
tcp previous segment not captured 意思就是報文沒有捕捉到,出現報文的丟失。