Chapter 10 ipv4 and ipv6 interoperability
Sponsored Links
This presentation is the property of its rightful owner.
1 / 13

Chapter 10 IPv4 and IPv6 Interoperability PowerPoint PPT Presentation


  • 118 Views
  • Uploaded on
  • Presentation posted in: General

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)

Download Presentation

Chapter 10 IPv4 and IPv6 Interoperability

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


Chapter 10IPv4 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)

    • 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

  • 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


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


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

  • 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


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

  • 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

  • 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.


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


  • 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

  • #ifdefs => hard to maintain, littered …

  • use getaddrinfo and getnameinfo


  • Login