Question Comment distinguer l'hôte et le port dans une URL IPv6?


Les URL ont toujours ce format:

<protocol>://<host>[:<port>]/[<path>][#<hash>]

Le problème est qu’IPv6 utilise des deux points, tout comme le séparateur de port et d’hôte, par exemple:

2001:db8:1f70::999:de8:7648:6e8

Mais que se passe-t-il s'il s'agit de l'hôte et que je souhaite me connecter via HTTP sur le port 100?

http://2001:db8:1f70::999:de8:7648:6e8:100/

Le problème est le dernier colon. Étant donné que les zéros sont omis avec des doubles points (entre 1f70 et 999), on ignore si ': 100' appartient à l'IP ou au numéro de port. Comment pouvons-nous savoir cela?


80
2017-11-24 22:48


origine




Réponses:


La notation dans ce cas consiste à coder le numéro IP IPv6 entre crochets:

http://[2001:db8:1f70::999:de8:7648:6e8]:100/

C'est RFC 3986section 3.2.2: Hôte

Un hôte identifié par une adresse littérale de protocole Internet, version 6       [RFC3513] ou ultérieure, est distingué en entourant le littéral IP       entre crochets ("[" et "]"). C’est le seul endroit où       les crochets sont autorisés dans la syntaxe d'URI. Dans       l'anticipation de futurs formats d'adresses littérales IP encore indéfinis,       une implémentation peut utiliser un indicateur de version facultatif pour indiquer une telle       format explicitement plutôt que de compter sur la détermination heuristique.


111
2017-11-24 22:51



Il convient de souligner que les crochets sont ne pas optionnel. C'est le seul mécanisme sans ambiguïté par lequel le navigateur peut identifier une adresse IPv6 numérique. - tylerl
Le port ne devrait-il pas être à l'intérieur des crochets? - jayarjo
@jayarjo Non, car les crochets sont là pour fournir la désambiguïsation entre l'adresse IP, qui contient des deux points, et le port, qui est séparé de l'adresse IP par un signe deux-points. - sysadmin1138♦