ipv4 deals with 32-bit addresses and we found out very quickly that we had a limited number of addresses given the number of people who wanted to communicate on the internet so we created a new type of addressing called ipv6 this is a 128-bit address and if you look at how that translates back to decimal you can see that there are a large number of addresses available with ipv6 if you were to divide up the ipv6 address space and hand it out to 6.8 billion people every person would be able to have this many addresses each meaning that we have enough ipv6 addresses for our foreseeable future ipv6 though looks a lot different than an ipv4 address this is the ipv6 address in binary you can see there are 128 binary values in an address and we tend to show ipv6 addresses written as hexadecimal values you can also see that we've separated the address into different groups there are eight groups and in each group there are 16 bits this might also be referred to as two bytes or two octets in a single group if you were to write out an entire ipv6 address it would look like this value here of fe80 colon zero zero zero zero colon zero zero zero zero colon zero zero zero zero colon fd18 colon zero six five two colon c f f d colon 8f52 that is obviously a very large address to write down there are some ways to use shortcuts to write these values a little bit smaller and we'll talk more about those abbreviations in just a moment but if you were to abbreviate this ipv6 address it would be fe80 colon colon 5d18 colon 652 colon cffd colon 8f52 still a lot of values and a lot of writing for ipv6 but the abbreviation process makes it a little bit easier to view read and keep track of these addresses with ipv4 we could almost memorize certain ip addresses or at least tell other people what that ip address might be but since these ipv6 addresses are so large we don't tend to memorize these large values instead we would use a domain name server to be able to reference these ip addresses as the name of the device rather than writing out all of those hexadecimal values fortunately there are many ways to abbreviate or what we call compress an ipv6 address if there are groups of zeros you can abbreviate all of those groups and replace them with a double colon only one single set of double colons is allowed in any particular ipv6 address but it is a very easy way to remove a lot of zeroes from those addresses you can also remove any leading zeroes in a group which very often can decrease the number of characters you have to keep track of in an ipv6 address let's try a compression of this address 2600 delta delta delta delta one one one one zero zero zero one lots of zeros and it ends with zero zero 1 well we know that we can remove leading zeros from any of these groups so let's remove one of the leading zeros we have zeros in front of this one we'll remove those all of these zeros can be removed and you can see that we're left with 2600 dddd1111001 it certainly simplifies things quite a bit now we can start removing groups of zeros if we have zeros that occur one after the other we can replace any of those groups with a double colon so in this particular example we can remove this zero this zero and this zero and replace all three of those with a double colon that means that our final compression for this ipv6 address is two six zero zero ddd one one one one one double colon one makes it a lot easier to write the compressed address rather than the long hexadecimal value you can see here at the top let's do another compression we'll take this ipv6 address of 2601 04c3 4002 be00 three groups of zeros and then zero zero six six the first thing we can do is remove those leading zeros so we're able to remove the leading zeroes in all of those groups of zero and there's two zeros in this last set of octets we can remove that so that is just six six now we can look at what groups of zeros we might have and replace those groups with a double colon and in this ipv6 address we do have three groups of zero we can remove all those zeros and replace them with a double colon that means that this ipv6 address is converted into the format of 2601 4c3 0 be00 double colon 66 just as we use dhcp with ipv4 we could use dhcp with ipv6 but we've also created methods within ipv6 that allows us to statically assign an ipv6 address without using a dhcp server we do this by modifying the mac address of our device to create what's called an eui 64. this mac address we know never changes on our computer so it would be the perfect example to expand out and make an extended unique identifier or eui and this will be a 64-bit eui that we will be able to use to make an ipv6 address we're going to effectively convert an ipv6 prefix with the mac address that's on our system to create one single ipv6 address one of the problems you may notice with that is that the mac address is only 48 bits long but we need 64 bits in order to perform this conversion that means that we're going to add a few bits into the middle of this address and make one minor change to the mac address here's a typical mac address from a computer the mac address here stands for media access control address and you can think of this as the physical address that's associated with this network interface card this is also referred to as an eui 48 address which is extended unique identifier that is 48 bits long the mac address itself is split into two different pieces the first three bytes of the mac address are called an oui or an organizationally unique identifier you can think of this as the manufacturer id for the mac address the last three bytes are assigned by the manufacturer as the serial number or the network interface controller specific value no other network interface card should share this same mac address making it a unique value for your particular piece of hardware the way that we would take those 48 bits of the mac address and turn them into a 64-bit value is you split the mac address apart into two separate three byte halves you would add the values fffe in the middle of that mac address which extends it now from 48 bits to the 64 bits that we need for our ipv6 address when we do this we have to make a slight change to the existing mac address that's because we're changing this address from something that is globally unique or universal into something that we've created ourselves you're effectively changing the burned in address or the bia into something that is locally administered this is sometimes referred to as the ul bit which converts between the universal bit and the local bit to be able to convert between a universal address and somehow define that this address is something that we have configured as a local address we change a single bit within the mac address that single bit is that 7th bit inside of the mac address so something like 8c if we were to write out 8c as binary it would be 1 0 0 0 1 1 0 zero if we wanted to specify that this is a locally assigned address then we need to change that seventh bit and this turns into one zero zero zero one one one zero and if you converted that back to hexadecimal that would be the value 8e with ipv6 the first half of the ipv6 address is usually associated with your ipv6 subnet this is an eoi 64-bit address and i've written out the 64-bit subnet prefix for my ipv6 network now we need an additional 64 bits to finish the ipv6 address we need the first section of the mac address those first three bytes and we write them out in that ipv6 format and in the example we just gave it would be 8e2d alpha alpha then we add the two additional bytes in the middle of fffe and then lastly we include the last three bytes of the mac address which in this case was 4b 98 a7 now that we've completed that process we have a unique ipv6 address that can't be duplicated on another device because this ipv6 address has been created based on your physical mac address that process of flipping the seventh bit of that first byte of the mac address can be complicated you don't want to have to convert to binary and then reconvert back to decimal while you're trying to take one of these certification exams there is a shortcut though that you could use to easily convert this 7th bit without having to perform that conversion process you would first create a chart that lists out all of the hexadecimal characters so this would be 0 1 2 3 4 5 6 7 8 9 a b c d e and f it's easiest if you group these together in two columns as a group of four so your first group is zero one two three the second group is four five six seven and so on if you need to convert that second character of the hex byte you would convert it to the other value that's associated in this chart for example if the second character was a zero you would change the second character to a two if the second character was a b you could convert it to a nine and you would simply use this chart to know very quickly what you change that value to so if we take our earlier example that started with 8c we would simply look at our chart find the letter c we would see that we would change that to the letter e and then we would just change that character in the mac address now we've changed that seventh bit but we didn't have to convert it to binary and then convert it back to decimal again we simply referenced our chart and made the change immediately let's do some conversions ourselves between the mac address and our eui 64 address that we would then use for our ipv6 address i've already written out our conversion chart here to make things go a little bit faster here's the mac address it starts with 8c and we just perform this between the c and the e which means that we would change that c to an e in the middle of the address we would add f f e and so on the left and right sides you would have the remainder of that mac address let's do the same thing with another mac address this one starts with one eight and you can see that we've separated these out into two halves we need to change that eight value that second character so we go to our chart we can see that that eight converts to an a we'll put fffe in the middle and you can see that this starts with 1a has our fffe and completes that eui 64 address let's do a third one it starts with a0 our second character is a zero the conversion for that one should convert to a two we'll put the ffffe in the middle and there's our eui 64 address here's another address starts with three four four is our second character the four should convert to a 6 and we will put the fffe in the middle you can see that this is a very quick process and you can either memorize this chart or very quickly write down the values that are in this chart so that you're able to convert from a mac address to an eui 64 address