根據我的理解,tcp協議的性能受到RTT(往返時間)的限制。如果客戶端向服務器發送消息,則需要等待確認響應,然後才能發送序列中的下一條消息。這意味着,如果我與250ms RTT鏈接,則每秒限制爲4條消息,這對於許多應用來說非常緩慢,並且嚴重阻礙了數據傳輸速率。TCP協議,減少RTT瓶頸
解決此限制的方法有哪些?
根據我的理解,tcp協議的性能受到RTT(往返時間)的限制。如果客戶端向服務器發送消息,則需要等待確認響應,然後才能發送序列中的下一條消息。這意味着,如果我與250ms RTT鏈接,則每秒限制爲4條消息,這對於許多應用來說非常緩慢,並且嚴重阻礙了數據傳輸速率。TCP協議,減少RTT瓶頸
解決此限制的方法有哪些?
如果客戶端向服務器發送消息,它需要等待確認響應,然後才能發送序列中的下一條消息。
這是不正確的。有延遲和選擇性ACK之類的事情。
這意味着如果我在250ms RTT的鏈接上,我每秒限制在4條消息。
不,它不。
實際瓶頸是鏈路的帶寬延遲乘積。確保兩端的套接字發送和接收緩衝區至少與本產品相同。
RTT只是告訴你從發送緩衝區中驅逐數據包的延遲時間大約爲250ms。鑑於發送緩衝區足夠大,沒有什麼能夠阻止您以最大帶寬減去協議開銷進行雙向通信。
如果您不需要糾錯(即當消息到達太晚時,您的消息就沒有價值),請考慮使用UDP。
@Downvoter請解釋你對這個正確答案的厭惡。 – EJP
如果我理解正確。 您的協議會等待來自對等方的響應消息,然後才能發送下一個請求消息。 在這種情況下,RTT會像你說的那樣限制速度(每秒4條消息)。
如果說明你的協議請求那種等待,那麼這個協議有壞的設計。
如果不是,那麼在等待響應消息之前,您可以通過向對等方發送幾條消息來提高性能。這樣,高RTT不會導致如此糟糕的緩慢。
什麼是ACK?如果沒有確認每條發送的消息,TCP如何按順序交付? – user788171
@ user788171如果您甚至不知道ACK是什麼,那麼我建議您詳細閱讀[傳輸控制協議](http://en.wikipedia.org/wiki/Transmission_Control_Protocol)以及它的工作原理。 –
@ user788171而不是決定你有問題,並確切地在哪裏,並尋找方法來實現你的解決方案,我建議你首先確定你是否*有一個*需要解決的問題。 **測試和測量**您似乎並不知道TCP的第一件事。這是相當聰明和精心調整,你給它的功勞。 – EJP