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