報文在三次握手過程中丟失怎麼辦?

2021-10-22 12:23:38 字數 959 閱讀 1608

• 第一次:計算機(第一台計算機)傳送syn=1的請求報文,此時第一台計算機進入syn sent狀態,等待伺服器(第二台計算機)確認。

//此時如果報文丟失傳送不到對端會如何?

第一台計算機傳送報文之後會啟動乙個定時器,在超時之後未收到伺服器端的確認,會再次傳送syn請求,

每次嘗試的時間會是第一次的二倍,如果總的總嘗試時間為75秒,此次建立鏈結失敗。

//為啥要連帶傳送syn報文?

tcp是全雙工通訊,協議規定當收到建立鏈結請求後必須返回序列號,同時建立本端到對端的通訊鏈結。

這也叫做捎帶應答機制。

//如果第二次報文丟失怎麼辦?

在傳送完ack+syn報文後會啟動乙個定時器,超時沒有收到ack確認,會再次傳送,會進行多次重試。

超時時間依舊每次翻倍,重試次數可設定。

修改 /proc/sys/net/ipv4/tcp_synack_retries 的值 

• 第三次:c端收到s端發的ack+syn報文,需要返回乙個應答ack的報文,此時該連線會進入半連線狀態的佇列,當s端收到ack後,一條完整的全雙工tcp鏈結建立完成,雙方進入established狀態。

這裡有個常用攻擊手段,攻擊者偽造乙個syn請求傳送給服務端,服務端響應之後,會收不到c端的ack確認,

服務端會不斷的重試,缺省會重試五次。

此時服務端會維持這個鏈結的所有資源,如果有大量這樣的請求,服務端的資源會被耗完。

這就是dos攻擊。

//如果第三次報文丟失怎麼辦?

s端在發出ack+syn報文後會啟動乙個定時器,在超時觸發還沒收到ack就確認是丟失了,會重試一次傳送。

TCP三次握手過程

幾個概念 ack 僅當ack 1時確認欄位才有效,當ack 0時確認字段無效,並且tcp規定,在連線建立後所有的傳送報文段都必須要把ack置為1 syn 同步序列號,用來發起乙個連線。當syn 1而ack 0時表明這是乙個請求報文段 若對方同意連線,則響應報文中syn 1,ack 1 tcp三次握手...

TCP三次握手過程

握手過程主要使用tcp協議的標誌flag syn和ack 傳送端 將乙個標有syn synchronize 的資料報傳送至接收端。接收端 接收到帶有syn的資料報後,返回乙個標有syn ack acknowledgement 的資料報 傳送端 收到後傳送標有ack的資料報,代表握手結束。如果握手過程...

TCP IP TCP三次握手過程

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種標示 syn synchronous建立聯機 ack acknowledgement 確認 psh push傳送 fin finish結束 rst reset重置 urg urgent緊急...