關閉tcp連線的前奏
四次揮手
1、客戶端傳送連線關閉的報文(此時已停止傳送資料)(第一次揮手)
報文首部: fin=1(序列號seq=u)
此刻: 客戶端進入終止等待(fin-wait-1)狀態
2、伺服器收到連線關閉報文,並傳送確認報文(第二次揮手)
報文首部: ack=1 ack=u+1 (確認fin) (序號為seq=v)
此刻: 服務端進入關閉等待(close-wait)狀態
3、客戶端收到伺服器的確認請求後,客戶端進入終止等待2(fin-wait-2)狀態(伺服器 在這期間還要確認客戶端所需要的資料是否真的傳送完畢了,如果還沒傳送完,則繼續傳送資料)
4、伺服器確認資料已傳送完畢後,向客戶端傳送連線關閉報文(第三次揮手),伺服器進 入最後確認(last-ack)狀態
報文首部: fin=1 ack=1 ack=u+1(確認上一次資料報)序列號seq=w
5、客戶端收到伺服器的連線關閉報文後,發出接受確認報文(第四次揮手),客戶端進入時間等待狀態(time-wait)
報文首部: ack=1 ack=w+1(確認上一次資料報) 序列號seq=u+1
6、伺服器收到客戶端發的確認,立即進入tcp關閉狀態(close),tcp連線結束,tcp關閉,服務端要比客戶端早一些)
timw-wait時長: 2msl maximum segment lifetime 最大報文生存時間
同源策略
如果在2msl之內沒有接收到第三次揮手,那就證明服務端接收到第四次揮手,如果服務端並沒有收到第四次揮手,重新在傳送第三次揮手
tcp 四次揮手 TCP四次揮手
tcp斷開連線的過程 客戶端傳送fin報文,表明客戶端將不在傳送資料。具體過程 把fin標誌位改為1,序號seq u,之前傳送的資料加1,這裡規定即使不攜帶資料序號也要 1。該過程中客戶端通過close系統呼叫從established狀態進入fin wait 1狀態。第二次揮手 服務端收到客戶端發來...
TCP四次揮手
純給自己看的 發起關閉的一方是客戶端,被動關閉的一方是伺服器。1 客戶端a傳送乙個fin 1,用來關閉客戶a到伺服器b的資料傳送。圖上畫的對,還有乙個seq n 2 伺服器b收到這個fin,它發回乙個ack 1,確認序號ack為收到的序號加1。3 伺服器b關閉與客戶端a的連線,傳送乙個fin 1給客...
簡述四次揮手
由於tcp連線是全雙工的,斷開乙個tcp連線,需要客戶端與伺服器傳送四個包來確認連線的斷開 因為tcp是全雙工的,因此,每個方向都要單獨關閉 當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,收到乙個fin只是意味著 一方向不會再收到資料了,但是這個tcp連線上仍然能夠傳送資料,直到這一...