IPv4 versus IPv6: the real differences and how networks run both
In short: IPv4 and IPv6 both carry packets between networks, but IPv6 has 128-bit addresses, a fixed 40-byte header, no broadcast, Neighbour Discovery instead of ARP and fragmentation only at the sender. Because the two are not compatible, networks run both side by side (dual stack) or use tunnels and translation such as NAT64.
Same job, different design
Both IPv4 and IPv6 are Layer 3 protocols: they give every interface an address and let routers forward packets between networks. IPv4 dates from 1981 and its 32-bit addresses allow about 4.3 billion of them, far too few for today's phones, laptops and connected devices. The regional internet registries have run out of new IPv4 blocks, which is why NAT and address trading became normal. IPv6 was standardised to fix the shortage and, while the designers were at it, to tidy up parts of IPv4 that had grown awkward. For an introduction to the address format itself, see IPv6 explained.
Side-by-side comparison
| Feature | IPv4 | IPv6 |
|---|---|---|
| Address size | 32 bits, e.g. 192.0.2.10 | 128 bits, e.g. 2001:db8::10 |
| Address resolution | ARP (broadcast) | Neighbour Discovery, using ICMPv6 and multicast |
| Automatic addressing | DHCP | SLAAC, DHCPv6, or both |
| Addresses per interface | Usually one | Several: link-local, global, sometimes temporary |
| Broadcast | Yes | No; multicast and anycast instead |
| Fragmentation | Sender or any router | Sender only, after path MTU discovery |
| Minimum MTU | Hosts must accept 576-byte packets | Every link must carry 1,280 bytes |
| Loopback | 127.0.0.1 | ::1 |
| Private addressing | RFC 1918 ranges with NAT | Unique local fd00::/8; global addresses without NAT are normal |
The headers compared
The IPv4 header (see the IPv4 packet header) is 20 bytes plus optional extras, so routers must read the header length first. IPv6 uses a fixed 40-byte header and moves anything optional into extension headers that follow it. Several fields were renamed or dropped:
- TTL became Hop Limit: same job, a more honest name, since it counts hops, not seconds.
- Protocol became Next Header: it names the next header, which may be TCP, UDP, ICMPv6 or an extension header.
- Type of Service became Traffic Class, still carrying DSCP values for QoS.
- The header checksum was removed. Ethernet and TCP or UDP already check for errors, so routers save work by not recalculating it at every hop.
- The fragmentation fields moved into an optional Fragment extension header, used only by the sending host.
- A new Flow Label lets a host mark packets that belong to one flow, which helps load balancing.
Twice the header size sounds wasteful, but a 40-byte header on a 1,500-byte packet is a small overhead, and the fixed layout is simple for hardware to process.
Running both: transition methods
IPv6 is not backward compatible: an IPv4-only host cannot talk to an IPv6-only host without help. Three families of methods exist:
- Dual stack: every device and router runs IPv4 and IPv6 at the same time, and applications prefer IPv6 when DNS returns both address types. This is the most common approach in enterprise and campus networks.
- Tunnelling: IPv6 packets are wrapped inside IPv4 packets (or the reverse) to cross a part of the network that only supports one version, for example with GRE or manual 6in4 tunnels.
- Translation: NAT64 with DNS64 lets IPv6-only clients reach IPv4-only servers by translating addresses at the edge. Many mobile operators run IPv6-only networks and use 464XLAT so that older IPv4-only apps on the phone still work.
Security note: NAT was never a firewall. An IPv6 network still needs a stateful firewall that blocks unsolicited inbound connections, and IPv6 must be included in firewall rules and monitoring even where you think it is not in use, because most operating systems enable it by default.
Real-world example: a university adds IPv6
A fictional university IT team decided to enable IPv6 on its campus network. Rather than switch over in one go, it ran dual stack: each VLAN kept its IPv4 subnet and gained a /64 from the university's IPv6 allocation, and routers sent router advertisements so laptops configured themselves. Before turning it on, the team copied every IPv4 firewall rule to an IPv6 equivalent and added IPv6 to its logging and monitoring. Within weeks, a large share of traffic to big cloud and video services was flowing over IPv6, which reduced the load on the campus NAT gateways. Old printers and lab equipment that only spoke IPv4 carried on working unchanged.
Practice
Name three fields from the IPv4 header that were renamed or removed in IPv6.
Why can a router not fragment an IPv6 packet?
A mobile phone on an IPv6-only network opens an IPv4-only website. Which mechanisms make that possible?
Key takeaways
- IPv6 replaces 32-bit addresses with 128-bit ones and removes broadcast.
- Neighbour Discovery and SLAAC or DHCPv6 replace ARP and DHCP.
- The IPv6 header is a fixed 40 bytes, has no checksum and only the sender fragments.
- Dual stack is the main transition method; tunnels and NAT64 fill gaps.
- IPv6 needs its own firewall rules and monitoring; NAT is not security.
Original content written by Mohamed Fayas for FM TecHub. © 2026 FM TecHub. You're welcome to share a link to this page; please don't copy the text elsewhere without permission.