Chapter 4. Storage of IP Addresses
Once your application accepts an IPv6 address via an input field or an API or retrieves it from DNS, how does your app actually store that address?
And, given that we will be working with dual-stack systems for quite some time, can your application handle both an IPv4 and an IPv6 address?
Memory Locations
Consider, for instance, memory locations. With IPv4, you have a rigid 32-bit address. Is your application only allocating a fixed size in memory? What happens when you try to insert the 128-bit IPv6 address into that memory location? Will you have a buffer overflow?
Similarly, in reading from a memory location, have you again addressed the fact that IPv6 addresses may have a variable length, depending on whether address compression was used?
In a dual-stack environment, are you allocating memory space for two addresses, so that you can store both an IPv4 and an IPv6 address?
Databases
As with memory locations, you need to look at your database tables where you store IP addresses. Is the field you use to store IPv4 addresses big enough to handle the much larger IPv6 addresses? Do you need to modify any components of your application that interact with the database to address the larger size?
In reading or writing to the database, do you again need to compensate for the variable length of IPv6 addresses? With IPv4, you always knew you had four octets that were represented by decimal numbers. If you applied a format to the results retrieved from your database, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access