客戶端:在嗎 ? (向伺服器端傳送同步包(syn))
伺服器端:在的 (向客戶端傳送確認包(ack)+同步包)
客戶端:好的 (向伺服器傳送確認包)
開始搞基···
1.客戶端:我要好了。。額額!!
2.伺服器端:好的,我也馬上了!
3.伺服器端:我也好了。。啊!!
4.客戶端:好的(索然無味)
步驟1:
客戶端傳送釋放連線報文,發出後進入fin-wait-1(終止等待1)狀 態
步驟2:
伺服器端收到釋放連線報文,發出ack,進入close-wait(關閉等待狀態),客戶端收到ack後進入fin-wait-2(終止等待2狀態)
步驟3:
伺服器傳送完資料後,傳送釋放連線報文,進入last-ack(最後確認)狀態
步驟4:
客戶端傳送ack,確定關閉,進入time-wait(時間等待)狀態,此時tcp還沒有釋放,經過2*msl(最長報文壽命)時間後,客戶端撤銷 tcb,進入close狀態,伺服器端在接收到ack後,直接進入close狀態
為什麼客戶端要經過2*msl後才能關閉
防止伺服器端沒有收到最後乙個ack,如果伺服器端在處於最後確認狀態下一直沒有收到ack,那麼會不斷傳送fin包。如果在2*msl的時間段內客戶端沒有收到fin包,那麼就關閉。
連線的時候是三次,關閉的時候是四次,為什麼?
連線的時候,伺服器端直接傳送ack+syc,關閉的時候伺服器只能先傳送ack
再傳送釋放連線報文
建立連線後,客戶端出現故障,伺服器怎麼辦
當伺服器端連續2個小時沒有接收到客戶端的資料後,每隔75s傳送一次探測報文,10次後若沒有響應,關閉連線。
三次握手四次揮手,簡單易懂。
了解三次握手四次揮手之氣那需要先先了解幾個基本知識點 1 fin 1表示此報文段的傳送方的資料已經傳送完畢,請求釋放傳輸連線。2 確認欄位號 ack 期望接收報文段的資料的第乙個位元組的序號,ack n表示序號n 1為止的所有資料都正確接收到。3 確認位 只有ack 1時確認號字段才有效,ack 0...
TCP的三次握手與四次揮手(簡化)
把我覺得比較有用的知識整合和簡化了一下 報文頭部 1 同步syn,在連線建立時用來同步序號。當syn 1,ack 0,表明是連線請求報文,若同意連線,則響應報文中應該使syn 1,ack 1 2 確認ack,僅當ack 1時,確認號字段才有效。tcp規定,在連線建立後所有報文的傳輸都必須把ack置1...
TCP的三次握手和四次揮手簡述
客戶端向伺服器傳送syn報文段,伺服器接受到,此時伺服器可以確認自己的接收能力是否正常 伺服器向客戶端傳送syn報文段和ack報文段,客戶端接收到,此時客戶端可以確認自己的傳送能力和接受能力是否正常,但是此時伺服器端只能確認自己的接收能力,並不能確認自己的傳送能力是否正常 客戶端向伺服器端傳送ack...