IPv4 (32-bit, ~4.3 tỷ địa chỉ) đã cạn từ 2011; IPv6 (128-bit) giải quyết triệt để nhưng transition chậm do backward incompatibility và NAT workaround vẫn hoạt động đủ tốt.
IPv4: 32-bit address (~4.3 tỷ địa chỉ) — cạn kiệt từ 2011. NAT (Network Address Translation) là workaround: nhiều devices share 1 IP public. Header 20-60 bytes, checksum.
IPv6: 128-bit address (~3.4 × 10^38 địa chỉ) — không bao giờ cạn kiệt. Không cần NAT (end-to-end connectivity), header đơn giản hơn 40 bytes cố định (không checksum, extension headers), auto-configuration (SLAAC), built-in IPsec. Notation: 2001:0db8:85a3::8a2e:0370:7334.
Tại sao transition chậm:
- NAT giải quyết IPv4 exhaustion tốt đủ cho nhiều use case
- IPv4 và IPv6 không backward compatible — cần dual-stack (chạy cả hai) hoặc tunneling
- thiết bị cũ không support IPv6
- middle-boxes (firewall, load balancer) cần update
Thực tế: Google reports ~45% traffic dùng IPv6; major CDN và cloud đều dual-stack. Lập trình viên nên bind server trên :: (IPv6 wildcard, cũng accept IPv4) thay vì 0.0.0.0.
IPv4 (32-bit, ~4.3 billion addresses) has been exhausted since 2011; IPv6 (128-bit) solves this definitively but transition is slow due to backward incompatibility and NAT still working well enough.
IPv4: 32-bit addresses (~4.3 billion) — exhausted since 2011. NAT (Network Address Translation) is the workaround: many devices share one public IP. Header is 20–60 bytes with a checksum.
IPv6: 128-bit addresses (~3.4 × 10^38) — will never be exhausted. No NAT required (end-to-end connectivity), simpler fixed 40-byte header (no checksum, uses extension headers), auto-configuration (SLAAC), and built-in IPsec. Notation: 2001:0db8:85a3::8a2e:0370:7334.
Why transition is slow:
- NAT solves IPv4 exhaustion well enough for many use cases
- IPv4 and IPv6 are not backward compatible — dual-stack (running both) or tunneling is required
- legacy devices lack IPv6 support
- middle-boxes (firewalls, load balancers) need updates
In practice: Google reports ~45% of traffic uses IPv6; major CDNs and cloud providers are dual-stack. Developers should bind servers to :: (IPv6 wildcard, which also accepts IPv4) instead of 0.0.0.0.