TCP協議三次握手協議

2021-08-13 04:39:38 字數 1051 閱讀 8398

connecttimeout:指http建立通道的時間,我們知道http底層是基於tcp/ip協議的,而tcp協議有個三次握手協議,所謂三次握手簡單的理解為

客戶端問服務端:我要準備給你發資料了,你準備好了麼

服務端向客戶端回答:我準備好了,你可以發資料了

客戶端回答服務端:我收到你的訊息了,我要發資料了

然後巴拉巴拉一堆資料過去了。 這裡就能看出來,只有這三次握手建立後,才能開始傳送資料,否則資料是無法傳送的,那麼建立這個通道的時間就叫做connecttimeout,想一想,如果我們網路不好,平均建立這個通道就要10秒,結果我們**中設定的這個時間是5秒,那麼這個連線永遠建立不起來,建立到一半,就中斷了。

writetimeout:基於前面的通道建立完成後,客戶端終於可以向服務端傳送資料了,客戶端傳送資料是不是要把資料寫出去啊,所以叫寫入時間,突然,伺服器掛了,客戶端能知道伺服器掛了麼,不知道的,所以客戶端還在繼續傻傻的向服務端寫資料,可是服務端能收到這個資料麼,肯定收不到,服務端都掛了,怎麼收,同樣的,客戶端這個資料其實是寫不出去的,客戶端又寫不出去,他又不知道服務端不能接受資料了,難道要一直這麼等著服務端緩過來?肯定是不可能的哈,這樣會造成資源的極端浪費,所以這個時候就有個writetimeout時間控制這個傻傻的客戶端要等服務端多長時間。

readtimeout:繼續前面的,現在通道連線建立完成了,客戶端也終於把資料發給服務端了,服務端巴拉巴拉一頓計算,把客戶端需要的資料準備好了,準備返回給客戶端。but,要搞事情了,網路不通或者客戶端出了毛病,客戶端無法接受到服務端的資料了,模擬之前的分析,客戶端要這麼傻傻的等著服務端發資料麼,就算你等著他也發不過來了是不,這時候就有了個readtimeout時間來控制這個過程,告訴客戶端收不到服務端的資料時,要傻傻等多久。

現在這三個時間我們都有了印象,他是控制了http進行資料互動的三個階段的超時時間,試想一下,假如我們把這三個時間都設定為一分鐘,那麼最壞最巧合的時候,剛好connecttimeout要超時候,啪,連上了,然後剛好writetimeout要超時的時候,啪,資料發出去了,然後又剛好readtimeout要超時的時候,啪,資料收到了,所以你等了三分鐘,依然沒有超時,資料還能正常收到。

TCP三次握手協議

摘自 syn攻擊原理以及防範技術 tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack ...

TCP三次握手協議

在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個syn包 syn k 即...

TCP協議三次握手

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