2016-11-11 1 views
0

Во время разработки библиотеки библиотеки IpAddress я столкнулся с незначительной дилеммой. Как назвать мою функцию, проверяя адрес как LocalHost/Loopback. В чем разница между этими двумя обозначениями?Локальный адрес OR loopback naming

В других LIBS, они делают этот выбор:

Boost.Asio -> is_loopback

Qt -> isLoopback

wxWidget -> IsLocalHost

Почему они звоните isLoopback тест как address == "::1" ??

ANSWER: «localhost» обычно является псевдонимом для интерфейса «loopback». Они могут и часто используются взаимозаменяемо.

Подтверждение: Это одно и то же определение между IPv4 и IPv6?

+0

«localhost» обычно является псевдонимом для интерфейса «loopback». Они могут и часто используются взаимозаменяемо. –

+0

@Someprogrammerdude Спасибо! Я переписал это в своем вопросе. – Sandburg

ответ

0

Предыдущий ответ не совсем корректен.

Loopback + interface + может иметь несколько IP-адресов, а не только из локальной сети. Общепринятой практикой является размещение нелокального адреса в интерфейсе обратной петли, например. динамическая маршрутизация, где вы не хотите потерять маршруты к IP-адресу маршрутизатора, если какой-либо интерфейс опустится.

С другой стороны, loopback IPv4 + network + определяется как IANA как 127.0.0.0/8. Удивительно, но только для IPv6 they reserved :: 1/128 адрес.

Чтобы ответить на ваш вопрос: если вы хотите проверить только адреса, я бы выбрал isLocalhost(). И чтобы быть немного ревностным, я бы проверил там всю сеть - мне приходилось видеть 127.0.0.2 несколько раз ...