Download presentation
Presentation is loading. Please wait.
1
IPv4 and IPv6 Interoperability
IPv4 client, IPv6 server over dual-stack server host IPv6 client over dual-stack client host, IPv4 server IPv6 address macro, function and option Source code portability
2
over Dual-Stack Server Host
IPv4 Client, IPv6 Server over Dual-Stack Server Host IPv6 client TCP data link IPv4 client TCP data link IPv6 server TCP IPv4 IPv6 data link IPv6 listening socket bounded to 0::0, port 8888 IPv4-mapped IPv6 address IPv6 address 5f1b:df00:ce3e:e200: 20:800:2b37:6426 Ether IPv4 TCP TCP hdr hdr hdr data type dport Ether IPv6 TCP TCP hdr hdr hdr data type dport 86dd
3
Dual-Stack Kernel at Server Side
AF_INET SOCK_STREAM sockaddr_in AF_INET SOCK_DGRAM sockaddr_in IPv4 sockets AF_INET6 SOCK_STREAM sockaddr_in6 AF_INET6 SOCK_DGRAM sockaddr_in6 IPv6 sockets TCP UDP IPv4 IPv6 IPv6 IPv4 address returned by accept or recvfrom IPv4- mapped IPv4- mapped IPv4 IPv6 IPv4 datagram IPv6 datagram
4
Dual-Stack Kernel at Client Side
AF_INET SOCK_STREAM sockaddr_in AF_INET SOCK_DGRAM sockaddr_in IPv4 sockets AF_INET6 SOCK_STREAM sockaddr_in6 AF_INET6 SOCK_DGRAM sockaddr_in6 IPv6 sockets TCP UDP IPv4 IPv6 IPv6 IPv4 address for connect or sendto IPv4- mapped IPv4- mapped IPv4 IPv6 IPv4 datagram IPv6 datagram
5
Interoperability between IPv4 and IPv6
Clients and Servers IPv4 server IPv6 server IPv4 server IPv6 server IPv4-only host IPv6-only host dual-stack host dual-stack host (A only) (AAAA only) (A and AAAA) (A and AAAA) IPv4 client, IPv4 (no) IPv4 IPv4 IPv4-only host IPv6 client, (no) IPv6 (no) IPv6 IPv6-only host dual-stack host IPv6 client, IPv4 IPv6 (no*) IPv6 *: IPv4-mapped IPv6 address if client chooses A record; no if client chooses AAAA record Note that most implementations of IPv6 client/server will be on dual-stack hosts. (Second row and second column may disappear.)
6
IPv6 Address Macro, Function, Option
IPv6 address testing macros: IN6_IS_ADDR_* (e.g. V4MAPPED) Protocol independent socket address functions: sock_* (e.g. cmp_addr) (section 3.8) IPv6_ADDRFORM socket option: change a socket type between IPv4 and IPv6, by setsockopt function with IPv6_ADDRFORM option
7
Source Code Portability
Automatic program conversion from IPv4 to IPv6 (sockaddr_in, AF_INET, etc) and #ifdef to use IPv6 when possible Deal with socket address structures as opaque objects: remove gethostbyname and gethostbyaddr, use getaddrinfo and getnameinfo (which use #ifdef internally)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.