私のNIC=に関連付けられているのか、それともOSまたはドライバが傍受して、ループバックアドレスに送信されたデータをすぐに返すのか?
信号は実際に私のNICに移動しますか?NICはそれを返しますか?
特定のOSについては言及していませんが、ほとんどの場合、データはスタックを下ってIPに到達し、その時点でほとんど返送されます。これは大幅な単純化ですが、プロセス全体が通常はCPUにバインドされているため、そのパフォーマンスはCPU速度とスタック効率に直接リンクしています。実際には、現代のCPUとOSは40Gbpsよりもかなり速くループバックトラフィックを「バウンス」できるはずです-これは最速ですNIC今日購入できると思います。
すべての127.0.0.1トラフィックが物理ネットワークに到達することはなく、カーネルのループバックアダプターによって処理されます。
MicrosoftがWindows 8およびWindows Server 2012に追加した「ループバック高速パス」機能に興味があるかもしれません。以下を参照してください。
また、最適化ありと最適化なしのループバックによってとられるパスの図も示します。
127.0.0.1は他のどのローカルIPよりも高速ではありません。物理デバイスと2層を使用しないため、ローカルIPが高速です(NICにヒットすることはありません)。
iperf -c 109.191.109.xxx 1111 -t 5
iperf: ignoring extra argument -- 1111
------------------------------------------------------------
Client connecting to 109.191.109.241, TCP port 5001
TCP window size: 49.7 KByte (default)
------------------------------------------------------------
[ 3] local 109.191.109.xxx port 32840 connected with 109.191.109.xxx port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 5.0 sec 4.72 GBytes 8.12 Gbits/sec
$ iperf -c 127.0.0.1 1111 -t 5
iperf: ignoring extra argument -- 1111
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 49.7 KByte (default)
------------------------------------------------------------
[ 3] local 127.0.0.1 port 56482 connected with 127.0.0.1 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 5.0 sec 4.62 GBytes 7.94 Gbits/sec
実行しているOSによって異なりますが、Windows 2000には、ループバックアダプターへのリクエストが遅くなるというバグがありました。役に立たない雑学があります!
詳細はこちら kb記事 をご覧ください。
むしろ名前で答えが見つかると思います。名前は「ローカルループバックアドレス」と言います。これは、ネットワークがプロセスに介入することはなく、リクエスト自体がローカルでループバックされることを意味します。
Linuxを使用している場合...
rootとして「ifconfig -a」と入力します...
すべてのNICの「interrupt」行に注意してください...「lo」には「interrupt」行がないことに注意してください...つまり、割り込みが割り当てられていないので、かなり高速です;-)