Abstract
IPv4 and IPv6 are two SEPERATE forms of IP (Network Layer)
IPv5 is a form developed around the time of ARPAnet which never got standardized and subsequently fell into obscurity, to do with transmission of voice
Addressing
IP addresses encode location of network interface
- If a host has multiple network interfaces (e.g., Wi-Fi and Ethernet), it will have multiple IP addresses
- A host can support both IPv4 and IPv6 on each interface
- A host can have multiple IP addresses of each type assigned to each interface
Note: DNS names are an application concept – not used by the network.
Addressing Problems, and Reachability
*Problem The initial IP design made the assumption that every network interface has a unique IP address. This would make devices uniquely addressable with uniform connectivity. The problem with this is that IPv4 has insufficient addresses for the modern world, and IPv6 is too slow, so NAT is widespread.
*Implication Connectivity becomes difficult:
- Dual-stack IPv4/IPv6 connection racing: Happy Eyeballs - Parallel Connections
- NAT traversal for peer-to-peer applications
- Complication of software development
- Forces reliance on cloud services and encourages centralization
Conflicting Connections
Solutions:
Happy Eyeballs - Parallel Connections
- Perform DNS lookups for IPv4 and IPv6 in parallel; start with whichever completes first
- Call
connect()for that address; if not connected within ~100ms, startconnect()to next address on the list in parallel, alternating between IPv4 and IPv6 - Use first
connect()that succeeds, drop other successful connections - Balances speed to connect vs. network overload by trying all at once in parallel
Ex:

More on this at: https://datatracker.ietf.org/doc/rfc8305/
Internet Multimedia Standards

Media: secure RTP, WebRTC data channel
Path discovery and NAT traversal: ICE, STUN, TURN
Session descriptions: SDP
Signaling protocols for different purposes: