Как быстро 127.0.0.1?

37

Интересно, привязан ли он к моей сетевой плате или операционная система или драйвер перехватывает и немедленно возвращает данные, отправленные на адрес обратной связи?

Сигнал действительно передается на мою сетевую карту, после чего сетевая карта возвращает его?

Serv-вкл
источник
5
Больше всего мелочей 127/8 посвящено зацикливанию
Джейкоб
2
Было бы интересно увидеть некоторые реальные показатели пропускной способности и / или задержки для обратной петли, если у кого-то они есть.
NPE
3
Даже если бы электроны путешествовали туда, NIC, вероятно, не вернул бы те же самые электроны :)
Халил Эзгюр
:) да, я должен сказать сигнал ..
1
нет такого места, как 127.0.0.1

Ответы:

29

Вы не упоминаете конкретную операционную систему, но в большинстве случаев все происходит из-за того, что данные перемещаются по стеку, пока не достигнут IP, после чего они в значительной степени отправляются обратно. Это значительное упрощение, но означает, что весь процесс обычно связан с процессором, поэтому его производительность напрямую связана со скоростью процессора плюс эффективность стека. С практической точки зрения современные ЦП и ОС должны быть в состоянии «отскочить» от петлевого трафика значительно быстрее, чем 40 Гбит / с - это самый быстрый сетевой адаптер, который, я думаю, я способен купить сегодня. Надеюсь это поможет.

Chopper3
источник
39

Не весь трафик 127.0.0.1 никогда не попадает в физическую сеть, он обрабатывается адаптером обратной связи в ядре.

Zypher
источник
так что это означает супер быстро, верно :)
@Mrk Mnl да, вы держите пари. Для моего пинга 00ms с использованием XAMP 1.7.4
12
любой локальный адрес никогда не попадает в физическую сеть. 127.0.0.1 только один из них
alvosu
1
«попадание в физическую сеть» немного двусмысленно, поскольку оно может попасть на ваш сетевой адаптер без отправки и не попасть в физическую сеть, в любом случае, если оно возвращается ядром, то есть ОС, очевидно, что оно не попадает на сетевой адаптер.
12

Возможно, вас заинтересует функция «Loopback Fast Path», добавленная 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

Это также обеспечивает иллюстрацию пути, по которому проходит петля с оптимизацией и без нее.

Эд Бриггс
источник
7

127.0.0.1 не быстрее любого другого локального ip. Локальный ip быстрый, потому что он не использует физическое устройство и двухслойный. (Он никогда не попадает на вашу сетевую карту)

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
alvosu
источник
4
Там очень много не так с этим ответом. Это быстрее. Если вы настраиваете окно коллизий, то ограничивающий фактор будет зависеть от переключения контекста.
symcbean
офигенно, именно то, что я искал. Я хотел видеть мой верхний предел при локальном запуске клиента с сервера ... спасибо за ответ !!!!
Дин Хиллер,
@symcbean: пожалуйста, расскажите о «неправильности» этого ответа.
Сэм Топор
5

Это зависит от того, какую операционную систему вы используете, но в Windows 2000 была ошибка, из-за которой запросы к адаптеру обратной связи были бы медленными. Есть некоторые бесполезные мелочи для вас!

Пожалуйста, смотрите эту статью kb для получения дополнительной информации.

Мэтью Стиплз
источник
2

Я бы скорее сказал, что вы найдете свой ответ в самом названии. Название говорит: «Локальный адрес обратной связи», что само по себе означает, что сеть никогда не вмешивается в процесс, и запрос сам по себе зацикливается локально.

ikartik90
источник
Я собирался опубликовать то же самое, когда я заметил, что вы меня опередили. Действительно, «адрес обратной связи» должен дать подсказку :)
luis.espinal
вопрос был в том, насколько быстро я знаю, что он делает
Имя на самом деле ничего не говорит вам. Например, физическая обратная связь RS-232 будет такой же медленной, как и ваш последовательный порт, тогда как если бы вы реализовали ее на уровне драйвера, она была бы быстрее. Конечно, localhost будет обрабатываться программно, но вы не можете сказать это по названию «loopback». Если вы слишком молоды, чтобы знать об этих вещах, я предоставлю вам google.com/search?q=rs232+loopback&tbm=isch
aij
1

Если вы используете Linux ...

введите "ifconfig -a" от имени пользователя root ...

Обратите внимание на строку «interrupt» на всех NIC ... обратите внимание, что на «lo» нет строки «interrupt» ... это означает, что ей даже не назначено прерывание, так что чертовски быстро ;-)

jim_m_somewhere
источник
это бессмысленно. Это не имеет большого смысла для виртуального устройства и ничего не говорит о его производительности.
sleeplessnerd