264 votes

Longueur maximale de l'adresse IP du client

Dupliquer possible:
Longueur maximale de la représentation textuelle d'une adresse IPv6?

Que recommanderiez-vous comme taille maximale pour une colonne de base de données stockant des adresses IP client? Je l'ai réglé à 16 en ce moment, mais pourrais-je obtenir une adresse IP qui est plus longue que celle avec IPv6, etc?

415voto

Deepak Points 1572

Il y a une mise en garde. Pour IPv4 mappée adresses IPv6, la chaîne peut être plus de 39 caractères. Laissez-moi vous montrer avec un exemple:

IPv6 (39 octets) :

ABCD:ABCD:ABCD:ABCD:ABCD:ABCD:ABCD:ABCD

IPv4-IPv6 mappées (45 octets) :

ABCD:ABCD:ABCD:ABCD:ABCD:ABCD:192.168.158.190

La dernière 32 bits (qui correspondent à des adresses IPv4) peuvent avoir besoin de plus de 10 caractères.

Le bon maximum IPv6 longueur de la chaîne, par conséquent, est de 45.

C'était réellement une question quiz dans une formation IPv6 j'ai assisté. (Nous avons tous répondu à 39!)

262voto

Matt Bridges Points 14547

Pour IPv4, vous pourriez sortir avec le stockage de l'4 premières octets de l'adresse IP (chacun des nombres entre les périodes en une adresse IP sont de 0 à 255, soit un octet). Mais alors que vous auriez à traduire et de la DB, et que c'est le désordre.

Les adresses IPv6 sont de 128 bits (par opposition à 32 bits d'adresses IPv4). Ils sont en général écrits en 8 groupes de 4 chiffres hexadécimaux séparés par des virgules: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. 39 caractères est approprié pour stocker des adresses IPv6 dans ce format.

Edit: Cependant, il est une mise en garde, voir @Deepak la réponse pour plus de détails sur IPv4 mappée adresses IPv6. (Le bon maximum IPv6 longueur de la chaîne est de 45 caractères.)

25voto

unhillbilly Points 4604

Si vous voulez gérer IPV6 en notation standard, il y a 8 groupes de 4 chiffres hexadécimaux:

 2001:0dc5:72a3:0000:0000:802e:3370:73E4
 

32 chiffres hexadécimaux + 7 séparateurs = 39 caractères.

ATTENTION: Si vous souhaitez également gérer des adresses IPV4 mappées en tant qu'adresses IPV6, utilisez 45 caractères comme suggéré par @Deepak .

11voto

Neil N Points 14566

Prenez-le de quelqu'un qui a essayé tous les trois façons ... il suffit d'utiliser un varchar (39)

Le stockage un peu moins efficace dépasse de loin tout avantage de devoir le convertir en insert / update et le formater en le montrant n'importe où.

9voto

Michael Petrotta Points 35647

Comme décrit dans le protocole IPv6 Wikipédia, article,

Les adresses IPv6 sont normalement écrit en huit groupes de quatre hexadécimal chiffres, où chaque groupe est séparé par un deux-points (:)

Typique de l'adresse IPv6:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

C'est de 39 caractères. Les adresses IPv6 sont de 128 bits, de sorte que vous pourrait éventuellement utiliser un binaire(16) de la colonne, mais je pense que je collerais avec une représentation alphanumérique.

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