新しいTCP接続の作成が高価なタスクと見なされる理由がわかりません。基本的に、新しい接続のセットアップとは、TCPの3ウェイハンドシェイクを実行することを指します。つまり、2つのパケットを送信し、1つを受信しています。数千の(データ)パケットが続くことを考えると、ハンドシェイクは高価な部分にはなり得ません。それをできる?
新しいTCP接続の作成が高価なタスクと見なされる理由がわかりません。基本的に、新しい接続のセットアップとは、TCPの3ウェイハンドシェイクを実行することを指します。つまり、2つのパケットを送信し、1つを受信しています。数千の(データ)パケットが続くことを考えると、ハンドシェイクは高価な部分にはなり得ません。それをできる?
回答:
一般的に言えば、TCP接続を開くことは、開いたままにしておくことで既に開いている接続を再利用する機能と比較すると、コストがかかると考えられています。正解です。接続を開くには3パケット/ターンしかかかりませんが、その時間-RTTの3倍-は、すでに開いている接続を再利用するコストをはるかに超えています。これは、0にはるかに近いためです。接続を頻繁に開いたり閉じたりしています。
あなたは確かに正しいですが、アプリケーションが「それをする」ことで表示されるターン数と比較すると、これらの3つのパケットはかなり小さいように見えますが、オプションの比較方法によって異なります。アプリケーションの動作/接続を開く予定の回数。
編集 ただし、UDPとTCPの場合、ここでのCheekaleekは100%正解です。UDPのコネクションレス型操作と比較すると、オーバーヘッドは長期的には非常に大きいです。
確かに、UDPパケットを送信するよりもオーバーヘッドが多く、その後に何が起こるか気にしない。
TCPにはさらに多くのヘッダーデータが付属しており、リソースを消費する接続状態を維持します。
つまり、UDPと比較して、TCPはより高価ですが、高価というのは相対的な用語です。
「TCP接続は女の子の親友ですか???」
"TCP connections are a girl's best friend???"
いいえ、そうではないです。私は女の子に彼女の誕生日のために何千もの女の子をもらいました、そして彼女がしたことは私のメールを返すのをやめることだけでした。:(
単にパケットを送受信するだけではありません。追加のメモリを割り当て、セッションが確立されるまで、各ステップで少なくともネットワーク状態テーブルを更新する必要があります。実行される可能性のある追加のセキュリティチェック(ルートスプーフィング保護など)は言うまでもありません。
確立されたセッションのパケットのCPUコストが1ユニットの場合、(特定のオペレーティングシステムについて話しているわけではないため)いくつかの例の数値を使用すると、新しいセッションのコストは、数のコストの10倍または100倍になる場合があります。実行された操作。私が使用したほとんどのハードウェアファイアウォールは、確立されたセッションを処理できるよりも、1秒あたりの桁数が少ない新しい接続を処理できます。
特にSYN-SYN / ACK-ACKはミリ秒単位で発生するため、それほど大きな問題ではありませんが、多くの顧客を抱える大規模なシステムでは、新しいセッションが大きなオーバーヘッドになる可能性があります。
トラフィックの量またはタイプは、実際にメモリを割り当てることに関連するコードおよび関連する状態情報の追跡よりもはるかに重要ではありません。これが何を意味するのかを大まかに把握したい場合は、TCPに関連付けられているLinuxカーネルとUDPまたはICMPに関連付けられているコードの量を見てください。信じられないほど大まかな比較では、TCPはUDPで見つかったコードの行数の10倍の値を必要としています。
IPネットワーキングでは、必要な状態維持の量が、スケーラビリティの最も重要な決定要因の1つです。TCPの場合など、管理およびQoSアクションをバッファリングするためのFSMの複雑チェックアウト、これはSYN / ACKにもスライド式窓、シーケンス番号の継続的なメンテナンスだけではなく表現されているエンドポイントのTCPとUDPの同じの固有の欠如を考えます...