質問:
Androidの初期TCP受信ウィンドウサイズはどれくらいですか?
Irvin H.
2016-02-16 18:19:03 UTC
view on stackexchange narkive permalink

これはここの質問とかなり似ているかもしれませんが、間違った場所にあるか、十分に明確ではなかったため、適切な対象者に届いていないと思います。 。したがって、ここで再定式化しました。

はじめに:

TCP受信ウィンドウは、TCPの受信側のバッファのサイズです。接続。 ( RFC7323-セクション-1.1)によると、TCP標準にはサイズを示す 16ビットフィールドがあります( 2 ^ 16 = 65,536バイト最大 code )。ただし、これにより、高遅延ネットワーク(RFC7323)のパフォーマンスが制限されることが確認されています。したがって、受信ウィンドウのサイズにスケーリングを掛けてパフォーマンスを向上させるために、「ウィンドウスケール」( RFC7323-セクション-2)と呼ばれるフィールドがTCPオプション/拡張機能に含まれています。係数、したがってスケーリング係数= 2 ^ウィンドウスケーリング係数値。したがって、本質的には、 TCP受信ウィンドウサイズ= TCP受信ウィンドウ値*(2 ^ウィンドウスケーリング係数値)(スケーリング係数が実際にどのように機能するかを完全に理解していないため、これは完全に正確ではない可能性があります) 。

質問:

この質問の本質は、 RFC7323-セクション2.1によると、さまざまなオペレーティングシステムに実装されているTCPスタックには別のデフォルトの初期値。 Androidのデフォルトの初期TCP受信ウィンドウサイズはどれくらいですか?異なるバージョン間で変更されましたか?

参照:

RFC 7323- https://tools.ietf.org/html/rfc7323

>
3つの賛成票と3つの賛成票!興味深いケース。
1 回答:
the structure
2016-02-17 22:31:50 UTC
view on stackexchange narkive permalink

TCPヘッダーに表示されるTCPWINDOWSIZEフィールドとTCPWINDOWSCALEフィールドについてお答えします。

初期TCPウィンドウサイズは0x3908 = 14600である必要があります。少なくとも、これまでに使用して見つけたものです。いくつかのバージョン。

(私が使用したほとんどのLinuxディストリビューションでは、正確に2倍の0x7210 = 29200です。)

ウィンドウスケールの値はバージョンによって異なります。古い場合は、 6、新しいものは、少なくともこれまでに経験したことでは、8に設定します。

このアプリで両方の値を確認できます: https://play.google.com/store/apps/ details?id = be.ac.ulg.mobiletracebox最初の行にそれらが表示されます 0:youraddress ... TCP :: Window(0xXXXX)... TCP :: WindowScale(0xXX) 値は16進数です。

ウィンドウサイズの場合は通常のSynプローブを使用します。

ウィンドウスケールの場合はウィンドウスケールプローブを使用します。

(ウィンドウの値が表示されない場合は、 max(0xffff = 65535)。デバイスがルート化されている場合は、モードをサーバーベースに設定する必要があります。)

PSIは、アプリについての話がここで問題ないかどうかわかりません。コメントを編集します。

ええとそれは合理的に聞こえますが、traceboxはトレースツールのように見えますか?アプリを実行しているサーバーではなく、デバイスに適用される値を探していることを再確認する方法はありますか?
これは、パケットの変更を追跡するためのツールです。送信されたパケットと、トレースボックスサーバーでの受信方法が表示されます。次に、送信されたパケットの特定の値が表示され、受信されたパケットのその値に変更が表示されない場合、表示されている値が実際の値である可能性が非常に高くなります。
ええと、また。デバイスが受信した応答が表示されているということですか?それは完全に理にかなっているでしょう、それは私が最初にその説明をどのように介入したかではありません。パケットが `tumblr.com`(アプリページの2番目のスクリーンショット)で受信されたときに、traceboxがパケットがどのように見えるかを知ることができる他の方法は考えられません。
2つのモードがあります。 1つは拡張tracerouteのようなもので、宛先(tumblr.comなど)を選択しますが、残念ながらrootが必要であり、私たちのケースには役立ちません。もう1つはサーバーの助けを借りてです。アプリはパケットをサーバーに送信し、サーバーは受信したパケットを送り返します。


このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 3.0ライセンスに感謝します。
Loading...