一、TCP四次揮手的例子
男生女生建立戀愛(ài)關(guān)系,一段時(shí)間后,他們要分手了。
1.男生:請(qǐng)求分手:我想跟你分手了,可以么?
2.女生收到了消息,發(fā)一個(gè)確認(rèn)消息:我收到了你的消息,我同意跟你分手。
3.女生還要繼續(xù)發(fā)一個(gè)消息,請(qǐng)求分手:我也想跟你分手。
4.男生確認(rèn)消息:我也收到分手消息,就分手。
這樣他們兩個(gè)之間就沒(méi)有什么關(guān)系。這樣一個(gè)過(guò)程同樣像極了TCP要斷開(kāi)連接的過(guò)程。
二、TCP四次揮手的過(guò)程
客戶端和服務(wù)端正在進(jìn)行消息的發(fā)送。直到有一方消息發(fā)送完畢,發(fā)一個(gè)FIN包,表示我的報(bào)文發(fā)送完畢了。我想釋放連接,主動(dòng)發(fā)了一個(gè)釋放連接的請(qǐng)求。
**客戶端向服務(wù)器端主動(dòng)發(fā)了一個(gè)釋放連接的請(qǐng)求:標(biāo)志位FIN=1;seq=n** (這幾個(gè)標(biāo)志位里面哪個(gè)位置會(huì)被標(biāo)志為1呢?要發(fā)一個(gè)FIN包,F(xiàn)IN位要被標(biāo)記為1。每個(gè)包都有序號(hào),這個(gè)包的序號(hào)是seq=n,請(qǐng)求發(fā)給了服務(wù)器。)
發(fā)給服務(wù)器后,服務(wù)器回復(fù)一個(gè)確認(rèn)包,確認(rèn)消息:標(biāo)志位ACK=1;ack(確認(rèn)號(hào))=n+1;(n指的是上面收到包的序號(hào)。)
**我收到了你這個(gè)釋放連接的請(qǐng)求,我也同意。我也要發(fā)一個(gè)主動(dòng)請(qǐng)求釋放連接的報(bào)文:標(biāo)志位FIN=1;seq=m**
客戶端要進(jìn)行一個(gè)確認(rèn)消息:標(biāo)志位ACK=1;ack(確認(rèn)號(hào))=m+1 (ACK位要置1。這個(gè)確認(rèn)號(hào)是對(duì)要求請(qǐng)求釋放連接的一個(gè)確認(rèn),所以確認(rèn)號(hào)等于上一個(gè)包的序號(hào)加一。)
TCP四次揮手的過(guò)程就完成了。
三、TCP四次揮手的狀態(tài)
1.剛開(kāi)始是建立連接的狀態(tài)。發(fā)送報(bào)文,直到客戶端發(fā)送完畢了想釋放連接。所以發(fā)了個(gè)FIN包過(guò)去給服務(wù)端。
2.客戶端就進(jìn)入等待對(duì)方給我一個(gè)確認(rèn)的狀態(tài),服務(wù)端收到FIN之后給它進(jìn)行了一個(gè)回應(yīng)。發(fā)送了一個(gè)ack的確認(rèn)包。發(fā)完確認(rèn)包,就進(jìn)入已經(jīng)知道這個(gè)連接應(yīng)該會(huì)被斷開(kāi)的狀態(tài),就是等待連接關(guān)閉的一個(gè)狀態(tài)。
3.客戶端再次進(jìn)入等待服務(wù)端給我發(fā)FIN包。服務(wù)端發(fā)完ack和FIN,也要釋放連接。告訴客戶端之后,就進(jìn)入最后等待的時(shí)間。最后等待客戶端給我發(fā)確認(rèn)包。
4.客戶端收到了服務(wù)器發(fā)的FIN之后,就會(huì)發(fā)一個(gè)ack包回去,之后自己就進(jìn)入等待一定的時(shí)間之后再去關(guān)閉。服務(wù)器這邊一旦收到客戶端的確認(rèn)消息,立馬進(jìn)入關(guān)閉狀態(tài)。
5.客戶端這邊發(fā)完ack之后,等待一定的時(shí)間,確認(rèn)服務(wù)器這邊已經(jīng)收到我的消息并且關(guān)閉之后,我再去關(guān)閉就可以了。
-
TCP通信
+關(guān)注
關(guān)注
0文章
146瀏覽量
4221
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論