注:以下內(nèi)容均出自《HTTP圖解》。
寫下這篇文章的原因是因?yàn)樵诿嬖囶}上見過,那時(shí)候理解不深,通過學(xué)習(xí)《HTTP圖解》而使自己理解。
TCP 位于傳輸層,提供可靠的字節(jié)流服務(wù)。
所謂的字節(jié)流服務(wù)(Byte Stream Service)是指,為了方便傳輸,將大 塊數(shù)據(jù)分割成以報(bào)文段(segment)為單位的數(shù)據(jù)包進(jìn)行管理。
而在傳輸過程中,為了確保數(shù)據(jù)能到達(dá)目標(biāo)
為了準(zhǔn)確無誤地將數(shù)據(jù)送達(dá)目標(biāo)處,TCP 協(xié)議采用了三次握手 (three-way handshaking)策略。用 TCP 協(xié)議把數(shù)據(jù)包送出去后,TCP 不會(huì)對(duì)傳送后的情況置之不理,它一定會(huì)向?qū)Ψ酱_認(rèn)是否成功送達(dá)。
握手過程中使用了 TCP 的標(biāo)志(flag) —— SYN(synchronize) 和 ACK(acknowledgement)。?
發(fā)送端首先發(fā)送一個(gè)帶 SYN 標(biāo)志的數(shù)據(jù)包給對(duì)方。接收端收到后, 回傳一個(gè)帶有 SYN/ACK 標(biāo)志的數(shù)據(jù)包以示傳達(dá)確認(rèn)信息。最后,發(fā) 送端再回傳一個(gè)帶 ACK 標(biāo)志的數(shù)據(jù)包,代表“握手”結(jié)束。 若在握手過程中某個(gè)階段莫名中斷,TCP 協(xié)議會(huì)再次以相同的順序發(fā) 送相同的數(shù)據(jù)包。
