
私たちのアプリケーションは Amazon サーバー上で実行されており、TCP ハンドシェイクに関連する問題に常に直面していました。時には、サーバーのポート 80 でアプリケーションや Telnet に接続できないこともありました。Google で検索して、TCP ウィンドウ スケーリングと TCP タイムスタンプを無効にすることで問題を解決できるという解決策を見つけました。それを実行すると、問題は解決しました。
解決策は次のとおりです:サーバーがSYNパケットに応答してSYN/ACKパケットを送信しないのはなぜでしょうか
さて、サーバー上で TCP ウィンドウ スケーリングとタイムスタンプを無効にしても問題ありませんか? そうでない場合、問題 (ハンドシェイクの問題) をどのように解決しますか。
答え1
両方をオフにしても「問題ありません」が、欠点がある可能性があります。
ウィンドウ スケーリングを使用すると、アドバタイズされたウィンドウを 64 キロバイトを超える値にスケーリングできます。パスのいずれかの方向の帯域幅遅延積 (最小帯域幅 × 往復時間) が 64 キロバイトを超える場合は、より高いビットレートに到達するためにウィンドウ スケーリングを使用する必要があります。
タイムスタンプは、たとえば、誤った再送信やシーケンス番号のラップアラウンドなどを防ぐのに役立つ場合があります。通常は重要ではありませんが、いつものように「状況によります」:p