TCP三次握手和四次揮手以及拓展(幫助理解)

2021-09-26 23:07:46 字數 1362 閱讀 7850

msl:報文段最大生存時間,通常msl的常用值為30秒,1分鐘,2分鐘

握手與揮手在下面描述,請不要走開

自己yy的:因為服務端傳送fin訊號之後,開始等待客戶端發來的確認資訊,客戶端在接收到之後,開始傳送報文段給服務端,而最大報文壽命(生存時間)是也就是msl內之後,如果伺服器沒收到,說明這個包肯定丟失了,所以就可以給客戶端重發請求,此時客戶端正好處於1msl~2msl等待時間之間,正好可以重發一次,我真是個天才

剛開始客戶端已經準備好了之後給服務端傳送乙個seq序號)=u,syn=1說明自己來意:我想建立連線!

服務端收到後,已經知道客戶端準備好了接收資料了,就將確認訊號ack設定為1,確認收到客戶端資料的訊號ack=u+1(我收到了你的資料,下一次請從u+1開始發),自己要發的訊號seq=w(我要發資料的起始位置)給客戶端,說明自己接收到了資料,並要建立連線給客戶端發資料~

客戶端再確認一遍(ack=1,seq=u+1,ack=w+1),連線就建立起來了

而斷開連線時,客戶端傳送fin=1,seq=u(最後的資料)訊號來說明來意,表示自己不會再發訊號給服務端,服務端傳送確認訊號,說你的資料我收到了ack=u+1,確認關閉連線ack=1,然後把自己的資料附帶上seq=w,客戶端接收到之後,知道伺服器已經收到,便關閉了寫連線,因為自己沒什麼發的了,但是還是可以收資料的,等伺服器把資料發完之後,向客戶端傳送fin=1,seq=y表示這是最後的資料了,客戶端收到之後,確認,但是又不放心服務端是不是能收到,於是說:我的資訊發給你要一分鐘,那我就等個兩分鐘看看你有沒有真的收到,如果沒收到肯定是要再給我發的,伺服器也心中有數了:你的確認我最多一分鐘就收到了,我要是等一分鐘沒收到,發的東西肯定丟失了,我就再給你發一次fin,就這樣,客戶端等了2msl之後才會關閉連線,如果伺服器沒收到,客戶端也仁至義盡了,莫得辦法

咳咳,回到正題,多出來的這一次就是握手時 服務端將ack和seq(相當於建立連線的意思吧)一起給了客戶端,因為它知道客戶端已經準備好了接收資訊了,而斷開時 將ack和fin分開了,因為服務端如果有東西還可以繼續發。

握手:客戶端請求建立 -> 伺服器確認建立+請求建立 -> 客戶端確認建立

揮手:客戶端請求關閉 -> 伺服器確認關閉 -> 伺服器確認關閉-> 客戶端確認關閉

tcp三次握手 以及四次揮手

首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了。那如何斷開連線呢?簡單的過程如下 注意 中斷連線端可以是client端,也可以是server端。假設...

tcp 四次揮手 TCP的三次握手和四次揮手

三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...

TCP三次握手和四次揮手

一 tcp三次握手 three way handshake 1 tcp三次握手的作用 三次握手的目的是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。在socket程式設計中,客戶端執行connect 時,將觸發三次握手。2 tcp三次握手過程 第一步 ...