30 IPv6 Addressing – Introduction
Sawyer Hansen; Dante Rocca; and Mathew J. Heath Van Horn, PhD
A standard IPv4 address is comprised of 32 bits of information, resulting in 4,294,967,296 possible permutations. That’s a lot of unique identifiers!… until you realize that a significant number of these IP’s are reserved for special purposes and the estimated number of connected internet devices today ranges in the magnitude of tens of billions. If it were not for technologies such as NAT, our available address pool would have been depleted many years ago. However, the increasing number of internet devices has yet to show signs of slowing down any time soon, and we may reach a point where IP supply cannot keep up with demand. Fortunately, researchers from the Internet Engineering Task Force developed IPv6, the sixth version of the Internet Protocol.
Estimated time for completion: 25 minutes
Learning Objectives
- Understand the properties of an IPv6 address
- How to create an IPv6 Host ID from a MAC address
- How to create IPv6 address from IPv4 addresses
Prerequisites
Deliverables
resources
- IPv6 Compression Tool – https://findipv6.com/ipv6-compress
- IPv6 Calculator – https://www.calculator.net/ip-subnet-calculator.html
- IPv6 Address Generator – https://www.ipvoid.com/random-ipv6/
Contributors and testers
- Berkley Rocca, 11th-Grader, Grand Rapids Christian High School
- Jacob M. Christensen, Cybersecurity Student, ERAU-Prescott
Phase I – A very brief review
Generally, when you ask someone what a device’s IP address is, they provide you with an IPv4 address. That’s fine and dandy, but there’s more to that picture. Devices also have an IPv6 address. Like IPv4 addresses, these addresses represent the routing prefix and the host identifier. However, IPv6 addresses are structured differently than IPv4 addresses.
Learning IPv4 required knowledge of binary and decimal. IPv6 requires knowledge of hexadecimal. IPv6 addresses use hexadecimal values, or base-16 values, meaning there are 16 possible values in each digit, 0-9, a-f.
Here’s a translation table:
| Decimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Binary | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 |
| Hex | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| Decimal | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| Binary | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
| Hex | 8 | 9 | a | b | c | d | e | f |
As you can see, using the hexadecimal term ‘f’ is a much more abbreviated representative symbol of the decimal number ’15’. At least much easier on us humans than the binary term ‘1111’. This is helpful as the binary digits grow in size. Look at the difference between an IPv4 address in decimal vs binary.
| IPv4 address represented by decimal | <IP_ADDRESS> |
| IPv4 address represented by binary | 11000000.10101000.00000001.00000001 |
You can count the 1s and 0s if you want, but trust us when we say there are 32 bits there. To prevent us from running out of IP space again, IPv6 uses 128 bits! To put it