Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
contents
Introduction
IPv4 Client, IPv6 Server
IPv6 Client, IPv4 Server
IPv6 Address Testing Macros
IPV6_ADDRFORM Socket Option
Source Code Portability
Introduction
Server and client combination
IPv4
IPv4
IPv6
IPv6
<=>
<=>
<=>
<=>
Dualstack
A station should simultaneously run both IPv4 & IPv6 protocols until all Internet uses
IPv6.
To determine which version to use, the source host queries the DNS and send
whichever version of IP packet the DNS returns.
IPv6
client
IPv4
client
TCP
TCP
IPv6
IPv6
server
TCP
IPv4 mapped
IPv6 address
IPv4
IPv6 address
IPv4
IPv6
206.62.226.42
Data
link
Data
link
Data
link
Enet
Type0800 hdr
Enet
hdr
Type0800
IPv4
hdr
IPv4
hdr
TCP
TCP
hdr
data
Dport 8888
TCP
TCP
hdr
data
Dport 8888
5flb:df00:ce3
e:e200:20:80
0:2b37:6426
IPv4
sockets
IPv6
sockets
AF_INET
AF_INET
SOCK_DGRAM
SOCK_STREAM
sockaddr_in
sockaddr_in
AF_INET6
AF_INET6
SOCK_STREAM
SOCK_DGRAM
sockaddr_in6
sockaddr_in6
TCP
UDP
IPv4 mapped
Address
returned by
accept or
recvfrom
IPv4
IPv6
IPv4
IPv4 datagram
IPv6
IPv6 datagram
IPv4
sockets
IPv6
sockets
AF_INET
AF_INET
SOCK_DGRAM
SOCK_STREAM
sockaddr_in
sockaddr_in
AF_INET6
AF_INET6
SOCK_DGRAM
SOCK_DGRAM
sockaddr_in6
sockaddr_in6
UDP
TCP
IPv6
Address
for connect
or sendto
IPv4 mapped
IPv4
IPv6
IPv4
IPv4 datagram
IPv6
IPv6 datagram
af = AF_INT6;
Setsockopt(STDIN_FILENO, IPPROTO_IPV6,
IPV6_ADDRFORM, &af, sizeof(af));
clilen = sizeof(cli);
Getpeername(0, &cli, &clilen);
ptr = gethostbyaddr(&cli.sin6_addr, 16, AF_INET);