name and address conversions juha j skel inen n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Chapter 11 PowerPoint Presentation
Download Presentation
Chapter 11

Loading in 2 Seconds...

play fullscreen
1 / 19

Chapter 11 - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

Name and Address Conversions Juha Jääskeläinen. Chapter 11. Sisältö. DNS gethostbyname gethostbyaddr getservbyname & getservbyport getaddrinfo gai_strerror freeaddrinfo getnameinfo re_entrant ongelmat Hylätyt Ipv6 funktiot Yhteenveto. Domain Name System. IP osoitteet nimiksi

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 11' - annora


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
sis lt
Sisältö
  • DNS
  • gethostbyname
  • gethostbyaddr
  • getservbyname & getservbyport
  • getaddrinfo
  • gai_strerror
  • freeaddrinfo
  • getnameinfo
  • re_entrant ongelmat
  • Hylätyt Ipv6 funktiot
  • Yhteenveto
domain name system
Domain Name System
  • IP osoitteet nimiksi
  • Host Name
    • Yksinkertainen: solaris, freebsd
    • FQDN: solaris.unpbook.com.
  • Resource Records
    • A, AAAA, PTR, MX, CNAME

aix IN A 192.168.42.2

IN AAAA 3ffe:b80:1f8d:2:204:acff:fe17:bf38

IN MX 5 aix.unpbook.com.

IN MX 10 mailhost.unpbook.com.

....

tyypillinen rakenne
Tyypillinen rakenne

Application

Application

code

Function

call

Function

return

UDP Request

Local

name

server

other

name

servers

Resolver

code

UDP Reply

Resolver

configuration

files

dns n vaihtoehdot
DNS:n vaihtoehdot
  • Staattiset tiedostot
    • /etc/hosts
  • Network Information System (NIS)
  • Light Weight Directory Access Protocol (LDAP)
  • Paljon muita OS kohtaisia virityksiä
gethostbyname
gethostbyname

#include <netdb.h>

struct hostent *gethostbyname(const char *hostname);

Paluuarvot: NULL virhe (h_errno asetettu)

  • Yrittää löytää IP-osoitteen nimen avulla
  • Ainoastaan Ipv4 osoitteille
hostent rakenne
Hostent rakenne

struct hostent {

char *h_name; /* official (canonical) name of host */

char **h_aliases; /* pointer to array of pointers to alias names */

int h_addrtype;/* host address type: AF_INET */

int h_length; /* length of address: 4 */

char **h_addr_list;/* ptr to array of ptrs with IPv4 addrs */

};

Virhekoodit: (h_errno)

HOST_NOT_FOUND

TRY_AGAIN

NO_RECOVERY

NO_DATA (NO_ADDRESS)

gethostbyaddr
gethostbyaddr

#include <netdb.h>

struct hostent *gethostbyaddr(const char *addr, socklen_t len, int family);

Paluuarvot: NULL virhe (h_errno asetettu)

  • Hakee nimen osoitteen avulla
  • Käyttää hyväkseen PTR kenttiä
getservbyname getservbyport
getservbyname&getservbyport
  • /etc/services

#include <netdb.h>

struct servent *getservbyname(const char *servname, const char *protoname);

struct servent *getservbyport(int port, const char *protoname);

struct servent {

char *s_name; /* official service name */

char **s_aliases; /* alias list */

int s_port; /* port number, network byteorder */

char *s_proto; /* protocol to use */

};

getaddrinfo
getaddrinfo
  • IPv6 versio DNS hauista
  • Sisältää nimi-osoite ja palvelu-portti -muunnokset

#include <netdb.h>

int getaddrinfo(const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result);

Paluuarvo: 0 - OK, muut virhe

Esimerkki funktion palautuksesta: Figure 11.5

struct addrinfo
Struct addrinfo

struct addrinfo {

int ai_flags; /* AI_PASSIVE, AI_CANONNAME */

int ai_family; /* AF_xxx */

int ai_socktype; /* SOCK_xxx */

int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */

socklen_t ai_addrlen; /* length of ai_addr */

char *ai_canonname; /* ptr to canonical name for the host */

struct sockaddr *ai_addr; /* ptr to socket address structure */

struct addrinfo *ai_next; /* ptr to next structure in list */

};

vihjeet
Vihjeet
  • Liput
    • AI_PASSIVE
    • AI_CANONNAME
    • AI_NUMERICHOST
    • AI_NUMERICSERV
    • AI_V4MAPPED
    • AI_ALL
    • AI_ADDRCONFIG
vihjeet1
Vihjeet
  • Perhe
    • AF_INET, AF_INET6, AF_UNSPEC
  • Sokettityyppi
    • 0, SOCK_DGRAM, SOCK_STREAM, SOCK_SEQPACKET
  • Protokolla
    • 0, IPPROTO_TCP, IPPROTO_UDP
gai strerror
gai_strerror
  • Tulostaa getaddrinfo:n virheen

#include <netdb.h>

const char *gai_strerror(int error);

freeaddrinfo
freeaddrinfo
  • Hoitaa muistin vapauttamisen

#include <netdb.h>

void freeaddrinfo(struct addrinfo *ai);

  • Käy läpi linkitetyn listan, vapauttaen muistin
getnameinfo
getnameinfo
  • Vastakohta getaddrinfo:lle
    • Etsii osoitetta vastaavan nimen

#include <netdb.h>

int getnameinfo(const struct sockaddr *sockaddr, socklen_t addrlen, char *host, socklen_t hostlen, char *serv, socklen_t servlen);

  • Pituuden (hostlen, servlen) avulla määrätään mitä halutaan
  • Käyttäjän pitää varata muisti
re entrant
re-entrant
  • gethostbyname ja gethostbyaddr -funktiot käyttävät staattista muuttujaa sockaddr:n tallentamiseen
    • Ongelmia säikeiden kanssa
  • gethostbyname_r
  • gethostbyaddr_r
    • Käyttäjän pitää varata muistiä
      • Käytännössä pitää varata maksimi
hyl ttyj ipv6 funktioita
Hylättyjä IPv6 funktioita
  • gethostbyname2
    • Toimii samaan tapaan kuin gethostbyname jos AF on IPv4
  • getipnodebyname & freehostent
    • Korvattu getaddrinfo funktiolla
    • Varasi dynaamisesti muistin hostent-rakenteelle
yhteenveto
Yhteenveto
  • gethostbyname ja gethostbyaddr olivat ensimmäisiä tähän tarkoitukseen käytettyjä funktioita
  • getaddrinfo ja getnameinfo ovat IPv6:n myötä tulleet uudet vastineet
  • getservbyname funktiota käytetään palvelun nimen ja porttien kanssa toimimiseen
    • Tämän tarjoamat tiedot pohjautuvat yleensä tekstitiedostoon
  • Esitettyjen tapojen lisäksi on olemassa res_ -alkuisia funktioita