Internet Protocol is a pretty big concept, so we talk about it all over the place. The short answer here is that IP is the protocol that conducts the transmission and communication of data across the internet. A long time ago in a developer's office far, far away, a numbering system was put together so that computers could identify themselves in these information exchanges. That format was called "IPv4."
But there are only so many numbers in the IPv4 phone book that can be assigned, so other smart people boldly went where no one had gone before. "IPv6" was created as a replacement for IPv4; by using a larger character set it increases the number of available IP addresses. This allows for the further expansion of the internet by permitting additional devices to connect to it.
IPv6 is the successor to IPv4, and is already in the process of replacing it.
To know why we're starting to use IPv6 instead of IPv4, you need to know a little about 6, a little about 4, and a little about why we need IP in the first place. So here we go.
Internet Protocol is part of the "Internet Protocol suite," and it's in charge of labeling each computer with an address as it joins the network, communicating with TCP as data enters or leaves transit, and cooperating with interfaces to help users find what they need. It does quite a bit, and it wouldn't be a stretch to call it the glue that holds the internet together. That's why internet protocol is often referred to as "TCP/IP".
Now, we mentioned addresses, and addwesses is what bwings us together today. Just like the postal system, if addresses are not labeled and registered in the system, no one knows where to send the mail to. So as each device connects to a router, or as each router connects to the internet via an Internet Service Provider (ISP), an IP "address" is assigned. Routers assign addresses to devices that join the network, and ISPs assign addresses to routers that connect to the internet. Built that way, it functions a little like the area code system for phone numbers.
Again, just like the postal system, for this whole "address" thing to work, everyone's gotta be using the same conventions and formats, so a system was developed and put in place that gave IP addresses a range of possibilities to choose from. That original framework is called IPv4.
Before we go any further, we have to take a sharp detour into material from an entirely different article. Otherwise both the IPv4 and IPv6 explanations will read like gibberish. Bear with us.
Decimal numerals (the ones most humans use every day) use the characters from 0 to 9, then add digits for larger numbers. Digits have value ranges (the "ones," "tens," and "hundreds" places and the like), with the characters indicating how many of that value there are (30 = three tens, etc.). Because each digit has a set of ten possible values, each digit's value range is tenfold the value of the previous. In other words, each digit is a power of ten.
Binary uses the characters 0 and 1 for its numerals, then adds digits to make numbers larger than that. Each digit is a power of two and, as such, values double with each digit. The first digit is either 0 or 1. The second digit is either the value "two" (not the character, just the value) or it's 0 (the symbol equaling the value here). The third digit is either "four" or 0, and so on. In order to include the value of the digit in the sum of the number, the digit is marked with the "1" character to indicate "yes", "present" or "on". If the value is not to be counted in the sum of the number, it's marked with a "0".
Thus the decimal "1" equals the binary "0001". "2" equals "0010", "3" equals "0011", "4" equals "0100", and "5" is "0101."
Whew, that was a mouthful. You got it, though. Right?
There's at least two more "crash course" words you need to know. Just about everything else can be explained along the way.
Just keep those bits and bytes in mind, and you should be fine.
IPv4 stands for Internet Protocol version 4. Plot twist: It's not the fourth version. The "version 4" part is largely a retronym to distinguish it from the new version (more on that later). Precursors to 4 were all experimental, never really seeing implementation. 4 is the de facto beginning of the internet.
The cornerstone of 4—the long and short of it, really, and the whole reason we came up with v6 to replace it—is the method of assigning and maintaining addresses. This is the part where that 60-second college course on programming comes in handy. And that's because IP addresses are a decimal representation of binary number in a specific format. At least, that's what they are in IPv4. We'll deal with the IPv6 mess when we get to it.
So here's how it works—an IPv4 address looks like this:
The max value for any of the four groups is 255. So a maxed-out IPv4 address would be
At this point, you're looking at the number thinking A): "What's with the dots?", B): "Why 255?", and C): "I became a brain surgeon so I didn't have to deal with complicated stuff like this." All are valid thoughts, but one of them we can't really address for you. We can only address your questions regarding how the network likes to address your computer when it talks to it. So we'll start with those.
The numbers in the IP address above are the decimal version of what was originally in a binary format. See, each "255" is an octet of bits, or a byte if you will. The maximum value for a byte is 255, as that's the sum of all eight digits if they come up with a "yes" value. So what you have in an address is four bytes, or a quad of octets, or a 32-bit address. Any are applicable names (and all of them are tossed back and forth between code monkeys).
Confused yet? No? We're probably still headed that direction.
Each binary digit (0001, 0010, 0100, 1000, etc.) is double the value of the previous one (1, 2, 4, 8, 16, yada yada). So a "1" in each of the eight digits in a binary byte equals 255. That's the sum of 1+2+4+8+16+32+64+128. Make more sense? Good, cause we're not done yet.
Each byte has 256 possible total values (don't forget zero!) which, when multiplied by its four friends, leaves you with a total of 4,294,967,296 (over 4 billion) possible combinations. That's all the possible addresses available, without finagling things a bit by doing things like hiding a device's IP address behind the router's IP address.
There are ancient hieroglyphs in Egypt that talk about the dark arts of how the numbers are determined, why machines that serve different roles in the network (including routers and gateways) get certain numbers, what the difference is between static and dynamic addresses, and how these numbers relate to words in regards to finding websites. But we're not going to translate them for you here.
Remember that 4 billion number we just gave you? That was a fine and dandy number when the number of computers in the world was still outweighed by the number of people who liked disco. But when the internet boom of the 1990s happened, things started to look a little tight. It's called "address exhaustion" by places fancy enough to end their name in "-pedia" and, like shark-infested waters, it's a thing best avoided if possible.
Back in the '90s, some very smart people (read: Internet Engineering Task Force or IETF) looked at how quickly we were buying computers and adding them to the global network, and said "Well that escalated quickly."
So the team with the second-least pronounceable acronym put their heads together and built themselves an answer to the problem. Before the millennium had closed, they had completed their work of art, and began taking steps to unleash the juggernaut on the world.
Spoiler alert: their solution was called IPv6.
IPv6 stands for Internet Protocol version 6. Double plot twist: It's not the sixth version, either. Just as there was no version 1-3, there is no version 5. 5 is right out. The closest thing to it was something that was used entirely for the purpose of beginning the transition from v4 to v6. They didn't even give it the v5 name.
In other words: IPv4 = "Internets", and IPv6 = "Internets II: Attack of the Hexadecimals " For simplicity, we'll leave it at that.
So what is this "New and Improved!" version of the Net? It's a pretty big departure from IPv4. That's all because of the method they chose for giving addresses on the web room to breathe. Here's the obscenely reductive answer: in order to make room for more addresses, IPv6 switches IP addresses from binary to hexadecimal.
That's right. Hexadecimal. A word some of you are reading for the first time in your lives. It's okay; we've all been there. The switch from a base 2 number system to a base 16 system has a bunch of interesting side effects, and things get simpler and more complicated at the same time. Observe:
Okay, so that made sense, right? Well to be fair, hexadecimal is not a very intuitive system to those of us raised in base 10. But let's try to break it down a bit.
Hexadecimal is based on the number "16"—"hex" means "6" and "dec" means "10." We have no idea where the "-imal" comes from.
The base-16 system suffers an interesting problem: it needs to borrow characters. We use a base 10 system that has ten base characters, and binary only needs two characters. That means there's a surplus of eight (yay for more math). But trying to convert decimal to hexadecimal reveals a deficit rather than a surplus. It needs five more unique characters than are available.
If you're wondering "Why not just use 10-15 to complete the 0-15 set?", then we're sorry to tell you that the numerals 10-15 are not unique characters. They are numerals comprised of two unique characters each ("10" is built of a 1 in the "tens" digit and a 0 in the "ones" digit). Since the number system has to have unique characters to represent the base numbers, it had to borrow from somewhere else.
And that's how letters become numbers, dear friends. They snagged letters A-F, reassigned them as the characters for the numbers 10-15 respectively, and then cackled "It's alive!" as their creation rose from the table and began to walk.
Just like its friends Binary and Decimal, little Hexi likes to repeat herself. Each digit is a power of 16, with each digit offering 16 times the possibilities of the predecessor. Compared to both binary and decimal, that means you build up to big numbers fast which, as you'll see below, is kind of the idea.
Now we've waxed whimsical about the hexadecimal system long enough. Time to talk about the actual format used in IPv6. IPv4 was four sets of decimal numerals that represent eight binary digits, where each digit is one bit. Makes sense, right? IPv6 is eight sets of four hexadecimal digits, where each digit is four bits. Hexadecimal accomplishes in four digits what binary has to spend sixteen digits doing. So base-16 hexadecimal is four times larger (rather than the eight times that might be assumed) that base-2 binary. That's because…powers of two…or something.
We asked our dev team to clarify all of this for us, but they all laughed and kept walking. We don't know if that means we should have gotten it by now, or that we're never going to get it, so we're just going to move on.
The important detail is the matter of scale. IPv4, as mentioned above, is a 32-bit system. It affords a maximum possible number of internet addresses of around 4.3 billion. IPv6 is a 128-bit system. That affords…lots. We've just about said our peace here, so we'll drop the value of that bad boy down in the next section. Let's just wrap things up with a visual example. If you thought you didn't know what to do with a IPv4 address...then behold:
That's an example IPv6 address. And keep in mind that all those zeroes could potentially be number-letters too. Fun, huh?
We've already discussed how IP addresses needed room to grow. The binary format that was being used couldn't match the demand, so eyes turned elsewhere for a solution. The two questions at heart here are how we ran out of 4 billion addresses so fast, and why we decided a hexadecimal base was cool enough to roll with. So we're going to label the applicable subsections that way.
Let's get real for a moment. 4 billion is a lot. Not more-than-every-living-person-on-the-planet big, but more than halfway there. Even if it's not as many addresses as we have people, not everyone on the planet owns a device that can connect. And not everyone is going to be online at the same time. And we can go all "area code" on this stuff by slipping a bunch of devices behind a single router, then giving that router its own IP address. So again, how did we run out so fast?
Well, let's start with the devices. Yeah, not everyone has one. But more and more frequently, people have more than one. An individual may have a desktop, a laptop, a tablet, a phone, a gaming system, a blu-ray player, a smart tv, hand-held gaming device, and maybe even a Pokedex or a sonic screwdriver if they're really going for broke. Obviously, not everyone will be fully loaded with such an arsenal, but such an arsenal is possible. And that's just the consumer side of things.
Ever heard of things called servers? Networks? IT departments? This is not the place for a discussion on these things; we've already melted your brains more than our puny little puns are worth. But those things are important. And right now they're important because they remind us that businesses use computers. A lot of them. Like millions of them. Work computers, servers and network devices, smart equipment for use in board and conference rooms. Even GPS devices for delivery trucks. Or how about Tony Stark's Iron Man suits?
These are all business investments capable of connecting to the internet. That means they would all need IP addresses as well.
What's more, companies and other organizations can cut out a chunk of address possibilities for themselves if they can afford to pay the premium. Apple, for example, has a block set out for them that's larger in population than some countries. Many businesses are like that.
These things all slowly chip away at our reserve of available addresses. It's also important to keep in mind that we aren't necessarily on the brink of IP address exhaustion just yet. But with technology escalating the way it has been, it's certainly on the horizon. And that's definitely a brick wall that's best to find a way around, rather than slamming into it and having to pry yourself off like a Looney Tunes character.
Hang in there, we're almost to the end. And there's bound to be a worthwhile joke around here somewhere. Don't worry; we'll find it.
The tight squeeze we were expecting to feel as a result of using a binary system made us think twice about just adding extra digits to patch the problem. Smart people who probably didn't get paid as much as they deserve determined that a system with a larger number base was a good idea. We couldn't use the decimal system, though, for the very reasons we switched to binary in the first place: it's cumbersome for a computer to work with. We needed something that would give us the expanded values that decimal offered but still translated well with binary.
So we picked a number that was close to ten but bigger, and that was bigger than two but still sat on that magical progression line that is the "powers of two" table. Because hexadecimal is on that line of progression, it can be disassembled into pieces that binary can process, then reassemble. But it's still a big number, so it does its job.
The same applies for the choice to use eight sets of four digits to produce a 128-bit system. Each set is two bytes, making it relatively simple for a computer digest it. Meanwhile, it offers astronomical levels of possibility when assigning addresses. The computers in use when IPv4 was created might have struggled to deal with IP addresses this big, but modern devices don't. Which really is surprising considering how big the difference is between v4 and v6.
Oh yeah, we still haven't dropped that bomb on you yet. The approximate number of possible addresses in an IPv6 system is 340 undecillion. You're probably nodding your head but thinking to yourself "You just keep throwing things at me, and I have no idea what they are" So let's give you a sense of scale.
Starting at the millions line and moving up, here are the major headers for decimal progression:
Now, we could write it out in scientific notation to save space, like a person who actually plays with these kinds of numbers would do. Or we could do something way cooler, and just slap the full decimal numeral on the page and watch your brain go blank as you realize how big it is.
Man, that's a lot of zeroes.
So why do we use IPv6? It's easy for computers to digest, even though it's manipulating numbers so big we have an extremely difficult time quantifying them as human beings.
Nothing. This a division-of-labor scenario. It's a very "You do your thing and I'll do my thing that lets you keep doing your thing" kind of thing. The system is already set up to slowly phase out IPv4 and phase in IPv6. The important takeaway here is that computer systems develop and expand fast, and making sure there's enough freeway to facilitate the traffic is a tough job. It's certainly a job that's served better by prevention than it is by response. And even though much of that job involves stuff that most of us find nebulous and mysterious, it can be understood. And the more you understand, the easier it is to tell your developer friend "No, I don't know what's wrong, but I do know it wasn't my fault. Also yes, it is plugged in."
Call us if you're interested in learning more about the—you know what, we're not fooling anyone. Let's put it this way: If this stuff confused you, then call us, and we can commiserate on how much it feels like a migraine to think about this stuff. Maybe then, after a few aspirin, one of our sensitive and understanding support crew members can tag-team with a dev guy (or gal) in explaining the concept, until we all know what on earth we're talking about.
Because, to be fair, this is a difficult subject to digest, and we can't be totally certain that our humor was worth the punishment (see, we told you we'd find our winning joke).