The IPv6 Numeric IP Format Is a Usability Problem
zerotier.com
zerotier.com
So get over it. IPv6 is not meant to be usually exposed to endusers. Use hosnames. Use DNS, or mDNS or LLMNR on small networks without a resolver. Etc.
If you need to connect from machine to machine in the lan, use mdns and host names. This already works out of the box even in v4.
> IPv6 is not meant to be usually exposed to endusers.
"You're holding it wrong". This is a crap argument against the article. Network admins have to manipulate this stuff all the time, and the article is written from the point of view of a netadmin, not an enduser. It's trying to describe both a problem (lack of client uptake despite support; struggles with human comprehension) and a potential solution. The idea that humans would never have to look at an ip6 address has proven to be a fantasy.
The only reason I can think of is psychological: People don’t want to learn new things, so they find reasons to dislike the new thing to be able to pretend they don’t need to learn it.
Also, the double-click argument is crap for two reasons: Firstly, it can be fixed by configuring your local software, and secondly, IPv4 addresses also had this so-called problem.
> IPv6 is still in the early stages of adoption
It really, really isn’t. It might look that way to you, in the US, at your home endpoint, but move to the backbone or outside the US and you get a very different picture. ARIN in the US just happened to be the last of the RIRs (except AFRINIC in Africa) to run out of IPv4 addresses, so the US was able to put off switching for longer than most, and the whole of the US is now consequently behind the curve.
We can chance these things easier than our visual pattern matching engine. (Not that we can't train it to perform better, but that just means we'll still make more mistakes and will be less efficient than with this small change.)
Fixed width fonts and indentation are good things, the majority of programmers use it for some reason, why not go for sane ergonomics in network related stuff?
I seriously doubt that any change in notation would be beneficial enough to be worth the 10 years of work, incompatibilities and bugs.
You don’t see people making this kind of fuss about MAC addresses; that’s because people know that they aren’t supposed to memorize them, and we treat them accordingly. That’s the thing about IPv6 - you have to realize that you have to let go of the notion of memorizing IP addresses, just as it would never occur to you to know your MAC address by heart. Use the DNS; eliminating the need to memorize IP addresses is what the DNS is meant for.
They're individual preferences not problems. We can't realistically have a bunch of different notation standards to make everyone happy.
The fact that IPv6 addresses are so unruly is a blessing in disguise. Use DNS, /etc/hosts, bonjour, .ssh/config, whatever. Use names, stop using addresses directly, even with IPv4.
You can do it. You should do it. Why haven't you done it yet?
You can name off tools that make it easier all you want, but how is the average user supposed to know that? When I set up my NAS, I wanted it to be accessible from the same address no matter what. I knew (at the time) about static IPs and manual DNS entries. So I went to my router's configuration and it didn't support manual DNS entries. So I opted for a static IP, and it worked. Sure, it's a kludge and not future proof, but I don't care. That's the problem. The "solutions" only work if you both know about them and care enough to do it the right (instead of the easy) way
(But then again, that is no reason not to adopt IPv6! Some things are going to get harder, but so many, many things are going to get easier that it is easily worth the tradeoff.)
For those who like to memorise IP addresses, my favorite ping in ipv4 is 8.8.8.8, but in IPv6 I like using 2600::1. Shorter, and more fun! (2600 as in the Hacker Quarterly/Hope.net or the old 2600 mHz hack, although the netblock is owned by Sprint, but I guess that is à propos..).
(And like I said, that should not be considered a reason to avoid adopting IPv6. The only thing I currently dislike about IPv6 is that my ISP does not give me a static network address.)
My ISP (DSL with teksavvy.com in Canada) offers a dynamic-ish /64 with SLAAC, then a static /56 subnet over DHCPv6. I know some people who had issues with their /56 subnet resetting, but that was usually solved by contacting tech support.
From what little I understand of it, 6rd calculates an IPv6 subnet by using the IPv4 address. So unless your v4 adress is static, your v6 subnet will be dynamic. Some cable providers are using this in Canada (Videotron). I hope they get rid of it soon, because it's really clunky!
2001:4860:4860::8888
2001:4860:4860::8844All the alternatives are either unreliable and slow (bonjour/mDNS) or require manual setup prior to use. Given that machines, networks, routes, etc. are all becoming increasingly ephemeral in the end all you end up with is a DNS, .ssh/config, or hosts file with hundreds or thousands of stale entries for things that existed for five minutes. In some environments there are nice systems for naming things and IP address management but these are hard to set up and maintain and aren't feasible in really heterogenous settings.
I guess Martin Fowler was right: there are two hard things in CS, cache invalidation and naming things. This is naming things.
I’ll agree with you on that, in certain cases. In my experience, OS X-to-OS X always works seamlessly, but Windows-to-OS X is much more annoying. It works around 70% of the time.
Say the hostname of the Mac on the local network is lorems-mac-mini.local. Then say I want to connect to this Mac over various services from my Windows computer (file sharing via Windows Explorer, vnc via TightVNC, nx via NoMachine, etc.). 70% of the time, providing lorems-mac-mini.local as the hostname works. The other 30% of the time, the same programs which worked just fine with the hostname as lorems-mac-mini.local all of a sudden won’t be able to find it on the network anymore unless the same hostname is entered without the .local part. Then, sometimes, neither solution works and the Windows computer can’t find the Mac at all unless I enter its IP address, which magically works.
Frankly, it became annoying enough that I now just enter the IP addresses of devices on my local network that I want to connect to now instead of their hostnames, since I know it’ll always work.
…in that sense, I guess I have to agree with your overall sentiment.
So, the problems mentioned in the post essentially were...
* ambiguity specifying ports
* software not recognizing addresses
* length to type (3-32+7 characters)
Looking past DNS, the first is only really an issue in web browsers, which I would doubt most people will actually use. The second is arguably a software issue, not a format issue. The third genuinely seems marginally debatable. Still, it seems like the amount of code needed to translate from one format to another would be trivial. In the amount of time it took to write the post, someone could probably have just written the code instead. There are tons of plugin mechanisms for stuff (shell, editor, browser, etc...)..> Given that machines, networks, routes, etc. are all becoming increasingly ephemeral
MPTCP addresses some of these issues.
The rational reason is that despite tons of "we have to adopt IPv6 or the world will end", people aren't learning it. Trying to understand the underlying reasons is worthwhile. The shittyness of the representation is one of those reasons.
(I agree with the people who say "making the parsing namespace even more complex won't help anyone" though)
This situation is the latter. That's the argument of the article.
I don't see any actual argument in the article, just narrow minded rant failing to see farther than it's own nose.
I am curious what other problems you think it has, that don't just come along with the bigger address space?
The realistic perspective here is still essentially the cost one: most people who have IPv4 hardware see little reason to move at all, until they have a problem.
I'm sure that it's possible to generate a new IPv6 for each session. But it's yet another pitfall for the unwary. For now, I just disable and firewall.
If you are a dissident or even a citizen concerned about privacy, you'd better be a part of the solution and not the problem as you are now by refusing to deal with ipv6.
https://en.wikipedia.org/wiki/Base36
I'd also want optional punctuation for formatting, for reading and data entry, just like with phone numbers. Maybe looking like this:
0123-ABCE-4567-FGHI
The US may have been slow to start, but is probably ahead of the curve now. AT&T (6rd, but still) and Comcast have a large amount of residential users that are IPv6 enabled; T-Mobile, Verizon, AT&T and Sprint all support it on wireless too (subject to apns and access technology).
In Europe for example, the IT profession has been bombarded with news on how IPv4 was running out, then it ran out, and then all problems because it ran out. Network courses have been teaching IPv6 for a long time, government has issued mandates to use it (and governments are not known to be fast on those issues...), and IT conferences used to talk about it to the point where it's such old news that it is no longer worth talking about.
I'm not saying that is a good thing or not, I'm just saying it IS.
It would be a pain to use ipv6 internally.
Now, the fact that you can NAT IPv6, doesn't mean that you should. Specifically, if you NAT your IPv6 prefix because that's what you do with your IPv4 block, then you're doing something wrong.
As an added bonus, if a resource changes addresses you just update the object and all of your rules are updated.
So.. Have you ever actually used ipv6?
With ipv6 your organization gets a prefix assigned, usually a /32 or a /48
So you would get assigned a prefix like 2626:32:400::/48
With ipv4 where if you were lucky you had a /16 that had 65,536 addresses - with "simple" /24 subnetting for 256 subnets of 256 hosts each.
With ipv6 you minimally have a /48 that has 65,536 subnets.
So you can just start subnetting things like 2626:32:400:0/64 is headquarters, 2626:32:400:1/64 is marketing. And you never have to worry about running out of address space on each subnet, since each subnet has room for 18,446,744,073,709,551,616 addresses.
And since there is room for 65,536 subnets, you can easily do things like immediately carve that up into blocks of 512 subnets for every geographical location and project... once. And not end up with "10.1.3.0 is marketing, but also 10.1.58.0 because we ran out of room"
So really, if you can type 192.168.x.y, you can type 2626:32:400:x:y.
An end user could tweak the text representation for their own tools, while continuing to exchange packets with the rest of the Internet.
Globally (again using user access to google as measurement) the adoption rate is still less than 10%, One could argue this could be considered still early stages of adoption.
actually, according to these statistics, the adoption rate in belgium is much higher: 40.39%
ip6emoji("fe8000000000000003ceecdfffe30c27",Char(0x2800)) => "⣾⢀⠀⠀⠀⠀⠀⠀⠃⣎⣬⣟⣿⣣⠌⠧"
Then:
deadbeef000000000000000000000001
2607f2f8a36800000000000000000002
fe8000000000000003ceecdfffe30c27
fe800000000000000000000000000001
2607f8b040078090000000000000200e
Becomes: ⣞⢭⢾⣯⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁
⠦⠇⣲⣸⢣⡨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂
⣾⢀⠀⠀⠀⠀⠀⠀⠃⣎⣬⣟⣿⣣⠌⠧
⣾⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁
⠦⠇⣸⢰⡀⠇⢀⢐⠀⠀⠀⠀⠀⠀⠠⠎
At first I was just playing around, but after a bit it begins to resemble one of those binary clocks. It even becomes somewhat natural to read. Might actually use this for myself... something nice about the 2x4 bit block patterns. 64bit pointer addresses?Wonder if there would be an interesting way to visualize a cascading failure of the kind that brought down AWS in past years. Which of course makes one wonder if there would be any kind of useful calculus for a series of such glyphs.
PS: according to wikipedia there is a calculus of communicating systems of sorts: https://en.wikipedia.org/wiki/Calculus_of_communicating_syst...
At the moment I happen to be on an up-to-date version of Windows 7 and here's what it looks like:
*edit: though it appears to render properly on Debian
Edit: Not sure why all the downvotes, I honestly don't see how "up to date Windows 7" is an oxymoron.
In regards to why I think you may being downvoted:
> reads like an oxymoron
The parent was being a bit facetious. We all know they are different operating systems. But it's far less likely that an operating system that no longer receives "feature" updates would be up-to-date on its fonts.
In any case, an oxymoron is (per Google):
> a figure of speech in which apparently contradictory terms appear in conjunction (e.g., faith unfaithful kept him falsely true ).
Which I think the parent accurately described. (It's apparently contradictory, but has meaning.)
I'll address this point, the sibling comment already addressed the other point (it wasn't meant as a criticism, by the way).
It's true that Windows 7 still get updates. However, these are mostly security updates, or bugfixes. We don't expect it to get new features. In this case, unicode font rendering. It is likely (but not guaranteed) that a user running Windows 10 would see a much better result.
Why any sane individual willingly chooses windows 10 is beyond me.
edit: Can't reply, but turning off the "phone home features" doesn't actually turn them off. It still phones home and you still get assigned an advertising ID. Sure, I could block it at the firewall potentially, but this is about taking an ideological stance.
Also, the settings in Win 10 allow you to turn off a lot of the phone home type stuff. Other than that, my opinion is that 10 mostly feels like a more polished 7.
Actually, it renders perfectly on Edge; so the problem is probably with Google Chrome.
(though interestingly when I open this page up with links2 on my vps, accessed through a terminal on the iphone, which is using a monospace font... it renders fine.. it doesn't render fine if I see the same thing with Putty on the Win8 computer. I guess fonts support in general on Win is bad)
And some users change their default font and don't even use installed fonts and override preferences because they're in charge of how things display on their computer.
I use Sofia-Pro and this is what I see: http://i.imgur.com/8PoNfdJ.png
Assuming that it is using font substitution (as it should be whether or not you’ve chosen Sofia Pro as your browser’s default sans-serif font… unless you’ve also changed some other settings too), then the reason those characters show up as question marks is because you don’t have any fonts installed containing glyphs for those characters. (I’d recommend Everson Mono² or Symbola³).
――――――
¹ — https://en.wikipedia.org/wiki/Font_substitution
² — https://en.wikipedia.org/wiki/Everson_Mono
³ — https://web.archive.org/web/20150625020428/http://users.teil...
Yes, actually. The only two fonts my browser is permitted to use are Sofia Pro and Meiryo. My point being nothing is wrong with alphanumeric representations of hexadecimal. Short of glyph fonts like Webdings, every font supports alphanumerics - even CJK fonts.
Some users change settings - heavily so. The "safest default" should be the assumption. Changing something that works for most people to work only for "people with a proper supporting font installed" is breaking the web as far as any devs should be concerned.
http://f.cl.ly/items/0E182U1p3r430M073w2i/braille.png
Seems like the font that OS X’s text rendering system substitutes for the braille characters (U+28E3, etc.) is Apple Braille Regular over the other fonts installed that also have glyphs for those codepoints (Apple Symbols, Everson Mono (font I installed myself), and Symbola (font I installed myself)).
As an aside (and yes, I’m copying part of a post I made more than a year ago¹; I’m still interested in knowing the answer to this!) I’m pretty interested on how OS X and Windows decide on which font to use when there are multiple fonts installed containing the required glyph. For example, I have two other fonts on my OS X system that have a glyph for U+2705 (Everson Mono and Symbola), but OS X always seems to consistently pick Apple Color Emoji’s glyph. Maybe OS X’s text rendering system goes through the fonts in alphabetical order and uses the first one it finds containing the required glyph? It would be great if end users could have a bit more control over the font substitution process. I know it’s possible to do in some text editors like Emacs², but I believe that programs like that use their own text rendering systems instead of that supplied by the OS (could be wrong though).
――――――
¹ — https://news.ycombinator.com/item?id=8865067
² — http://stackoverflow.com/questions/6491202/overriding-emacs-...
Without using the shift key it's easy to type base 32 numbers. That comes out to an average of 26 characters per IPV6 address.
So Hex
deadbeef000000000000000000000001
2607f2f8a36800000000000000000002
fe8000000000000003ceecdfffe30c27
fe800000000000000000000000000001
2607f8b040078090000000000000200e
Becomes base 32: 6ULMVEU0000000000000000001
160VPFH8R80000000000000002
7UG000000000007JNCRVVU6317
7UG00000000000000000000001
160VSB0G07G28000000000080E
If we are willing to use the shift key we could move up to Base 64 and get it down to an average of 21 characters. (Anyone know why the standard base 64 alphabet starts at A instead of 0?): 3q2+7wAAAAAAAAAAAAAAAQ
Jgfy+KNoAAAAAAAAAAAAAg
/oAAAAAAAAADzuzf/+MMJw
/oAAAAAAAAAAAAAAAAAAAQ
Jgf4sEAHgJAAAAAAAAAgDg
Now if we are willing to use unicode characters, why stop at base 256? Unicode has 95,000 characters so we could use a base 65,536 number and cut it down to 8 characters, now we're talking! Unfortunately to get it down to 4 characters would require 4,294,967,296 different characters. Even the extended unicode set won't get us there.But maybe an alphabet with emoji could be practical. You could have smiley or sad faces in your IP address. All kinds of possibilities with that. Though software such as this HN website would have to be fixed to be able to display it. But you know, a long term project.
::6ULMVEU0000000000000000001
::160VPFH8R80000000000000002
::7UG000000000007JNCRVVU6317
::7UG00000000000000000000001
::160VSB0G07G28000000000080E> Many current processors do not find 128 bit integer arithmetic, as required for this technique, a trivial operation. This is not considered a serious drawback in the representation, but a flaw of the processor designs.
Oh, IETF, please never change.
[1]: http://lifehacker.com/162484/save-time-with-text-substitutio...
Base 32 seems like a good half-way solution of length reduction vs glyph complexity, as Base 64 or Base 89 (or whichever the RFC suggest) include too many distracting characters (IMHO).
Of course, Chinese/Japanese speakers have a natural advantage here (Katana and Hirigana both fall short of a contiguous 64 character mapping):
ip6emoji("fe8000000000000003ceecdfffe30c27",Char(0x3300),stride=8) => "㏰㌀㌏㏷"
( though hopefully that's not some form of insult in Chinese! ;) )
$ dig -x 2600:3c03::f03c:91ff:fe93:50b0
; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> -x 2600:3c03::f03c:91ff:fe93:50b0
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40052
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;0.b.0.5.3.9.e.f.f.f.1.9.c.3.0.f.0.0.0.0.0.0.0.0.3.0.c.3.0.0.6.2.ip6.arpa. IN PTR
;; ANSWER SECTION:
0.b.0.5.3.9.e.f.f.f.1.9.c.3.0.f.0.0.0.0.0.0.0.0.3.0.c.3.0.0.6.2.ip6.arpa. 18272 IN PTR itchy.jrock.us.
;; Query time: 0 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Fri Feb 19 22:34:49 EST 2016
;; MSG SIZE rcvd: 118I think this article has a lot of really practical ideas that would help a lot.
I suppose the only other thing I’d want to allow in an IPv6 address is a Perl-like underscore anywhere for visual separation that acts like a comment; e.g. Perl lets you say things like 1_000_000 to mean 1000000. The article suggests a single dot but I think that could still be combined with visual underscores for things like "dead_beef_._0001".
"dead:beef:0000:0000:0000:0000:0000:0001"
becomes
"3q2+7wAAAAAAAAAAAAAAAQ"
Which sucks because of the non-alphanumeric characters and the long run of A's, but one gets the idea. Which is to a general user hex encoding might as well be Hungarian.
(base 85 representation of IPv6 addresses)
Edit: The commentary at the end suggests more of a joke, even though "It may be expected that future processors will address this defect, quite possibly before any significant IPv6 deployment has been accomplished." wasn't exactly false. I'm not sure why you linked an intentionally-bad RFC for a reasonable concept?
[0] https://en.wikipedia.org/wiki/April_Fools'_Day_Request_for_C...
I'll be more clear about my earlier post. I realized the RFC itself was put out as a joke, but I couldn't really tell if the 128 bit math was bad on purpose or out of laziness. Or what the RFC author actually thought about using such a compact representation.
It seems like something along those lines could be a good idea, although in practice I think 22 URL-safe base64 characters with four error correction bits would be better representation. Looking at Wikipedia's nice base64 page, one possibility would be to use '-' and '_' for the two non-alphanumeric characters and allow the longest run of zeros ('A's) to be changed to '~'. Automatic error detection seems like a really good idea whenever humans are forced to interact with 128-bit numbers, but then you can't easily generate subnet masks by hand.
In general, I think avoiding interacting with them as much as possible is the most important step. At this point, it would take a while for any alternate representation to be widely supported by software even if there was wide agreement that it was a good idea. OTOH, a general "least bad" compact representation of larger numbers with error detection could potentially be useful for other things (even if it doesn't get used for IPv6), such as ECC public keys.
If the array you are referring to is the human-readable buffer used to store ipv6 addresses, I would assume the 'bugs' you are talking about are entirely similar with ipv4.
"dead.beef" is bound to exist now that ICANN is going crazy with top-level domains.
: == two keystrokes using two separate fingers
. == one keystroke using one finger
.. == ~1.25 (ish) keystrokes, since your finger has to move to the dot once and then tap twice and only one finger is involved
:: == 3 keystrokes using two fingers
Right off the bat, I notice that when I'm quoting something using double quotes or placing something in parentheses or curly braces, I don't even have to think about pressing shift. I type them just as quickly as any other punctuation. So I don't think there's much validity to this argument based solely on keystrokes.
On a German keyboard, parentheses require a shift, but to get square brackets, one needs to hit AltGr (or "Option" on a Mac keyboard) which quickly gets annoying if one has to do it a lot.
Except for that, I agree with you.
FWIW, I switch parens and square brackets for exactly that reason. It'd be great if distros offered this as an option, but I know my way around xkb enough to do this much.
I haven't gone so far as to hack the system to allow Caps Lock to enable the colon and other punctuation, but I've long considered it.
...So for me, two periods is a million times better than a colon.
On German layout, for example, `:` is on `Shift` + `.` – and therefore just as easy to use as `.`
(Sorry for the formatting, but this damn page doesn’t have any useful formatting syntax, or escaping. If you want to enjoy the formatting properly, just use a userscript to run a markdown parser over this page).
This is not really an end-user issue but it is a serious usability issue for IT admins and developers. It's very very common to schlep around raw IPs constantly when messing with networks and I don't see that going away. It's also very important to be able to visually parse IPs when understanding the topology of a network, writing firewall rules or routes, etc.
This is a DX (developer experience) issue more than a UX (user experience) issue.
Edit: three specific problems with DNS:
(1) What happens when things are not configured yet?
(2) OSes are designed to have one DNS server but people belong to many networks either at once (local + VPN + virtual + ...) or serially via mobility. In reality you need many DNS servers, but then how do you deal with naming conflicts?
(3) DNS is dependent on IP so you can't use DNS to debug DNS issues. It's a circular dependency.
In practice IP schlep is very common.
I mean DDNS where the DHCP server tells the DNS server which IP has what hostname, not e.g. dyndns.
Actually that's not a problem for that. Since people who are actually using them have no idea about IPv4, too and just copy addresses. Actually you could create local address with everything prefixed by fd + 40 bit which could be just fdff:ffff:ffff:ffff::1 which isn't really hard to remember.
On the other hand, DNS could fix this - just have a TLD of ip6 and have it resolve all the examples in the article. It would require no changes to current software and will work transparently. I.e. you'd enter http://deadbeef.ip6:1234 and when the ip6 TLD servers receive a request for deadbeef.ip6, they will reply with dead:beef:0:0:0:0:0:0. Similarly with deadbeef.1.ip6 and so on. You could easily implement this in the OS too without much hassle and not even need servers on the internet to do it.
In any case, if you really need to, what's the problem with copy-pasting an address?
I just had this dystopian vision where a non-profit operated .ip6 to work as discussed then went defunct and a domain-grabber (named Network Solutions) bought it. Everybody scrambled to patch their recursive resolvers real fast :-)
http://deadbeed.ip6 would help to start using it.
If the local dns could be setup to autotranslate them to ip6 could help this notation to gain traction
In an embedded system where memory is at a premium and you may have serious constraints on how long things take (e.g. for timing purposes), the ability to hard-code an address or have it entered in some way saves you from having to support an entire DNS layer in that system.
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48,43:48,58:48
> dead:beef:0000:0000:0000:0000:0000:0001
> I’m sure there was a reason for this choice, but to us after using IPv6 for years it still seems utterly arbitrary.*
If I had to guess, I would say they're there to chunk things up for reading aloud.
"Read me that address off the console."
"Okay, d-e-a-d..."
"Got it."
"...b-e-e-f..."
"Yep."
"...a bunch of zeroes, then 1."
They also make it harder to lose your place when reading it back.
The colon is a non-starter, not everyone uses a qwerty layout (azerty layout has direct access to the colon) but as ipv4 fields can be smart and automatically add a . after 3 characters or with a press of the left arrow (windows has been doing this for 15+ years), ipv6 fields can automatically add a : when needed.
Omitting leading zeros is not mandatory, you can input all those zeros if you so choose (turns out the author actually does).
Better blobs for double clicking selects them ? Well maybe try triple clicking then, though in my shell with default settings double clicking an ipv6 address selects it. Also separating fields of 4 characters improves readability, ipv4 also separated fields but I don't see the author criticizing this.
why not re-use the dot from IPv4 notation? Because it would add unnecessary complexity, also 17 years later is a bit too late to ask for such a drastic change in an established standard.
Lastly if you find the : unappealing, why don't you code your tools to show them as . and while at it add a layer in your code that will translate your preferred way of displaying ipv6 into the actual one ?
All I take from this post is that zerotier is probably incompetent, refractory to ipv6 and is certainly whiny about non-issues.
That is the MAIN reason why its deployment and adoption rate has been a long clusterfuck.
The prefix should be all zeroes, so you get something like: ::12.123.99.222 Which is not that hard to remember. :P
In fact I'm not sure why it wasn't done that way to begin with, unless IPv6 fixes a bunch of other problems I was not aware of
Arstechnica has an article about it: http://arstechnica.com/business/2016/01/ipv6-celebrates-its-...
2001:4b10:bbc::1
2a03:2880:2110:df07:face:b00c:0:1 www.sprint.net has address 208.24.22.50
www.sprint.net has IPv6 address 2600::Edit:
BTW, don't most home routers etc take a hostname and add it to a .local DNS domain stored on the router?
but yeah, whenever I see an ipv6 format address, it takes way too long to parse it out. unless you were a network engineer at some point, it's not going to become second nature any time soon.
String representations of IPV4's aren't all of equal string length either.
IPV6 can't be shortened into, for example, dead.beef.de, because it's ambiguous as to whether that would be a domain name, or an IPV6 address. Likewise, other suggestions make it ambiguous with an IPV4, or even if not technically ambiguous, likely to break some existing code.
Raw IP's aren't exposed to the masses often anyway, so the bulk of the downsides of the current compromise should be constrained to just technical people. They will just have to figure it out.
Examples: 2001:DB8::13.1.68.3 ::FFFF:129.144.52.38
In the suggested format, we'd lose this convenient transition feature and are left with: 20010DB8..d014403 ..FFFF81903426
This is less clear than the existing method with the colons and dots.
If one decides, in this proposal, to support trailing IPv4 addresses as is currently supported, e.g., for IPv6-mapped-IPv4 addresses, some pretty ugly things happen: 20010DB8..13.1.68.3 ..FFFF129.144.52.38
Is .13.1.68.3 a typo of an IPv4 address with missing whitespace or is it an IPv6 address with an IPv4 address embedded at the end?
And what about parsing "FFFF129"? Are we really going to change base from 16 to 10 between the "F" and the "1"?
Or are we going to introduce another separator, e.g., a leading "." on IPv4 addresses?
..FFFF.129.144.52.38
Or are we going to require that the ".." be the separator there?
0000:0000:0000:0000:0000:FFFF..129.144.52.38
Or are we going to use the existing format for IPv6 addresses that embed IPv4 addresses, and another format only otherwise (Hint, of course one must support the existing 20 year old format.)
To add another historic complication for some implementations: https://en.wikipedia.org/wiki/Dot-decimal_notation#IPv4_addr...
a leading zero on an IPv4 address octet meant that the byte is specified in octal.
One can easily argue that the best solution is to use a different special character, e.g., ":", for IPv6 rather than the IPv4 "." because leading zeroes had a special meaning in IPv4 syntax.
All in all, it looks to me like the early IPv6 community thought about the address syntax... a lot.
Edit: he hasn't even mentioned zone IDs represented by a % which would make him even more angry if he had to figure them out
tl;dr use mdns. You should never have to type an IP. Yes the mdns software sucks and has a huge attack surface because it's bloated.
This is not a bad thing either - when all apps act like they're distributed, or could be, we'll get a lot better tooling for actually writing them.
If you're grabbing an IP address you have to, at least in theory, coordinate with other machines on the network to make sure it's not already taken. It's not the same.
As long as the coordination protocol is not output a wrongly formatted url to the terminal and have the user cut and paste it into their browser, the coordination protocol should be able to handle it.
Yes, we'd barely introduced fire then, we certainly didn't have the technology to double click to highlight a word...
No case issues, semicolons don't appear in dns or ipv4, no shift key required.
The article should have started with this. Could have saved me countless seconds of skimming the article while summarizing in my head "boo hoo, I haven't figured out how to make my workflow any better after 2 years."
literals were introduced because the order of parsing for an email host is first "Domain" for any non literal, then literal which defaults to IPv4 [127.0.0.1], then a literal prefix was added for IPv6 and any future registered protocol "[IPv6:::]"
the order for parsing for a URI is:
// host = IP-literal / IPv4address / reg-name
// IP-literal = "[" ( IPv6address / IPvFuture ) "]"
ipv6 just happens to use a colon which conflicts with the port delimiter from authority in a URI so it's a literal and not a registered name
// [ userinfo "@" ] host [ ":" port ]
> why not re-use the dot from IPv4 notation
because you have conflicts from "0.0 -> 0.0.0.0" to "255.16777215 -> 255.255.255.255"
0-9 conflicts with an IPv4 decimal
a-f conflicts with GTLDs
the only reason your blobs don't have a conflict with an IPv4 Historic is because hexadecimal notation starts with 0x
> try double clicking on those
try double clicking on any of these valid characters from "reg-name"
// unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
// sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "" / "+" / "," / ";" / "="
or these from IPvFuture
// IPvFuture = "v" 1HEXDIG "." 1( unreserved / sub-delims / ":" )
// unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
// sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "" / "+" / "," / ";" / "="
if you want to develop your own "standard" either use the literal IPvFuture, or use a Registered Name
non literals IPv4, IPv4Historic, and Domain names are valid registered names, but domain names aren't even part of the URI standard
the only reason you would have conflicts with domain names is because they're de facto parsed after an IP, so a double dot would probably be discarded as invalid, which is why punycode exists for unicode
if at that point you didn't have any conflicts it would be a registered name, but you wouldn't have any way to resolve them
lastly, if you want to fix the nonissue of double clicking use a registered name, if you chose to use underscore you may have conflicts with dns
edit trying to figure out newline parsing
This is exactly what the article means by
> To fix the ambiguity, brackets were introduced
The addition of brackets disambiguates the grammar.
> the order for parsing for a URI is:
> // host = IP-literal / IPv4address / reg-name
No, that's a part of the grammar; it only means that a host is either an IP-literal, an IPv4address, or a reg-name; it does not imply any sort of ordering to those rules. Normally, the grammar should be unambiguous. Unfortunately here, the grammar for IPv4address and reg-name actually are ambiguous; I'll get to that.
> the only reason you would have conflicts with domain names is because they're de facto parsed after an IP
It's not defacto. It's in the same standard,
> The syntax rule for host is ambiguous because it does not completely distinguish between an IPv4address and a reg-name. In order to disambiguate the syntax, we apply the "first-match-wins" algorithm: If host matches the rule for IPv4address, then it should be considered an IPv4 address literal and not a reg-name.