Назад | Перейти на главную страницу

Как равномерно распределяются цифры в последней части IPv4-адреса?

У меня есть сценарий перенаправления, работающий на созданном мной веб-сайте. Он отправляет 1/3 посетителей на сайт A, 1/3 посетителей на сайт B и 1/3 на сайт C.

Он работает путем деления последней части IPv4-адреса пользователей (0–255) на 3, и они перенаправляются на сайт A, B или C в зависимости от остатка. Пока на сайте A было 109 посетителей, на сайте B - 85, а на сайте C - 101.

Правильно ли я предполагаю, что последний сегмент IPv4-адреса назначается полностью случайным образом?

Также, одинаково ли распределение чисел для последнего сегмента?

Адреса IPv4 не такие уж неуклюжие и случайные, как вы думаете.

Во-первых, IPv4-адрес разделяется на 4 октета, каждый в диапазоне от 0 до 255. Однако это не совсем так, поскольку 0 - это зарезервированное число для сети, а 255 зарезервировано для широковещательной передачи, что на самом деле ограничивает вас 1-254. .

Во-вторых, вы должны учитывать, что IPv4-адреса назначаются блоками организациям и интернет-провайдерам, которые затем подразделяют их на основе адреса подсети, который определяет, какие биты в октете представляют сеть, а какие - отдельный хост. Так:

Network: 11.12.0.0
CIDR: 11.12.0.0/16
Subnet: 255.255.0.0
Hosts provided: 65534

Значит, у вас могут быть адреса от 11.12.0.1 до 11.12.255.254. Из-за этого:

Three separate hosts, same network, but same last octet:
11.12.10.20
11.12.20.20
11.12.30.20

Это означает, что нельзя всегда рассчитывать на то, что последний октет будет «случайным».

В-третьих, способы присвоения IP-адресов не всегда случайны. Большинство домашних пользователей получат общедоступный IP-адрес, назначенный их интернет-провайдером через DHCP, где их конечная точка получит адрес, выбранный компьютером (обычно последовательно, первым пришел / первым обслуживается из доступного пула), на который они держат аренду на заранее определенный количество времени (обычно пара дней), прежде чем им будет присвоен другой номер. Крупные организации (предприятия, правительство) часто имеют набор адресов, с которых они всегда приходят, и эти адреса статичны и не изменяются.

Чтобы ответить на ваш вопрос, учитывая приведенную выше информацию:

1) IP-адреса не назначаются случайным образом. Обычно существует какой-то логический метод для назначения IP-адреса, чтобы обеспечить правильную и своевременную маршрутизацию трафика через сеть и Интернет.

2) Распределение последнего октета IPv4-адреса зависит от ряда факторов, относящихся к вышеуказанной информации (и настроения сетевого администратора в некоторых случаях) и, следовательно, не равнозначно. Вы не можете полагаться только на последний октет для обеспечения «уникальности».

Come on IPv6!

Последний октет, вероятно, будет смещен в сторону нижнего конца, потому что сети имеют тенденцию нумероваться снизу. Лучшей схемой было бы рассматривать весь IP-адрес как 32-битное целое число без знака и использовать операция по модулю чтобы получить остаток при погружении на нужное вам количество ведер. Это приведет к присвоению каждого последующего (числового) адреса другому ведру (оборачиваясь, когда будет достигнута последняя корзина).

Например:

1.2.3.4 = 16909060
16909060 % 3 = 1

Таким образом, это поместит 1.2.3.4 в корзину 1 (где сегменты пронумерованы 0, 1 и 2). 1.2.3.5 перейдет в ведро 2, а 1.2.3.6 - в ведро 0.