2013-09-20 14 views
2

有一個產品(將保持未命名),遭受特殊功能/問題。 如果超載,它會丟棄新的SYN數據包。對某些人來說這似乎不合理。其他人似乎不可思議。是因爲它可能。連續丟棄SYN數據包時,最大重試次數是多少?

上游TCP客戶端在放棄之前會重試發送SYN多少次?這個數字是基於RFC還是標準?還是僅僅是行業標準?

SCTP和INIT怎麼樣?

+0

TCP通常使用超時而不是重試限制。具體細節取決於實施。 – Barmar

+0

這個問題似乎是脫離主題,因爲它不是關於編程。 – Barmar

+0

感謝有關超時與重試限制的信息。這很有用。 –

回答

2
  1. 默認的TCP連接超時是您的問題的基礎主題,依賴於平臺在客戶端,大約一分鐘。這被編碼到connect()系統調用中,使用8,16,32秒的超時時間進行3次重試,具體取決於實現。 TCP堆棧也可以在重新啓動之前自行重試,因此可能需要嘗試幾次,才能最終生效。在超載情況下平臺丟棄SYN數據包沒有任何問題。 Unix已經這樣做了三十年,所以它現在不會突然成爲問題。這是一個平臺操作,而不是產品操作,所以你提到的祕密未命名產品並不是罪魁禍首,除非它是一個操作系統。我不明白爲什麼它不能在這裏命名。

+0

謝謝EJP。這非常有用。從四處搜索,我注意到Linux上還有一個名爲net.ipv4.tcp_syn_retries的sysctl參數,這似乎是導致此行爲的原因。 –