Ultimately, your application needs to bind to the network layer for the actual transport of messages to and from your application. In the ideal world, this is handled transparently for the application by the underlying operating system or the network bindings of the programming language being used. But is it?
Ideally, many of you can simply rely on your underlying operating system and skip this chapter entirely, but for those of you who do need to work at the network layer, read on for some points to consider.
Eventually, we’ll wind up in a situation where we have “IPv6-only” network stacks and will simply connect out to the network via IPv6. Whether that will occur in our lifetimes, though, is an open question. The reality is that we will be using “dual-stack” systems throughout the “transition” from IPv4 to IPv6 and potentially for quite some time after that. The challenge with dual-stack systems is in verifying that your application can in fact access both IPv4 and IPv6 network stacks—and that your application does choose to bind to both network stacks.
The availability of a dual-stack solution will depend largely upon the target platform on which your application runs. For instance, some embedded systems may not have the processing power or the memory to run multiple network stacks. Your options may then be limited to using either IPv4 or IPv6, but not both.
At the time of this book, all current releases ...