127 последний номер сети в сети класса A с маской подсети 255.0.0.0
. 127.0.0.1
первый присваиваемый адрес в подсети. 127.0.0.0
не может использоваться, потому что это было бы проводным числом. Но использование любых других чисел для части, относящейся к хосту должно хорошо работать и вернуться к использованию 127.0.0.1
. Можно попробовать его сами путем проверки с помощью ping-запросов 127.1.1.1
если Вы хотели бы. Почему они ожидали до последнего номера сети для реализации этого? Я не думаю, что это документируется.
Самое раннее упоминание, которое я могу найти относительно 127 присвоение как обратная петля, является ноябрем 1986 RFC 990, созданный Reynolds и Postel:
Нуль адреса должен быть интерпретирован как значение "этого", как в "этой сети".
Например, адрес 0.0.0.37 мог быть интерпретирован как значение хоста 37 в этой сети.
...
Сети класса A номер 127 присваивают "петлевая" функция, то есть, датаграмма, отправленная протоколом более высокого уровня в сеть, которую 127 адресов должны циклично выполнить назад в хосте. Никакая датаграмма, "отправленная" в сеть 127 адресов, никогда не должна появляться ни в какой сети нигде.
Как раз когда рано как сентябрь 1981 RFC 790, 0 и 127 были уже зарезервированы:
000.rrr.rrr.rrr Reserved [JBP] ... 127.rrr.rrr.rrr Reserved [JBP]
0 и 127 были единственные зарезервированные Сети класса A к 1981. 0 использовался для того, чтобы указывать на определенный хост, так, чтобы оставленный 127 для обратной петли.
Я знаю, что это не отвечает на вопрос, но это еще, я мог вырыть. Возможно, имело больше смысла выбирать 1.0.0.0 для обратной петли, но это было уже дано Пакетной радиосети BBN.
Если Вы думаете о том, что localhost или петлевые средства IP-адреса, Вы понимаете, что никогда не хотите видеть, что адрес или сеть, что тот адрес принадлежит, за пределами хоста. (В хосте, это слишком темно для наблюдения его. Извинения Mark Twain.)
Так, кто-то должен был выбрать сеть IP для представления этого адреса localhost. Я не вспоминаю, кто сначала выбрал его, но это указано в Запросе IETF на Комментарии, который периодически выпускается как "Требования Хоста".
Это было сделано так давно, что идея "потратить впустую" весь адрес класса A не ввела ничей ум в то время.
Утилита localhost - то, что можно говорить с собой с помощью трудно кодированного IP-адреса. Это использовалось задолго до того, как была Система доменных имен. Вы могли на самом деле использовать любой из 127.x.x.x допустимые адреса, но никто никогда не делает. Вы не можете стащить и использовать 127 в качестве реальной сети, потому что "Требования Маршрутизатора" RFC запрещают когда-либо маршрутизацию что сеть в любом Интернете.
Разработчики Интернета действительно знали, как аппаратные средства работали, и они разработали с низкоуровневой реализацией в памяти.
Значения 0, 127 и 255 являются особенными в блоке на 8 битов и программировании машинного языка, потому что существуют "приемы", которые можно использовать для тестирования на эти значения и ответвление к другому коду с помощью меньших инструкций, которые выполняются быстрее, чем для других целых чисел. 127 самое высокое целое число на 8 битов со знаком, так постепенное увеличение его 1 вызовет переполнение со знаком. Точно так же постепенное увеличение 255 вызовет неподписанное переполнение. Просто загрузка значения 0 в регистр будет обычно устанавливать нулевой флаг на микросхеме. Предположите, что сетевая программа похожа на это в псевдокоде:
if (value == 0) doLocal();
if (value == 127) doLoopback();
if (value == 255) doNetwork();
Хотя это зависит от микросхемы, в те дни большинство микросхем могло закодировать эти тесты 2 словами, 3 словами и 3 словами соответственно (общие 8 слов), и далее те конкретные тесты были все вероятны выполнить в 1 такте каждого. Используя любое другое значение, вероятно, потребовал бы 4 слов каждый (общие 12 слов), 50%-е увеличение размера кода и вероятно 50%-е увеличение во время выполнения также.