web-dev-qa-db-ja.com

127.0.0.1はどのくらい速いですか?

私のNIC=に関連付けられているのか、それともOSまたはドライバが傍受して、ループバックアドレスに送信されたデータをすぐに返すのか?

信号は実際に私のNICに移動しますか?NICはそれを返しますか?

37
user55029

特定のOSについては言及していませんが、ほとんどの場合、データはスタックを下ってIPに到達し、その時点でほとんど返送されます。これは大幅な単純化ですが、プロセス全体が通常はCPUにバインドされているため、そのパフォーマンスはCPU速度とスタック効率に直接リンクしています。実際には、現代のCPUとOSは40Gbpsよりもかなり速くループバックトラフィックを「バウンス」できるはずです-これは最速ですNIC今日購入できると思います。

29
Chopper3

すべての127.0.0.1トラフィックが物理ネットワークに到達することはなく、カーネルのループバックアダプターによって処理されます。

38
Zypher

MicrosoftがWindows 8およびWindows Server 2012に追加した「ループバック高速パス」機能に興味があるかもしれません。以下を参照してください。

http://blogs.technet.com/b/wincat/archive/2012/12/05/fast-tcp-loopback-performance-and-low-latency-with-windows-server-2012-tcp- loopback-fast-path.aspx

また、最適化ありと最適化なしのループバックによってとられるパスの図も示します。

12
Ed Briggs

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
7
alvosu

実行しているOSによって異なりますが、Windows 2000には、ループバックアダプターへのリクエストが遅くなるというバグがありました。役に立たない雑学があります!

詳細はこちら kb記事 をご覧ください。

5

むしろ名前で答えが見つかると思います。名前は「ローカルループバックアドレス」と言います。これは、ネットワークがプロセスに介入することはなく、リクエスト自体がローカルでループバックされることを意味します。

2
ikartik90

Linuxを使用している場合...

rootとして「ifconfig -a」と入力します...

すべてのNICの「interrupt」行に注意してください...「lo」には「interrupt」行がないことに注意してください...つまり、割り込みが割り当てられていないので、かなり高速です;-)

1
jim_m_somewhere