IPv6 Explained for Beginners

ipv6-iconIPV6 has been developed to replace IPV4 which is running out of addresses.

Although it has been around almost 10 years it is still not widely deployed and supported.

However adoption rates are increasing rapidly and IPv6 traffic crossed the 10% threshold in February 2016 (wiki) .

For small business/home and home office networks it is likely to be many years before IPV6 becomes an issue.

All modern computers and mobile phones support both IPv4 and IPv6, and if you look at your device IP addresses you will probably see both.

In this tutorial I want to take a quick look at IPv6 addresses, and how they relate to IPv4 addresses.

Therefore it will help if you are already familiar with IPv4 -See IPv4 Addressing and classes for Beginners

IPv6 addresses

An Ipv6 address uses 128 bits as opposed to 32 bits in IPv4.

IPv6 addresses are written using hexadecimal, as opposed to dotted decimal in IPv4. See Binary numbers explained

Because an hexadecimal number uses 4 bits this means that an IPv6 address consists of 32 hexadecimal numbers.

These numbers are grouped in 4’s giving 8 groups or blocks. The groups are written with a : (colon) as a separator.

group1:group2: ……etc…. :group8

Here is an IPv6 address example:


Note: Because of the length of IPv6 addresses various shortening techniques are employed.

The main technique being to omit repetitive 0’s as shown in the example above.

Network And Node Addresses

In IPv4 an address is split into two components a network component and a node component.

This was done initially using Address classes and later using subnet masking.

In IPv6 we do the same. The first step is to split the address into two parts.

The address is split into 2 64 bit segments the top 64 bits is the network part and the lower 64 bits the node part:


The upper 64 bits are used for routing.

The lower 64 bits identify the address of the interface or node, and is derived from the actual physical or MAC address using IEEE’s Extended Unique Identifier (EUI-64) format. See this Wiki description for exact details.

If we look at the upper 64 bits in more detail we can see that it is split into 2 blocks of 48 and 16 bits respectively the lower 16 bits are used for subnets on an internal networks, and are controlled by a network administrator.

The upper 48 bits are used for the global network addresses and are for routing over the internet.


 Address Types and Scope

IPv6 addresses have three types:

  • Global Unicast Address –Scope Internet- routed on Internet
  • Unique Local — Scope Internal Network or VPN internally routable, but Not routed on Internet
  • Link Local – Scope network link- Not Routed internally or externally.



Global and Public Addresses

Global addresses are routable on the internet and start with 2001:

These addresses are known as global Unicast addresses and are the equivalent of the public addresses of IPv4 networks.

The Internet authorities allocate address blocks to ISPs who in turn allocate them to their customers. See Global Address assignments

Internal Addresses- Link Local and Unique Local

In IPv4 internal addresses use the reserved number ranges, and and

These addresses are not routed on the Internet and are reserved for internal networks.

IPv6 also has two Internal address types.

  • Link Local
  • Unique Local

Link Local

These are meant to be used inside an internal network, and again they are not routed on the Internet.

It is equivalent to the IPv4 address which is allocated on an IPv4 network when no DHCP server is found.

Link local addresses start with fe80

They are restricted to a link and are not routed on the Internal network or the Internet.

Link Local addresses are self assigned i.e. they do not require a DHCP server.

A link local address is required on every IP6 interface even if no routing is present.

Unique Local

Unique Local are meant to be used inside an internal network.

They are routed on the Internal network but not routed on the Internet.

They are equivalent to the IPv4 addresses are, and

The address space is divided into two /8 spaces: fc00::/8 for globally assigned addressing, and fd00::/8 for locally assigned addressing.

For manually assignment by an organisation use the fd00 prefix.

Using IPv6 Addresses in URLs

On IPv4 networks you can access a network rsource e.g. a web page using the format

However IPv6 addresses contain a colon as separator and so must be enclosed in square brackets.

http:[IPv6 address]/webpage.

IPv6 Loop Back

The IPv6 loopback address is ::1. You can ping it as follows:

ping ::1



Here is a good video that cover the above

Related Articles and Resources:

Please rate? And use Comments to let me know more
[Total: 41   Average: 3.8/5]


  1. Would the first 64bit uniquely identify a user/family/location, or there could be multiple users/families/locations sharing the same first 64bit address?

      1. if the first 64 bits (4 sets of 4 digit numbers) are unique to a customers router, if they log off any site that is capturing the ip address, and log on later, will it stay the same 64 bits? for instance, 2607:a100:8102:0402 this first half, would this always be the same each day and week for that particular router?

  2. Hi,
    Thank you for this helpful article.
    I’ve a question. If I want to implement IPv6 addressing in a local network and then to route this network to internet, then what should I do (and correct me if I’m wrong), is to assign a unique local fd00::/8, let say for example: fd9d:22d3:cd28:7257::1/64 for the local PC, and fd9d:22d3:cd28:7257::2/64 for the gateway, and on the local firewall/router is to get from the local ISP a public IPv6 range and configure as a point to point link between the local firewall/router and the ISP. then to configure a Policy+NAT+default route… and that would be all. Is this a good way to start or did I miss anything?

    1. Hi
      I don’t use ipv6 on my local network but as I understand it it should be taken care of automatically if you configure the router IPv6 configuration to stateless.
      This way your internal computers will auto assign a global address using the global address assigned to your router.
      I just looked at a few machines with epv6 enabled and they are all able to ping ipv6 Internet addresses without me having to configure them.
      My router is set to stateless which was the default configuration.

  3. Hi Steve,

    great article – clear and concise and therefore easy to read and follow for beginners. Thank you.

    Would it be possible to expand the article to cover IPv6-prefix and IPv6IFID ?

    Kind Regards,

    1. Tks for the feedback I’ll try to expand the tutorial to include those topics at some point but I’m afraid it wont be soon

  4. IP6 addressing is a problem for me today. I have a website that is receiving hacking attempts from ranges of IP6 addresses.

    My question is how to I designate a block of addresses,?

    Since these folks seem to be able to change IPs on the fly and attack from different individual addresses within a range. I have an Admin Tool app on my website that allows me to block individual addresses or ranges of addresses.

    For example, if I want to block all addresses in the range beginning with 2222:1f14, how do I so designate?

  5. This is a great article. You simplified without over explanation, and your graphic examples were perfect — I now understand, in under 5 minutes —
    Why IPV6
    That IPV6 is 128 bits, 16 bits per section – with the front 64 being for routing
    That IPV6 addresses 2001:…. are public/global, fe80:… are local only with no DHCP , fc00::/8 – fd00::/8 are for Internal networks (but if assigning them manually, to use fd00::/8
    You have a lot of extra’s in here too, like how to ping loop back, and access an IPV6 address through a browser.
    I really enjoyed this read – it’s not every day I find an article that is packed with so much information, in an easy to absorb layout – I will be re-reading this a couple more times to make sure I have it all — and I would love to see a follow up article for people who want to dive deeper into it, but this is enough for my everyday understanding, and was written great.
    I’ve Favorited — and will share the page with others.

    Thank you

  6. Hey Steve, great article! Thanks for creating. One question I have, if there are so many available IP Addresses in v6, would it be possible just to hard code each device OOTB with a unique IP address? Why even bother with DHCP and instead just pre-configure. So, your cable modem would get a unique ipv6 address at the factory and when it connected to your ISP, it would just tell it what IP address it had. Is that possible? Especially at IoT levels, it would seem to be nice to have a known address to reach. I realize that there are security risks that might make this a bad idea, but is it possible?

    1. Hi
      IPv6 doesn’t require DHCP but using it does give you more control over the devices as the information is in one place. You can also use set prefixes see this article
      You can also assign static addresses like on IPv4.
      I think if you want to know the IP address of each device then DHCP is probably better.
      Currently on my home IPv4 network the only network map I have is from the home router which has the DHCP server.

    2. Also if a device came out of the box with its own IPv6 address, there would be no rhyme or reason to a LAN’s subnetting. You would then have to re-write each device’s IPv6 so that you could group your devices together. Sorry if I over explained or did not explain it enough, but there is a lot more in the “galaxy” of IPv6 than the world of IPv4.

  7. Thanks for the article. You say: “For small business/home and home office networks it is likely to be many years before IPV6 becomes an issue. All modern computers and mobile phones support both IPv4 and IPv6, and if you look at your device IP addresses you will probably see both.” I believe, though, that their ISP will need to support both IPv4 through Carrier Grade NAT (CGNAT) or dual stack so their customers can access remaining content that is IPv4 only. For example, if the ISP migrates their network to IPv6, their customers will not be able to access IPv4 content unless there is something like CGNAT translating between v6 and v4.

  8. I must be really stupid. I don’t get it.
    If I want to assign a bunch of IP’s how do I know what they are? How are they numbered?
    For example, if I have a /64 – what are the actual IP’s? how do they end? like 01234567ABCDEF? Can you give me a simple example of say the first 20 IP’s? How do I calculate them? I’ve been looking online for a way to simply list a bunch of them from a range so they can be added as static IP’s to a few computers, but how do I know what they are? This is supposed to be a basic guide, but it went way over my head 🙁

  9. Thank you!
    So far all explanations about IPv6 where so cloudy, this one I totally get and it now all makes sense what I see on my interfaces.

  10. Great Article! I am newbie / dumbo to his IPv6. My personal requirement is, I need a way to directly connect / communicate (say via HTTP/S) between 2 mobile phones that are geographically separated and under 2 different Mobile Service Providers. Presuming that the 2 Service Providers provide IPv6 addressing, would it be possible that I could browse to a URL served from one device, through a browser in the second device?

Leave a Reply

Your email address will not be published. Required fields are marked *