注:以下內(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ù)包浊仆。