課題2


tcpv6sはAF_INET6でソケットをオープンしているにもかかわらず、IPv4でも通信できる。この理由は何故か説明せよ。

【アドレスの互換性について】
tcpv6s.c(IPv6)でtcps.c(IPv4)には互換性があるので、その為に両方とも同様に通信を行う事が出来る。
また、tcpv6s.cはIPv4でも通信することができる。これはIPv6のアドレスは16進数で表記され4桁ごとに区切られて、下位32ビットにIPv4のアドレスを埋め込むことでIPv4にも対応しているので、IPv6に対応しているtcpv6s.cもIPv4で通信できる。
AF_INET6がソケットをオープンにしていてもIPv4で通信できるのは、IPv4のアドレスをgetaddrinfo()関数が、IPv4互換IPv6アドレスに変換をおこなっている為だと考えられる。