最新日韩欧美在线综合网_成人在线视_自拍偷拍第八页_欧美又大又粗又硬又色A片_亚洲精品国产成人片_一级片手机在线

中國(guó)專(zhuān)業(yè)IT外包服務(wù)

用心服務(wù)每一天
IT之道-艾銻知道

您當(dāng)前位置: 主頁(yè) > 資訊動(dòng)態(tài) > 艾銻分享 >

IT運(yùn)維: TCP連接的“三次握手”與“四次揮手”


2020-04-18 19:27 作者:admin 瀏覽量:

TCP連接的“三次握手”與“四次揮手”

艾銻無(wú)限科技專(zhuān)業(yè):IT外包、企業(yè)外包、網(wǎng)站外包、中小企業(yè)云服務(wù)平臺(tái)等北京IT外包服務(wù)
                                                    
 
一、TCP connection
客戶(hù)端與服務(wù)器之間數(shù)據(jù)的發(fā)送和返回的過(guò)程當(dāng)中需要?jiǎng)?chuàng)建一個(gè)叫TCP connection的東西;
由于TCP不存在連接的概念,只存在請(qǐng)求和響應(yīng),請(qǐng)求和響應(yīng)都是數(shù)據(jù)包,它們之間都是經(jīng)過(guò)由TCP創(chuàng)建的一個(gè)從客戶(hù)端發(fā)起,服務(wù)器接收的類(lèi)似連接的通道,這個(gè)連接可以一直保持,http請(qǐng)求是在這個(gè)連接的基礎(chǔ)上發(fā)送的;
在一個(gè)TCP連接上是可以發(fā)送多個(gè)http請(qǐng)求的,不同的版本這個(gè)模式不一樣。
在HTTP/1.0中這個(gè)TCP連接是在http請(qǐng)求創(chuàng)建的時(shí)候同步創(chuàng)建的,http請(qǐng)求發(fā)送到服務(wù)器端,服務(wù)器端響應(yīng)了之后,這個(gè)TCP連接就關(guān)閉了;
HTTP/1.1中可以以某種方式聲明這個(gè)連接一直保持,一個(gè)請(qǐng)求傳輸完之后,另一個(gè)請(qǐng)求可以接著傳輸。這樣的好處是:在創(chuàng)建一個(gè)TCP連接的過(guò)程中需要“三次握手”的消耗,“三次握手”代表有三次網(wǎng)絡(luò)傳輸。
如果TCP連接保持,第二個(gè)請(qǐng)求發(fā)送就沒(méi)有這“三次握手”的消耗。HTTP/2中同一個(gè)TCP連接里還可以并發(fā)地傳輸http請(qǐng)求。
二、TCP報(bào)文格式簡(jiǎn)介
其中比較重要的字段有:
(1)序號(hào)(sequence number):Seq序號(hào),占32位,用來(lái)標(biāo)識(shí)從TCP源端向目的端發(fā)送的字節(jié)流,發(fā)起方發(fā)送數(shù)據(jù)時(shí)對(duì)此進(jìn)行標(biāo)記。
(2)確認(rèn)號(hào)(acknowledgement number):Ack序號(hào),占32位,只有ACK標(biāo)志位為1時(shí),確認(rèn)序號(hào)字段才有效,Ack=Seq+1。
(3)標(biāo)志位(Flags):共6個(gè),即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
· URG:緊急指針(urgent pointer)有效。
· ACK:確認(rèn)序號(hào)有效。
· PSH:接收方應(yīng)該盡快將這個(gè)報(bào)文交給應(yīng)用層。
· RST:重置連接。
· SYN:發(fā)起一個(gè)新連接。
· FIN:釋放一個(gè)連接。
需要注意的是:
· 不要將確認(rèn)序號(hào)Ack與標(biāo)志位中的ACK搞混了。
· 確認(rèn)方Ack=發(fā)起方Seq+1,兩端配對(duì)。
三、TCP的三次握手(Three-Way Handshake)1.”三次握手”的詳解
所謂的三次握手即TCP連接的建立。這個(gè)連接必須是一方主動(dòng)打開(kāi),另一方被動(dòng)打開(kāi)的。
以下為客戶(hù)端主動(dòng)發(fā)起連接的圖解:
握手之前主動(dòng)打開(kāi)連接的客戶(hù)端結(jié)束CLOSED階段,被動(dòng)打開(kāi)的服務(wù)器端也結(jié)束CLOSED階段,并進(jìn)入LISTEN階段。隨后開(kāi)始“三次握手”:
(1)首先客戶(hù)端向服務(wù)器端發(fā)送一段TCP報(bào)文,其中:
· 標(biāo)記位為SYN,表示“請(qǐng)求建立新連接”;
· 序號(hào)為Seq=X(X一般為1);
· 隨后客戶(hù)端進(jìn)入SYN-SENT階段。
(2)服務(wù)器端接收到來(lái)自客戶(hù)端的TCP報(bào)文之后,結(jié)束LISTEN階段。并返回一段TCP報(bào)文,其中:
· 標(biāo)志位為SYN和ACK,表示“確認(rèn)客戶(hù)端的報(bào)文Seq序號(hào)有效,服務(wù)器能正常接收客戶(hù)端發(fā)送的數(shù)據(jù),并同意創(chuàng)建新連接”(即告訴客戶(hù)端,服務(wù)器收到了你的數(shù)據(jù));
· 序號(hào)為Seq=y;
· 確認(rèn)號(hào)為Ack=x+1,表示收到客戶(hù)端的序號(hào)Seq并將其值加1作為自己確認(rèn)號(hào)Ack的值;隨后服務(wù)器端進(jìn)入SYN-RCVD階段。
(3)客戶(hù)端接收到來(lái)自服務(wù)器端的確認(rèn)收到數(shù)據(jù)的TCP報(bào)文之后,明確了從客戶(hù)端到服務(wù)器的數(shù)據(jù)傳輸是正常的,結(jié)束SYN-SENT階段。并返回最后一段TCP報(bào)文。其中:
· 標(biāo)志位為ACK,表示“確認(rèn)收到服務(wù)器端同意連接的信號(hào)”(即告訴服務(wù)器,我知道你收到我發(fā)的數(shù)據(jù)了);
· 序號(hào)為Seq=x+1,表示收到服務(wù)器端的確認(rèn)號(hào)Ack,并將其值作為自己的序號(hào)值;
· 確認(rèn)號(hào)為Ack=y+1,表示收到服務(wù)器端序號(hào)Seq,并將其值加1作為自己的確認(rèn)號(hào)Ack的值;
· 隨后客戶(hù)端進(jìn)入ESTABLISHED階段。
· 服務(wù)器收到來(lái)自客戶(hù)端的“確認(rèn)收到服務(wù)器數(shù)據(jù)”的TCP報(bào)文之后,明確了從服務(wù)器到客戶(hù)端的數(shù)據(jù)傳輸是正常的。結(jié)束SYN-SENT階段,進(jìn)入ESTABLISHED階段。
· 在客戶(hù)端與服務(wù)器端傳輸?shù)腡CP報(bào)文中,雙方的確認(rèn)號(hào)Ack和序號(hào)Seq的值,都是在彼此Ack和Seq值的基礎(chǔ)上進(jìn)行計(jì)算的,這樣做保證了TCP報(bào)文傳輸?shù)倪B貫性。一旦出現(xiàn)某一方發(fā)出的TCP報(bào)文丟失,便無(wú)法繼續(xù)"握手",以此確保了"三次握手"的順利完成。
· 此后客戶(hù)端和服務(wù)器端進(jìn)行正常的數(shù)據(jù)傳輸。
這就是“三次握手”的過(guò)程。
2. “三次握手”的動(dòng)態(tài)過(guò)程
3. “三次握手”的通俗理解
舉個(gè)栗子:把客戶(hù)端比作男孩,服務(wù)器比作女孩。用他們的交往來(lái)說(shuō)明“三次握手”過(guò)程:
(1)男孩喜歡女孩,于是寫(xiě)了一封信告訴女孩:我愛(ài)你,請(qǐng)和我交往吧!;寫(xiě)完信之后,男孩焦急地等待,因?yàn)椴恢佬拍芊耥樌麄鬟_(dá)給女孩。
(2)女孩收到男孩的情書(shū)后,心花怒放,原來(lái)我們是兩情相悅呀!于是給男孩寫(xiě)了一封回信:我收到你的情書(shū)了,也明白了你的心意,其實(shí),我也喜歡你!我愿意和你交往!;
寫(xiě)完信之后,女孩也焦急地等待,因?yàn)椴恢阑匦拍芊衲茼樌麄鬟_(dá)給男孩。
(3)男孩收到回信之后很開(kāi)心,因?yàn)榘l(fā)出的情書(shū)女孩收到了,并且從回信中知道了女孩喜歡自己,并且愿意和自己交往。然后男孩又寫(xiě)了一封信告訴女孩:你的心意和信我都收到了,謝謝你,還有我愛(ài)你!
女孩收到男孩的回信之后,也很開(kāi)心,因?yàn)榘l(fā)出的情書(shū)男孩收到了。由此男孩女孩雙方都知道了彼此的心意,之后就快樂(lè)地交流起來(lái)了~~
這就是通俗版的“三次握手”,期間一共往來(lái)了三封信也就是“三次握手”,以此確認(rèn)兩個(gè)方向上的數(shù)據(jù)傳輸通道是否正常。
4. 為什么要進(jìn)行第三次握手?
為了防止服務(wù)器端開(kāi)啟一些無(wú)用的連接增加服務(wù)器開(kāi)銷(xiāo)以及防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)端,因而產(chǎn)生錯(cuò)誤。
由于網(wǎng)絡(luò)傳輸是有延時(shí)的(要通過(guò)網(wǎng)絡(luò)光纖和各種中間代理服務(wù)器),在傳輸?shù)倪^(guò)程中,比如客戶(hù)端發(fā)起了SYN=1創(chuàng)建連接的請(qǐng)求(第一次握手)。
如果服務(wù)器端就直接創(chuàng)建了這個(gè)連接并返回包含SYN、ACK和Seq等內(nèi)容的數(shù)據(jù)包給客戶(hù)端,這個(gè)數(shù)據(jù)包因?yàn)榫W(wǎng)絡(luò)傳輸?shù)脑騺G失了,丟失之后客戶(hù)端就一直沒(méi)有接收到服務(wù)器返回的數(shù)據(jù)包。
客戶(hù)端可能設(shè)置了一個(gè)超時(shí)時(shí)間,時(shí)間到了就關(guān)閉了連接創(chuàng)建的請(qǐng)求。再重新發(fā)出創(chuàng)建連接的請(qǐng)求,而服務(wù)器端是不知道的,如果沒(méi)有第三次握手告訴服務(wù)器端客戶(hù)端收的到服務(wù)器端傳輸?shù)臄?shù)據(jù)的話,
服務(wù)器端是不知道客戶(hù)端有沒(méi)有接收到服務(wù)器端返回的信息的。
這個(gè)過(guò)程可理解為:
這樣沒(méi)有給服務(wù)器端一個(gè)創(chuàng)建還是關(guān)閉連接端口的請(qǐng)求,服務(wù)器端的端口就一直開(kāi)著,等到客戶(hù)端因超時(shí)重新發(fā)出請(qǐng)求時(shí),服務(wù)器就會(huì)重新開(kāi)啟一個(gè)端口連接。那么服務(wù)器端上沒(méi)有接收到請(qǐng)求數(shù)據(jù)的上一個(gè)端口就一直開(kāi)著,長(zhǎng)此以往,這樣的端口多了,就會(huì)造成服務(wù)器端開(kāi)銷(xiāo)的嚴(yán)重浪費(fèi)。
還有一種情況是已經(jīng)失效的客戶(hù)端發(fā)出的請(qǐng)求信息,由于某種原因傳輸?shù)搅朔?wù)器端,服務(wù)器端以為是客戶(hù)端發(fā)出的有效請(qǐng)求,接收后產(chǎn)生錯(cuò)誤。
所以我們需要“第三次握手”來(lái)確認(rèn)這個(gè)過(guò)程,讓客戶(hù)端和服務(wù)器端能夠及時(shí)地察覺(jué)到因?yàn)榫W(wǎng)絡(luò)等一些問(wèn)題導(dǎo)致的連接創(chuàng)建失敗,這樣服務(wù)器端的端口就可以關(guān)閉了不用一直等待。
也可以這樣理解:“第三次握手”是客戶(hù)端向服務(wù)器端發(fā)送數(shù)據(jù),這個(gè)數(shù)據(jù)就是要告訴服務(wù)器,客戶(hù)端有沒(méi)有收到服務(wù)器“第二次握手”時(shí)傳過(guò)去的數(shù)據(jù)。若發(fā)送的這個(gè)數(shù)據(jù)是“收到了”的信息,接收后服務(wù)器就正常建立TCP連接,否則建立TCP連接失敗,服務(wù)器關(guān)閉連接端口。由此減少服務(wù)器開(kāi)銷(xiāo)和接收到失效請(qǐng)求發(fā)生的錯(cuò)誤。
5. 抓包驗(yàn)證
下面是用抓包工具抓到的一些數(shù)據(jù)包,可用來(lái)分析TCP的三次握手:
圖中顯示的就是完整的TCP連接的”三次握手”過(guò)程。在52528 -> 80中,52528是本地(客戶(hù)端)端口,80是服務(wù)器的端口。80端口和52528端口之間的三次來(lái)回就是"三次握手"過(guò)程。
· 注意到”第一次握手”客戶(hù)端發(fā)送的TCP報(bào)文中以[SYN]作為標(biāo)志位,并且客戶(hù)端序號(hào)Seq=0;
· 接下來(lái)”第二次握手”服務(wù)器返回的TCP報(bào)文中以[SYN,ACK]作為標(biāo)志位;并且服務(wù)器端序號(hào)Seq=0;確認(rèn)號(hào)Ack=1(“第一次握手”中客戶(hù)端序號(hào)Seq的值+1);
· 最后”第三次握手”客戶(hù)端再向服務(wù)器端發(fā)送的TCP報(bào)文中以[ACK]作為標(biāo)志位;其中客戶(hù)端序號(hào)Seq=1(“第二次握手”中服務(wù)器端確認(rèn)號(hào)Ack的值);確認(rèn)號(hào)Ack=1(“第二次握手”中服務(wù)器端序號(hào)Seq的值+1)。
這就完成了”三次握手”的過(guò)程,符合前面分析的結(jié)果。
四、TCP的四次揮手(Four-Way Wavehand)
1. 前言
對(duì)于"三次握手"我們耳熟能詳,因?yàn)槠湎鄬?duì)的簡(jiǎn)單。但是,我們卻不常聽(tīng)見(jiàn)“四次揮手”,就算聽(tīng)過(guò)也未必能詳細(xì)地說(shuō)明白它的具體過(guò)程。
下面就為大家詳盡,直觀,完整地介紹“四次揮手”的過(guò)程。
2. “四次揮手”的詳解
所謂的四次揮手即TCP連接的釋放(解除)。連接的釋放必須是一方主動(dòng)釋放,另一方被動(dòng)釋放。以下為客戶(hù)端主動(dòng)發(fā)起釋放連接的圖解:
揮手之前主動(dòng)釋放連接的客戶(hù)端結(jié)束ESTABLISHED階段。隨后開(kāi)始“四次揮手”:
(1)首先客戶(hù)端想要釋放連接,向服務(wù)器端發(fā)送一段TCP報(bào)文,其中:
· 標(biāo)記位為FIN,表示“請(qǐng)求釋放連接“;
· 序號(hào)為Seq=U;
· 隨后客戶(hù)端進(jìn)入FIN-WAIT-1階段,即半關(guān)閉階段。并且停止在客戶(hù)端到服務(wù)器端方向上發(fā)送數(shù)據(jù),但是客戶(hù)端仍然能接收從服務(wù)器端傳輸過(guò)來(lái)的數(shù)據(jù)。
注意:這里不發(fā)送的是正常連接時(shí)傳輸?shù)臄?shù)據(jù)(非確認(rèn)報(bào)文),而不是一切數(shù)據(jù),所以客戶(hù)端仍然能發(fā)送ACK確認(rèn)報(bào)文。
(2)服務(wù)器端接收到從客戶(hù)端發(fā)出的TCP報(bào)文之后,確認(rèn)了客戶(hù)端想要釋放連接,隨后服務(wù)器端結(jié)束ESTABLISHED階段,進(jìn)入CLOSE-WAIT階段(半關(guān)閉狀態(tài))并返回一段TCP報(bào)文,其中:
· 標(biāo)記位為ACK,表示“接收到客戶(hù)端發(fā)送的釋放連接的請(qǐng)求”;
· 序號(hào)為Seq=V;
· 確認(rèn)號(hào)為Ack=U+1,表示是在收到客戶(hù)端報(bào)文的基礎(chǔ)上,將其序號(hào)Seq值加1作為本段報(bào)文確認(rèn)號(hào)Ack的值;
· 隨后服務(wù)器端開(kāi)始準(zhǔn)備釋放服務(wù)器端到客戶(hù)端方向上的連接。
客戶(hù)端收到從服務(wù)器端發(fā)出的TCP報(bào)文之后,確認(rèn)了服務(wù)器收到了客戶(hù)端發(fā)出的釋放連接請(qǐng)求,隨后客戶(hù)端結(jié)束FIN-WAIT-1階段,進(jìn)入FIN-WAIT-2階段
前"兩次揮手"既讓服務(wù)器端知道了客戶(hù)端想要釋放連接,也讓客戶(hù)端知道了服務(wù)器端了解了自己想要釋放連接的請(qǐng)求。于是,可以確認(rèn)關(guān)閉客戶(hù)端到服務(wù)器端方向上的連接了
(3)服務(wù)器端自從發(fā)出ACK確認(rèn)報(bào)文之后,經(jīng)過(guò)CLOSED-WAIT階段,做好了釋放服務(wù)器端到客戶(hù)端方向上的連接準(zhǔn)備,再次向客戶(hù)端發(fā)出一段TCP報(bào)文,其中:
· 標(biāo)記位為FIN,ACK,表示“已經(jīng)準(zhǔn)備好釋放連接了”。注意:這里的ACK并不是確認(rèn)收到服務(wù)器端報(bào)文的確認(rèn)報(bào)文。
· 序號(hào)為Seq=W;
· 確認(rèn)號(hào)為Ack=U+1;表示是在收到客戶(hù)端報(bào)文的基礎(chǔ)上,將其序號(hào)Seq值加1作為本段報(bào)文確認(rèn)號(hào)Ack的值。
隨后服務(wù)器端結(jié)束CLOSE-WAIT階段,進(jìn)入LAST-ACK階段。并且停止在服務(wù)器端到客戶(hù)端的方向上發(fā)送數(shù)據(jù),但是服務(wù)器端仍然能夠接收從客戶(hù)端傳輸過(guò)來(lái)的數(shù)據(jù)。
(4)客戶(hù)端收到從服務(wù)器端發(fā)出的TCP報(bào)文,確認(rèn)了服務(wù)器端已做好釋放連接的準(zhǔn)備,結(jié)束FIN-WAIT-2階段,進(jìn)入TIME-WAIT階段,并向服務(wù)器端發(fā)送一段報(bào)文,其中:
· 標(biāo)記位為ACK,表示“接收到服務(wù)器準(zhǔn)備好釋放連接的信號(hào)”。
· 序號(hào)為Seq=U+1;表示是在收到了服務(wù)器端報(bào)文的基礎(chǔ)上,將其確認(rèn)號(hào)Ack值作為本段報(bào)文序號(hào)的值。
· 確認(rèn)號(hào)為Ack=W+1;表示是在收到了服務(wù)器端報(bào)文的基礎(chǔ)上,將其序號(hào)Seq值作為本段報(bào)文確認(rèn)號(hào)的值。
· 隨后客戶(hù)端開(kāi)始在TIME-WAIT階段等待2MSL
為什么要客戶(hù)端要等待2MSL呢?見(jiàn)后文。
服務(wù)器端收到從客戶(hù)端發(fā)出的TCP報(bào)文之后結(jié)束LAST-ACK階段,進(jìn)入CLOSED階段。由此正式確認(rèn)關(guān)閉服務(wù)器端到客戶(hù)端方向上的連接。
客戶(hù)端等待完2MSL之后,結(jié)束TIME-WAIT階段,進(jìn)入CLOSED階段,由此完成“四次揮手”。
后“兩次揮手”既讓客戶(hù)端知道了服務(wù)器端準(zhǔn)備好釋放連接了,也讓服務(wù)器端知道了客戶(hù)端了解了自己準(zhǔn)備好釋放連接了。于是,可以確認(rèn)關(guān)閉服務(wù)器端到客戶(hù)端方向上的連接了,由此完成“四次揮手”。
與“三次揮手”一樣,在客戶(hù)端與服務(wù)器端傳輸?shù)腡CP報(bào)文中,雙方的確認(rèn)號(hào)Ack和序號(hào)Seq的值,都是在彼此Ack和Seq值的基礎(chǔ)上進(jìn)行計(jì)算的,這樣做保證了TCP報(bào)文傳輸?shù)倪B貫性,一旦出現(xiàn)某一方發(fā)出的TCP報(bào)文丟失,便無(wú)法繼續(xù)"揮手",以此確保了"四次揮手"的順利完成。
3. “四次揮手”的通俗理解
舉個(gè)栗子:把客戶(hù)端比作男孩,服務(wù)器比作女孩。通過(guò)他們的分手來(lái)說(shuō)明“四次揮手”過(guò)程。
· "第一次揮手":日久見(jiàn)人心,男孩發(fā)現(xiàn)女孩變成了自己討厭的樣子,忍無(wú)可忍,于是決定分手,隨即寫(xiě)了一封信告訴女孩。
· “第二次揮手”:女孩收到信之后,知道了男孩要和自己分手,怒火中燒,心中暗罵:你算什么東西,當(dāng)初你可不是這個(gè)樣子的!于是立馬給男孩寫(xiě)了一封回信:分手就分手,給我點(diǎn)時(shí)間,我要把你的東西整理好,全部還給你!男孩收到女孩的第一封信之后,明白了女孩知道自己要和她分手。隨后等待女孩把自己的東西收拾好。
· “第三次揮手”:過(guò)了幾天,女孩把男孩送的東西都整理好了,于是再次寫(xiě)信給男孩:你的東西我整理好了,快把它們拿走,從此你我恩斷義絕!
· “第四次揮手”:男孩收到女孩第二封信之后,知道了女孩收拾好東西了,可以正式分手了,于是再次寫(xiě)信告訴女孩:我知道了,這就去拿回來(lái)!
這里雙方都有各自的堅(jiān)持。
· 女孩自發(fā)出第二封信開(kāi)始,限定一天內(nèi)收不到男孩回信,就會(huì)再發(fā)一封信催促男孩來(lái)取東西!
· 男孩自發(fā)出第二封信開(kāi)始,限定兩天內(nèi)沒(méi)有再次收到女孩的信就認(rèn)為,女孩收到了自己的第二封信;若兩天內(nèi)再次收到女孩的來(lái)信,就認(rèn)為自己的第二封信女孩沒(méi)收到,需要再寫(xiě)一封信,再等兩天…..
倘若雙方信都能正常收到,最少只用四封信就能徹底分手!這就是“四次揮手”。
4. 為什么“握手”是三次,“揮手”卻要四次?
TCP建立連接時(shí)之所以只需要"三次握手",是因?yàn)樵诘诙?quot;握手"過(guò)程中,服務(wù)器端發(fā)送給客戶(hù)端的TCP報(bào)文是以SYN與ACK作為標(biāo)志位的。SYN是請(qǐng)求連接標(biāo)志,表示服務(wù)器端同意建立連接;ACK是確認(rèn)報(bào)文,表示告訴客戶(hù)端,服務(wù)器端收到了它的請(qǐng)求報(bào)文。
即SYN建立連接報(bào)文與ACK確認(rèn)接收?qǐng)?bào)文是在同一次"握手"當(dāng)中傳輸?shù)模?quot;三次握手"不多也不少,正好讓雙方明確彼此信息互通。
TCP釋放連接時(shí)之所以需要“四次揮手”,是因?yàn)镕IN釋放連接報(bào)文與ACK確認(rèn)接收?qǐng)?bào)文是分別由第二次和第三次"握手"傳輸?shù)摹楹谓⑦B接時(shí)一起傳輸,釋放連接時(shí)卻要分開(kāi)傳輸?
· 建立連接時(shí),被動(dòng)方服務(wù)器端結(jié)束CLOSED階段進(jìn)入“握手”階段并不需要任何準(zhǔn)備,可以直接返回SYN和ACK報(bào)文,開(kāi)始建立連接。
· 釋放連接時(shí),被動(dòng)方服務(wù)器,突然收到主動(dòng)方客戶(hù)端釋放連接的請(qǐng)求時(shí)并不能立即釋放連接,因?yàn)檫€有必要的數(shù)據(jù)需要處理,所以服務(wù)器先返回ACK確認(rèn)收到報(bào)文,經(jīng)過(guò)CLOSE-WAIT階段準(zhǔn)備好釋放連接之后,才能返回FIN釋放連接報(bào)文。
所以是“三次握手”,“四次揮手”。
5. 為什么客戶(hù)端在TIME-WAIT階段要等2MSL?
為的是確認(rèn)服務(wù)器端是否收到客戶(hù)端發(fā)出的ACK確認(rèn)報(bào)文
當(dāng)客戶(hù)端發(fā)出最后的ACK確認(rèn)報(bào)文時(shí),并不能確定服務(wù)器端能夠收到該段報(bào)文。所以客戶(hù)端在發(fā)送完ACK確認(rèn)報(bào)文之后,會(huì)設(shè)置一個(gè)時(shí)長(zhǎng)為2MSL的計(jì)時(shí)器。MSL指的是Maximum Segment Lifetime:一段TCP報(bào)文在傳輸過(guò)程中的最大生命周期。2MSL即是服務(wù)器端發(fā)出為FIN報(bào)文和客戶(hù)端發(fā)出的ACK確認(rèn)報(bào)文所能保持有效的最大時(shí)長(zhǎng)。
服務(wù)器端在1MSL內(nèi)沒(méi)有收到客戶(hù)端發(fā)出的ACK確認(rèn)報(bào)文,就會(huì)再次向客戶(hù)端發(fā)出FIN報(bào)文;
· 如果客戶(hù)端在2MSL內(nèi),再次收到了來(lái)自服務(wù)器端的FIN報(bào)文,說(shuō)明服務(wù)器端由于各種原因沒(méi)有接收到客戶(hù)端發(fā)出的ACK確認(rèn)報(bào)文。客戶(hù)端再次向服務(wù)器端發(fā)出ACK確認(rèn)報(bào)文,計(jì)時(shí)器重置,重新開(kāi)始2MSL的計(jì)時(shí);
· 否則客戶(hù)端在2MSL內(nèi)沒(méi)有再次收到來(lái)自服務(wù)器端的FIN報(bào)文,說(shuō)明服務(wù)器端正常接收了ACK確認(rèn)報(bào)文,客戶(hù)端可以進(jìn)入CLOSED階段,完成“四次揮手”。
所以,客戶(hù)端要經(jīng)歷時(shí)長(zhǎng)為2SML的TIME-WAIT階段;這也是為什么客戶(hù)端比服務(wù)器端晚進(jìn)入CLOSED階段的原因
6. 抓包驗(yàn)證
 
圖中顯示的就是完整的TCP連接釋放的”四次揮手”過(guò)程。在 80 -> 55389 中,假設(shè)80是本地(客戶(hù)端)端口,55389是服務(wù)器端口。80端口與55389之間的四次來(lái)回就是"四次揮手"過(guò)程。
· ”第一次揮手”客戶(hù)端發(fā)送的FIN請(qǐng)求釋放連接報(bào)文以[FIN,ACK]作為標(biāo)志位,其中報(bào)文序號(hào)Seq=2445;確認(rèn)號(hào)Ack=558;
注意:這里與“第三次握手”的ACK并不是表示確認(rèn)的ACK報(bào)文。
· ”第二次揮手”服務(wù)器端返回的ACK確認(rèn)報(bào)文以[ACK]作為標(biāo)志位;其中報(bào)文序號(hào)Seq=558;確認(rèn)號(hào)Ack=2246;
· ”第三次揮手”服務(wù)器端繼續(xù)返回的FIN同意釋放連接報(bào)文以[FIN,ACK]作為標(biāo)志位;其中報(bào)文序號(hào)Seq=558;確認(rèn)號(hào)Ack=2246;
· ”第四次揮手”客戶(hù)端發(fā)出的ACK確認(rèn)接收?qǐng)?bào)文以[ACK]作為標(biāo)志位;其中報(bào)文序號(hào)Seq=2446;確認(rèn)號(hào)Ack=559;
后一次“揮手”傳輸報(bào)文中的序號(hào)Seq值等于前一次"握手"傳輸報(bào)文中的確認(rèn)號(hào)Ack值;
后一次“揮手”傳輸報(bào)文中的確認(rèn)號(hào)Ack值等于前一次"握手"傳輸報(bào)文中的序號(hào)Seq值;
故這是連續(xù)的“四次揮手”過(guò)程,與前面的分析相符

相關(guān)文章

IT外包服務(wù)
二維碼 關(guān)閉
主站蜘蛛池模板: 免费观看丰满少妇做爰视频 | 欧美日韩视频免费看 | 亚洲色大成网站WWW永久网 | 一区二区三区视频在线观看视频 | 极品新婚夜少妇真紧 | 国色天香成人网 | 亚洲激情视频在线观看 | 免费在线视频一区二区 | 婷婷久久精品一区二区 | 亚洲最大无码中文字幕网站 | 生活片毛片| 中文字幕第一页亚洲 | 国产日韩1区 | 91sex国产| 免费观看黄色一级大片 | 久久久久久妓女精品影院 | 一区二区久久精品66国产精品 | 欧美综合a| 久久久久久久不卡 | 蜜臀aⅴ一区二区三区妖精视频 | 男人添女人下身视频高清 | videos性欧美另类高清 | 三个男吃我奶头一边一个视频 | 午夜亚洲国产理论片无码片 | 91av中文字幕| 嫩草影院在线观看免费 | 亚洲精品国产精品乱码不99按摩 | 日韩欧美毛片免费观看 | 一级片九九 | 无码高潮又爽又黄A片软件 精品国产AV无码一区二区三区 | 国产盗摄一区二区三区在线 | 色吧在线视频 | av72成人| 亚洲AV色男人的天堂在线观看 | 免费在线视频一区二区 | 中文字幕在线不卡精品视频99 | 国产一级黄色片免费 | 日本在线A一区视频高清视频 | 老司机色视频 | 欧美日韩在线一区 | 国产精品午夜无码体验区 |