63 votes

Taille pour stocker les adresses IPv4, IPv6 sous forme de chaîne

quelle devrait être la taille idéale pour stocker les adresses IPv4, IPv6 sous forme de chaîne dans la base de données MySQL. varchar (32) devrait-il être suffisant?

80voto

bakkal Points 13449

En supposant représentation textuelle dans une chaîne de caractères :

  • 15 caractères pour IPv4 (xxx.xxx.xxx.xxx format, 12+3 séparateurs)
  • 39 caractères (32 + 7 séparateurs) pour IPv6

Ceux qui sont de la longueur maximale de la chaîne.

Alternatives au stockage sous forme de chaîne de caractères:

  • L'IPv4 est de 32 bits, de sorte que MySQL est un type de données qui peut contenir 4 octets de faire, à l'aide de INT UNSIGNED est commun avec INT_ATON et INET_NTOA pour gérer la conversion de l'adresse, de numéro d'adresse
SELECT INET_ATON('209.207.224.40');
        -> 3520061480

SELECT INET_NTOA(3520061480);
        -> '209.207.224.40'
  • Pour IPv6, malheureusement, MySQL ne pas avoir un type de données est de 16 octets, cependant on peut mettre de l'IPv6 en une forme canonique, puis les séparer en 2 BIGINT (8 octets), ce sera toutefois utiliser deux champs.

8voto

Santa Points 6013

Numériquement, une adresse IPv4 est longue de 32 bits et une adresse IPv6 longue de 128 bits. Donc, vous avez besoin d'un stockage d'au moins 16 octets.

Si la "chaîne" que vous stockez est un encodage de l'adresse sous forme d'octet, 16 suffira.

8voto

paxdiablo Points 341644

Si vous les stockez sous forme de chaînes plutôt que de modèles de bits:

Les adresses IPv4 se composent de quatre caractères décimaux à 3 chiffres avec trois séparateurs . , de sorte que seuls 15 caractères tels que 255.255.255.255 nécessaires.

Les adresses IPv6 se composent de huit caractères hexadécimaux à 4 chiffres avec sept séparateurs : , ce qui nécessite 39 caractères tels que 0123:4567:89ab:cdef:0123:4567:89ab:cdef .

3voto

hnrain Points 29

l'adresse ipv6 peut-être 46 caractères.

référence: IPv4 mappée adresses IPv6 Hybride dual-stack IPv6/IPv4 implémentations de reconnaître une classe spéciale d'adresses IPv4 mappées adresses IPv6. Dans ces adresses, les 80 premiers bits sont à zéro, les 16 bits sont un, et le reste de la 32 bits de l'adresse IPv4. On peut voir ces adresses avec la première 96 bits écrits dans la norme IPv6 format, et les autres 32 bits écrits dans le coutumier de point-virgule notation des adresses IPv4. Par exemple, ::ffff:192.0.2.128 représente l'adresse IPv4 192.0.2.128. Un format obsolète pour IPv4-compatible adresses IPv6 a été ::192.0.2.128.[61]

2voto

Borealid Points 35075

En supposant que vous ne disposiez d'aucune information réseau (identificateur LL, classe ou masque CIDR, par exemple), une adresse IPv4 peut comporter jusqu'à quinze caractères (numéros 4x3 + 3 périodes) et une adresse IPv6 peut comporter jusqu'à 39 caractères.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X