(1)、client第乙個syn包丟失,沒有收到server的ack,則client進行持續重傳syn包。總嘗試時間為75秒。參與文獻《tcp/ip詳解 卷1:協議》p178
(2)、server收到了client的syn,並發出了syn+ack包,syn+ack包丟失。
client方面,因為沒收server的。將執**況(1);
server方面,超時時間內沒有收到client的ack包(或者資料報),會持續傳送syn+ack包;
(3)、當client端收到server的syn+ack應答後,其狀態變為established,並傳送ack包給server;
如果此時ack在網路中丟失,那麼server端該tcp連線的狀態為syn_recv,並且依次等待3秒、6秒、12秒後重新傳送syn+ack包,以便client重新傳送ack包,以便client重新傳送ack包。
server重發syn+ack包的次數,可以通過設定/proc/sys/net/ipv4/tcp_synack_retries修改,預設值為5。
如果重發指定次數後,仍然未收到ack應答,那麼一段時間後,server自動關閉這個連線。
如果此時client向server傳送資料報,server能正常接收資料。並認為連線已正常。參考:
應用層編寫socket**時,三次握手發生在client的connect,所以為了避免長時間(75秒)無響應連線,應設定為非阻塞socket,同時用select檢測設定合適的超時時間。
posted @
2019-02-20 22:13
知有 閱讀(
...)
編輯收藏
TCP三次握手 四次揮手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手 四次揮手
服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...
TCP三次握手四次揮手
tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...