Vraag Hoe kan men de host en de poort van een IPv6-URL onderscheiden?


URL's hebben altijd de volgende indeling:

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

Het probleem is dat IPv6 dubbele punten gebruikt, net als het scheidingsteken tussen poort en host, bijvoorbeeld:

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

Maar wat als dit de host is en ik er verbinding mee wil maken met HTTP op poort 100?

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

Het probleem is de laatste dikke punt. Omdat nul's zijn weggelaten met dubbele dubbele punten (tussen 1f70 en 999), is het onbekend of ': 100' hoort bij het IP- of poortnummer. Hoe kunnen we dit weten?


80
2017-11-24 22:48


oorsprong




antwoorden:


De notatie is in dat geval om het IPv6 IP-nummer tussen vierkante haken te coderen:

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

dat is RFC 3986, sectie 3.2.2: Host

Een host die wordt geïdentificeerd door een letterlijk letterlijk IP-adres, versie 6       [RFC3513] of later, onderscheidt zich door het IP-letterwoord te omsluiten       tussen vierkante haken ("[" en "]"). Dit is de enige plaats waar       vierkante haakjes zijn toegestaan ​​in de URI-syntaxis. In       anticiperen op toekomstige, tot nu toe niet gedefinieerde IP-letterlijke adresformaten,       een implementatie kan een optionele versievlag gebruiken om dit aan te geven       formaat expliciet in plaats van te vertrouwen op heuristische determinatie.


111
2017-11-24 22:51



Het is de moeite waard erop te wijzen dat de haakjes zijn niet optioneel. Het is het enige ondubbelzinnige mechanisme waarmee de browser een numeriek IPv6-adres kan identificeren. - tylerl
Moet de poort niet tussen de haakjes staan? - jayarjo
@jayarjo Nee, omdat de haakjes er zijn om ondubbelzinnigheid te bieden tussen het IP-adres, dat dubbele punten bevat, en de poort, die door een dubbele punt van het IP-adres is gescheiden. - sysadmin1138♦