Las URL siempre tienen este formato:
<protocol>://<host>[:<port>]/[<path>][#<hash>]
El problema es que IPv6 usa dos puntos, al igual que el separador de puerto y host, por ejemplo:
2001:db8:1f70::999:de8:7648:6e8
Pero, ¿qué pasa si este es el host y quiero conectarme a él con HTTP en el puerto 100?
http://2001:db8:1f70::999:de8:7648:6e8:100/
El problema es el último colon. Dado que los cero se omiten con dos puntos dobles (entre 1f70 y 999), se desconoce si ': 100' pertenece a la IP o al número de puerto. ¿Cómo podemos saber esto?