為了準確無誤地把資料送達目標處,TCP協定採用了三次握手策略。用TCP協定把資料包送出去後,TCP不會對傳送 後的情況置之不理,它一定會向對方確認是否成功送達。握手過程中使用了TCP的標誌:SYN和ACK。
發送端先傳送一個有SYN標誌的封包給對方。接收端收到後,回傳一個帶有SYN/ACK標誌的資料包以示傳達確認訊息。 最後,發送端再回傳一個帶有ACK標誌的資料包,代表「握手」結束。 若在握手過程中某個階段莫名中斷,TCP協定會再次以相同的順序傳送相同的封包。
斷開一個TCP連線則需要「四次揮手」:
#第一次揮手:主動關閉方發送一個FIN,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發數據了(當然,在fin包之前發送出去的數據,如果沒有收到對應的ack確認報文,主動關閉方仍會重發這些資料),但是,此時主動關閉方還可以接受資料。
第二揮手:被動關閉方收到FIN包後,發送一個ACK給對方,確認序號為收到序號+1(與SYN相同,一個FIN佔用一個序號)。
第三次揮手:被動關閉方發送一個FIN,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也發送完了,不會再給你發數據了。
第四次揮手:主動關閉方收到FIN後,發送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。
以上是淺析TCP傳輸的三次握手四次揮手策略的詳細內容。更多資訊請關注PHP中文網其他相關文章!