In ogni intestazione IP, i primi 4 bit sono riservati per la versione del protocollo. Così teoricamente sono possibili numeri di protocollo da 0 a 15:
4: già utilizzato per IPv4
5: riservato per lo Stream Protocol (STP, RFC 1819 / Internet Stream Protocol Version 2) (il quale non è mai stato veramente reso pubblico)
Il successivo numero libero è 6. Per cui è nato IPv6!
Durante la progettazione di IPv4, si pensò che 32 bit fossero sufficienti per il mondo. Guardando al passato, 32 bit sono stati sufficienti fino ad ora e può darsi che basteranno per qualche altro anno. Comunque, 32 bit non bastano per fornire in futuro, ad ogni dispositivo di rete un indirizzo globale. Si pensi ai telefoni mobili, alle auto (inclusi i dispositivi sulle loro CAN-bus), ai tostapane, ai frigoriferi, agli interruttori della luce, e cosi via ...
Per questo i progettisti hanno scelto 128 bit, 4 volte più lungo e 2^96 volte superiore rispetto all'IPv4 di oggi.
La dimensione effettivamente utilizzabile è comunque inferiore rispetto a quello che sembra. Questo perché nello schema degli indirizzi attualmente definito, 64 bit sono usati per gli identificatori di interfaccia e gli altri 64 bit sono usati per l'instradamento. Assumendo gli attuali stretti livelli di aggregazione (/48, /32, ...) è persino possibile esaurire lo spazio, ma speriamo non nel prossimo futuro.
Per maggiori informazioni si vedano anche RFC 1715 / The H Ratio for Address Assignment Efficiency e RFC 3194 / The Host-Density Ratio for Address Assignment Efficiency.
Al momento ci sono (forse) alcune persone (conosco solo Jim Fleming...) su Internet che stanno pensando a IPv8 e IPv16, il loro progetto è ancora lontano dall'essere accettato e implementato. Nel frattempo 128 bit sono stati la migliore scelta per l'overhead dell'intestazione e il trasporto dati. Consideriamo la minima Maximum Transfer Unit (MTU) in IPv4 (576 ottetti) e in IPv6 (1280 ottetti), la lunghezza dell'intestazione di IPv4 è 20 ottetti (minima, può arrivare a 60 ottetti con le opzioni) quella di IPv6 è 48 ottetti (fissa). Questa è il 3.4 % della MTU di IPv4 e il 3.8 % della MTU di IPv6. Ciò significa che l'overhead dell'intestazione è quasi uguale. Più bit per gli indirizzi richiedono intestazioni più grandi e quindi maggiore overhead. Si consideri anche che la massima MTU su normali link (come Ethernet attualmente) è di 1500 ottetti (in casi particolari 9k ottetti utilizzando frame "Jumbo"). In definitiva, non sarebbe strutturalmente appropriato se il 10 % o 20 % dei dati trasportati in un pacchetto di livello 3 fosse usato per gli indirizzi e non per il payload.