On Fri, Nov 19, 2010 at 23:52, William Herrin <bill@herrin.us> wrote:
I thought about that. Have a "one colon rule" that IPv6 addresses in hexidecimal format have to include at least one colon somewhere. The regex which picks that token out versus the other possibilities is easy enough to write and so is the human rule: "Oh, it's got hexidecimal digits and a colon in it. IPv6 address."
Even if this were feasible at this point, and it's not, this would still make it hard for humans to detect an IPv6 address at a glance, makes it impossible to quickly pick out any sections that are more relevant at the moment and would hog the colon for all eternity, blocking it for other uses. Also, this would make adding a port even more cumbersome.
fd00:68::1 and fd:0068::1 mean different things now. The former means fd00:0068::1 while the latter means 00fd:0068::1. I would instead have them mean the same thing: fd00:6800::1. The single-colon separator gets syntax but no semantics
I am not sure if this would actually be an advantage.
and the :: separator means "all middle nibbles are zero" instead of "all middle two-byte components are zero."
Putting the burden of parsing that on humans (and computers). Same as modern compression algorithms are optimized to doing more work while encoding and less work during decoding, it does not really make sense to make it harder to understand an address while reading it for the dubious gain of saving up to six colons.
I mean, when you think about it, the consequence that :: means "all middle two-byte components are zero" is kinda weird.
It's a commonly accepted, well-defined convention to save humans effort while not sacrificing readability. There are weirder things in technology.
Anything you call out will be interpreted as special. The more you call it out, the greater the expectation that the distinction is important. That's human nature.
Pattern recognition is a central part of our intelligence, so yes, it's human nature. This is not necessarily a bad thing. While I agree that some of the delimitations are social, rather than technical, it's still useful to have them. If this results in some people not assigning their customers a /56 cause it looks funny, so be it.
You've explained netmasks before to folks whose brains couldn't get past the dots in the address. We all have.
I honestly think I never explained (as in, after I understood the matter, myself) netmasks other than as a bit vector. Unless you mean "write 255.255.255.0 in there cause that's what right for you".
And referring to IP address notation as "dotted quads" just reinforces classful addressing concepts so that folks assigning themselves 10/8 subnets damn near always split on /16 and /24 boundaries.
And why shouldn't they? Unless they are a large ISP or similar, they will have enough space for pretty much everything they ever need to do. It's as good as anything and it allows people to be somewhat familiar with this stuff. Not everyone is an expert and that is fine. Personally, I have no motivation whatsoever to _truly_ understand _everything_ that's involved in today's wireless systems. Still, it's nice that I can use them reliably without needing this level of involvement.
And even more efficiently when we don't have to repeatedly explain that the mental model implied by the notation style is, in fact, not how the technology actually works.
If the person can grasp what a bit vector is, they will understand. If they don't, they will not understand it anyway and I won't waste time trying to explain it in depth. At least as of right now, you are giving those people some middle ground which allows them to have a good working knowledge to use IPv6 reliably without needing this level of involvement.
No sweat. When I shoot my mouth off, I expect to be challenged on the remarks. Part of the fun lies in discovering whether the thesis is defensible.
For at least a few rounds, I am usually good for that, too. Personally, I think I answered the implicit question above, but it made me re-asses and re-think my personal & professional opinion on quite a few things and that's a Good Thing, from time to time.
By the by, as long as I'm criticizing IPv6 notation, let me express just how poor a choice of separator character the colon is. The colon separates the IPv4 address from a directory or port description only slightly less often than the slash. Writing the parsers to handle an IPv6 address as a drop in is a pain in the tail. Should have used a dash, underscore or plus. Those are far more rarely used in tokenization.
A dash is the character people use when there is not a standard. Look at what they had to do for UUIDs to make them recognizable (which worked out really well, especially the version encoding. I really like their solution). Though they had the advantage that substring length _really_ doesn't matter other than as a way to correctly distinguish UUIDs from anything else. I don't really like the colon either, but I can't think of an alternative, either. Richard PS: Yes, I am fully aware that my complete email is moot anyway as the IPv6 syntax will not change, ever. I wrote it for fun :)