&gt; wildly different network stack that happens to offer similar enough TCP-like abstractions that user-level code often is only slightly affected, but everything else in the stack is profoundly affected.<p>TCP itself hasn&#x27;t changed. TCP is a protocol that sits on top of IP (version 4 or 6). Same with UDP. Yes the IP stack has changed, that kind of thing happens when you bump the version number ;-)<p>So from an application standpoint TCP&#x2F;UDP haven&#x27;t changed, the only thing that has changed is the structure to set up the IP connection, and even that is hidden away for most users (getaddrinfo() deals with most of the complexities for developers).<p>Percent signs in an address are only used on link-local segments with link-local addresses, as they are the only way to distinguish what network interface to use. In almost all cases where you are dealing with IPv6 you can completely ignore that aspect because you won&#x27;t have to deal with it, especially as an application developer trying to make connections to IPv6 hosts, or even starting servers&#x2F;listening for incoming connections.<p>&gt; The advantage of the &quot;just extend it&quot; plan is that it would have been that easy.<p>I disagree. This still requires that the entire IP stack be upgraded to support it, applications still need to update all of their network handling code to deal with the extensions, we&#x27;d be in exactly the same boat.