Longitud máxima para la dirección IP del cliente [duplicado]

Resuelto Tony Eichelberger asked hace 15 años • 8 respuestas

Posible duplicado: ¿
Longitud máxima de la representación textual de una dirección IPv6?

¿Cuál recomendaría como tamaño máximo para una columna de base de datos que almacene direcciones IP de clientes? Lo tengo configurado en 16 en este momento, pero ¿podría obtener una dirección IP que sea más larga que la de IPv6, etc.?

Tony Eichelberger avatar Jul 03 '09 04:07 Tony Eichelberger
Aceptado

Hay una advertencia con la estructura general de IPv6 de 39 caracteres. Para direcciones IPv6 asignadas a IPv4, la cadena puede ser más larga (más de 39 caracteres). Un ejemplo para mostrar esto:

IPv6 (39 caracteres):

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

IPv6 mapeado IPv4 (45 caracteres):

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

Nota: los últimos 32 bits (que corresponden a la dirección IPv4) pueden necesitar hasta 15 caracteres (ya que IPv4 utiliza 4 grupos de 1 byte y está formateado como 4 números decimales en el rango 0-255 separados por puntos (el .carácter), entonces el máximo es DDD.DDD.DDD.DDD).

Por lo tanto, la longitud máxima correcta de la cadena IPv6 es 45.

En realidad, esta fue una pregunta de un cuestionario en una capacitación sobre IPv6 a la que asistí. (¡Todos respondimos 39!)

Deepak avatar Sep 19 '2011 21:09 Deepak

Para IPv4, podría almacenar los 4 bytes sin procesar de la dirección IP (cada uno de los números entre los puntos en una dirección IP es 0-255, es decir, un byte). Pero entonces tendrías que traducir la entrada y salida de la base de datos y eso es complicado.

Las direcciones IPv6 son de 128 bits (a diferencia de los 32 bits de las direcciones IPv4). Por lo general, se escriben como 8 grupos de 4 dígitos hexadecimales separados por dos puntos: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. 39 caracteres son apropiados para almacenar direcciones IPv6 en este formato.

Editar: Sin embargo, hay una advertencia: consulte la respuesta de @Deepak para obtener detalles sobre las direcciones IPv6 asignadas a IPv4. (La longitud máxima correcta de la cadena IPv6 es 45 caracteres ).

Matt Bridges avatar Jul 02 '2009 21:07 Matt Bridges

Si desea manejar IPV6 en notación estándar, hay 8 grupos de 4 dígitos hexadecimales:

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

32 dígitos hexadecimales + 7 separadores = 39 caracteres.

PRECAUCIÓN: Si también desea mantener direcciones IPV4 asignadas como direcciones IPV6, use 45 caracteres como sugiere @Deepak .

David J. Liszewski avatar Jul 02 '2009 21:07 David J. Liszewski

Tómalo de alguien que lo ha probado de las tres maneras... solo usa un varchar(39)

El almacenamiento ligeramente menos eficiente supera con creces cualquier beneficio de tener que convertirlo al insertarlo/actualizarlo y formatearlo al mostrarlo en cualquier lugar.

Neil N avatar Jul 02 '2009 21:07 Neil N