Насколько равномерно распределение цифр в последней части адреса IPv4?

9

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

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

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

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

Adjam
источник
С чего вы взяли, что последний сегмент «назначен совершенно случайно»?
MrWhite
1
Это предположение. Я не уверен, правильно ли это предположение. Это содержание моего вопроса.
Аджам
Почему бы просто не сделать круговой прием?
Bigbio2002
@ Bigbio2002 Потому что пользователи могут вернуться. Я не хочу, чтобы пользователя отправляли на хорошую версию, а затем на плохую, поскольку это повлияет на поведение пользователя.
Аджам

Ответы:

14

Адреса 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!

Джастин Пирс
источник
5

Последний октет, вероятно, будет смещен в сторону нижнего конца, потому что сети имеют тенденцию нумероваться снизу. Лучшая схема состояла бы в том, чтобы рассматривать весь 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.

mgorven
источник