IPv6 address consists of 128 bits and represented with 8 numbers, 16 bits each, in a hexadecimal form. Numbers are divided with colons, instead of dots. Writing and using the whole address would be overwhelmingly inconvenient, that's why shortcuts are used. Let's take for example the following address:
2002:0b36:0000:5668:0000:0000:b56e
Now, using shortcuts we will shorten it:
2002 - stays the same
0b36 > b36, we can drop off all leading zeros
0000 > 0
5668 - stays the same
0000:0000 > :: we can change any group of zeros to double colon, but we can do it only once
b56e - stays the same
As a result our long address can be written in a significant shorter way:
2002:b36:0:5668::b56e
For an experiment here are the configurations of IPv6 for Cisco router and Linux machine, both of them are virtualized and connected in GNS3 environment.
Cisco IOS:
Router(config)#interface gigabitEthernet 2/0
2002:0b36:0000:5668:0000:0000:b56e
Now, using shortcuts we will shorten it:
2002 - stays the same
0b36 > b36, we can drop off all leading zeros
0000 > 0
5668 - stays the same
0000:0000 > :: we can change any group of zeros to double colon, but we can do it only once
b56e - stays the same
As a result our long address can be written in a significant shorter way:
2002:b36:0:5668::b56e
For an experiment here are the configurations of IPv6 for Cisco router and Linux machine, both of them are virtualized and connected in GNS3 environment.
Cisco IOS:
Router(config)#interface gigabitEthernet 2/0
Router(config-if)#ipv6 address 2002:b36:0:5668::1/64
Linux:
ip -6 addr add 2002:b36:0:5668::2/64 dev eth0
Now we can use ping6 command on Linux box to test the connection:
ping6 2002:b36:0:5668::1