沒有小說,我會盡力解釋並希望它有道理。IP數據包/超時/間隔控制
我們有一個應用程序,通過簡單的HTTPS處理髮送數據到服務器,沒問題,一切正常。但是,如果數據包是通過衛星電話發送的,則傳輸延遲比在陸地線路高速網絡訪問中處理的典型毫秒長得多。因此,完全相同的數據包發送出去都通過Windows API自動分解時通過如下功能:
DECLARE INTEGER InternetOpen IN WININET.DLL
DECLARE INTEGER InternetCloseHandle IN WININET.DLL
DECLARE INTEGER InternetConnect IN WININET.DLL
DECLARE INTEGER HttpOpenRequest IN WININET.DLL
DECLARE INTEGER InternetQueryOption IN WININET.DLL
DECLARE INTEGER InternetSetOption IN WININET.DLL
DECLARE INTEGER HttpSendRequest IN WININET.DLL
DECLARE INTEGER HttpQueryInfo IN WININET.DLL
DECLARE INTEGER InternetReadFile IN WININET.DLL
我沒有特別控制「數據包」,只是建立一個完整的請求和發送它,並得到一個回答。
發生什麼是這個。數據包通常以大量數據分割成更小的塊。然而,到達衛星時,它們不會以正確的順序重新組裝,因此最終目的地的接受失敗。
所以,現在的問題......有沒有一種方法可以讓Windows知道減慢數據包發送的頻率以幫助防止延遲問題?由於我們無法訪問衛星系統,因此我們無法證明這是問題所在,但看起來他們看到了數據包,只是不要以正確的順序將它們放在一起。
謝謝。
這是很正常的。 TCP處理它。 '放慢'不會解決問題。 – 2010-10-14 14:31:54
@Hans Passant,然後它的(衛星)端,並完全不受我們的控制? – DRapp 2010-10-14 14:35:27
您從未*掌控IP數據包的路由方式。這條路線甚至可以在你傳送時改變。這可能導致可變延遲和數據包倒序。再次使用矮胖子是TCP的工作。 – 2010-10-14 14:39:58