chapter 10 ipv4 and ipv6 interoperability
Download
Skip this Video
Download Presentation
Chapter 10 IPv4 and IPv6 Interoperability

Loading in 2 Seconds...

play fullscreen
1 / 13

Chapter 10 IPv4 and IPv6 Interoperability - PowerPoint PPT Presentation


  • 160 Views
  • Uploaded on

Chapter 10 IPv4 and IPv6 Interoperability. 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(most server and client)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Chapter 10 IPv4 and IPv6 Interoperability' - snowy


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
contents
contents
  • Introduction
  • IPv4 Client, IPv6 Server
  • IPv6 Client, IPv4 Server
  • IPv6 Address Testing Macros
  • IPV6_ADDRFORM Socket Option
  • Source Code Portability
introduction
Introduction
  • Server and client combination
    • IPv4 <=> IPv4(most server and client)
    • IPv4 <=> IPv6
    • IPv6 <=> IPv4
    • IPv6 <=> IPv6
  • How IPv4 application and IPv6 application can communicate with each other.
  • Host are running dual stacks, both an IPv4 protocol stack and IPv6 protocol stack
ipv4 client ipv6 server
IPv4 Client , IPv6 Server
  • IPv6 dual stack server can handle both IPv4 and IPv6 clients.
  • This is done using IPv4-mapped IPv6 address
  • server create an IPv6 listening socket that is bound to the IPv6 wildcard address
slide5

IPv6

server

IPv6

client

IPv4

client

IPv6 listening socket,

bound to 0::0, port 8888

TCP

TCP

TCP

IPv6 address

IPv4 mapped IPv6 address

IPv6

IPv4

IPv4

IPv6

206.62.226.42

5flb:df00:ce3e:e200:20:800:2b37:6426

Data

link

Data

link

Data

link

Enet

hdr

IPv4

hdr

TCP

hdr

TCP

data

Type0800

Dport 8888

TCP

hdr

TCP

data

Enet

hdr

IPv4

hdr

Type0800

Dport 8888

slide6

AF_INET

SOCK_DGRAM

sockaddr_in

AF_INET

SOCK_STREAM

sockaddr_in

IPv4 sockets

AF_INET6

SOCK_DGRAM

sockaddr_in6

AF_INET6

SOCK_DGRAM

sockaddr_in6

IPv6

sockets

UDP

TCP

IPv4 mapped

IPv4

IPv6

Address

returned by

accept or

recvfrom

IPv4

IPv6

IPv4 datagram

IPv6 datagram

ipv6 client ipv4 server
IPv6 client, IPv4 server
  • IPv4 server start on an IPv4 only host and create an IPv4 listening socket
  • IPv6 client start, call gethostbyname. IPv4 mapped IPv6 address is returned.
  • Using IPv4 datagram
slide8

AF_INET

SOCK_DGRAM

sockaddr_in

AF_INET

SOCK_STREAM

sockaddr_in

IPv4 sockets

AF_INET6

SOCK_DGRAM

sockaddr_in6

AF_INET6

SOCK_DGRAM

sockaddr_in6

IPv6

sockets

UDP

TCP

IPv6

IPv4 mapped

IPv4

IPv6

Address

for connect

or sendto

IPv4

IPv6

IPv4 datagram

IPv6 datagram

ipv6 address testing macros
IPv6 Address Testing Macros
  • There are small class of IPv6 application that must know whether they are talking to an IPv4 peer.
  • These application need to know if the peer’s address is an IPv4-mapped IPv6 address.
  • Twelve macro defined(참조 page 267)
ipv6 addrform socket option
IPV6_ADDRFORM Socket Option
  • Can change a socket from one type to another, following restriction.
    • An IPv4 socket can always be changed to an IPv6. Any IPv4 address already associated with the socket are converted to IPv4- mapped IPv6 address.
    • An IPv6 socket can changed to an IPv4 socket only if any address already associated with the socket are IPv4-mapped IPv6 address.
slide11

Converting an IPv4 to IPv6

Int af;

socklen_t clilen;

struct sockaddr_int6 cli; /* IPv6 struct */

struct hostent *ptr;

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);

slide12
setsockopt => change the Address format of socket from IPv4 to IPv6.
    • Return value is AF_INET or AF_INET6
  • getpeername =>return an IPv4-mapped IPv6 address
source code portability
Source Code Portability
  • #ifdefs => hard to maintain, littered …
  • use getaddrinfo and getnameinfo
ad