Longitud máxima para la dirección IP del cliente [duplicado]
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.?
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!)
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 ).
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 .
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.