Wie gleichmäßig ist die Verteilung der Ziffern im letzten Teil einer IPv4-Adresse?


9

Ich habe ein Umleitungsskript auf einer von mir erstellten Website. Es sendet 1/3 der Besucher an Standort A, 1/3 der Besucher an Standort B und 1/3 an Standort C.

Dabei wird der letzte Teil der IPv4-Adresse des Benutzers (0-255) durch 3 geteilt, und sie werden je nach Rest an Standort A, B oder C umgeleitet. Bisher hatte Standort A 109 Besucher, Standort B 85 und Standort C 101 Besucher.

Stimmt es, dass das letzte Segment der IPv4-Adresse vollständig zufällig zugewiesen wird?

Ist auch die Verteilung der Zahlen für das letzte Segment gleich?


Was lässt Sie denken, dass das letzte Segment "vollständig zufällig zugewiesen" ist?
MrWhite

1
Es ist eine Vermutung. Ich bin mir nicht sicher, ob diese Vermutung richtig ist. Das ist der Inhalt meiner Frage.
Adjam

Warum nicht einfach Round Robin machen?
Bigbio2002

@ Bigbio2002 Weil Benutzer möglicherweise zurückkommen. Ich möchte nicht, dass ein Benutzer zur guten Version und dann zur schlechten Version gesendet wird, da dies das Benutzerverhalten beeinflusst.
Adjam

Antworten:


14

IPv4-Adressen sind nicht ganz so ungeschickt und zufällig, wie Sie annehmen würden.

Zunächst wird eine IPv4-Adresse in 4 Oktette mit einem Bereich von 0 bis 255 unterteilt. Dies ist jedoch nicht vollständig der Fall, da 0 eine reservierte Nummer für das Netzwerk und 255 für die Übertragung reserviert ist, was Sie wirklich auf 1-254 beschränkt .

Zweitens müssen Sie berücksichtigen, dass IPv4-Adressen in Blöcken Organisationen und ISPs zugewiesen werden, die sie dann anhand einer Subnetzadresse unterteilen, die beschreibt, welche Bits im Oktett das Netzwerk und welche Bits den einzelnen Host darstellen. Damit:

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

Würde bedeuten, dass Sie Adressen zwischen 11.12.0.1 und 11.12.255.254 haben könnten. Aus diesem Grund:

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

Dies bedeutet, dass Sie nicht immer darauf zählen können, dass das letzte Oktett „zufällig“ ist.

Drittens ist das Mittel zur Zuweisung von IP-Adressen nicht immer zufällig. Die meisten Heimanwender erhalten eine öffentliche IP-Adresse, die von ihrem ISP über DHCP zugewiesen wurde. Ihr Endpunkt erhält eine Adresse, die von einem Computer ausgewählt wird (normalerweise nacheinander, wer zuerst kommt / mahlt zuerst aus einem verfügbaren Pool), für die sie einen Mietvertrag für einen bestimmten Zeitraum abgeschlossen haben Zeitspanne (normalerweise einige Tage), bevor ihnen eine andere Nummer zugewiesen wird. Große Organisationen (Unternehmen, Behörden) haben häufig eine Reihe von Adressen, von denen sie immer stammen, und diese Adressen sind statisch und ändern sich nicht.

Um Ihre Frage mit den oben genannten Informationen zu beantworten:

1) IP-Adressen werden nicht zufällig vergeben. Normalerweise gibt es eine logische Methode zum Zuweisen von IP-Adressen, um eine korrekte und zeitnahe Weiterleitung des Datenverkehrs über ein Netzwerk und das Internet zu ermöglichen.

2) Die Verteilung des letzten Oktetts einer IPv4-Adresse hängt von einer Reihe von Faktoren ab, die sich auf die obigen Informationen beziehen (und in einigen Fällen von der Stimmung des Netzwerkadministrators) und ist daher nicht gleich. Sie können sich nicht nur auf das letzte Oktett verlassen, um "Einzigartigkeit" zu erzielen.

Come on IPv6!


5

Das letzte Oktett ist wahrscheinlich zum unteren Ende hin geneigt, da Netzwerke in der Regel von unten nummeriert sind. Ein besseres Schema wäre, die gesamte IP-Adresse als vorzeichenlose 32-Bit-Ganzzahl zu behandeln und die Modulo-Operation zu verwenden, um den Rest beim Tauchen nach der Anzahl der gewünschten Buckets zu erhalten. Dies würde jede nachfolgende (numerische) Adresse einem anderen Bucket zuweisen (umlaufen, wenn der letzte Bucket erreicht ist).

Zum Beispiel:

1.2.3.4 = 16909060
16909060 % 3 = 1

Dies würde also 1.2.3.4 in Bucket 1 einfügen (wobei die Buckets mit 0, 1 und 2 nummeriert sind). 1.2.3.5 würde in Bucket 2 und 1.2.3.6 in Bucket 0 gehen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.