TCP ループバックを介してソケットを使用してデータを送受信する 2 つのアプリケーションを実行する場合、データの実際のパスは何ですか? このデータは、Windows ネットワーク ドライバーや NIC ハードウェアを経由しますか?
編集。これは Windows の「ループバック」ではなく、2 つのポートがケーブルで相互に接続された NIC で作成された物理的なループバックであり、物理的なループバックになっていると考えてください。
TCP ループバックを介してソケットを使用してデータを送受信する 2 つのアプリケーションを実行する場合、データの実際のパスは何ですか? このデータは、Windows ネットワーク ドライバーや NIC ハードウェアを経由しますか?
編集。これは Windows の「ループバック」ではなく、2 つのポートがケーブルで相互に接続された NIC で作成された物理的なループバックであり、物理的なループバックになっていると考えてください。
ループバックは仮想インターフェイスであり、それに対応するハードウェアはありません。データのコピーは、ドライバーレベルより上でもカーネル内で行われます。
TCP / IPのループバックは、サブネット内の特別なアドレスを持つ仮想ネットワークインターフェイスであり127/8
、通常127.0.0.1
はデフォルトで作成されます。また、同じマシン上の2つのカード間でイーサネットクロスオーバーケーブルがループします。
私は最初の答えで最初のケースに取り組みました。
2番目の場合のTCP/IPスタックの動作は、実装とトランスポートオプションによって異なります。TCP接続およびユニキャストUDPの場合、カーネルは、送信元アドレスとターゲットアドレスの両方がマシンに対してローカルであり、メモリを介したデータ転送を短絡していることを認識している可能性があります。最新のネットワークスタックのほとんどがこのように動作することがわかります。ブロードキャストまたはマルチキャストUDPの場合、ネットワーク上に他のリスナーが存在する可能性があるため、物理カードを介してパケットを送信する以外に選択肢はありません。