• Nu S-Au Găsit Rezultate

Sistemul numelor de domenii

N/A
N/A
Protected

Academic year: 2022

Share "Sistemul numelor de domenii"

Copied!
48
0
0
Arată mai multe ( pagini)

Text complet

(1)

Sistemul numelor de domenii

Lenuta Alboaie ([email protected])

Andrei Panu ([email protected])

(2)

Cuprins

• Domain Name System (DNS)

• Caracterizare

• Organizare

• Configurare

• Comenzi, Primitive

• IDN

2

(3)

DNS

• Adresele IP (de ex. 85.122.23.145,

2001:0db8:0001:0000:0000:0ab9:C0A8:0102) sunt dificil de memorat

• Se utilizeaza un sistem al numelor de domenii pentru a translata adresele IP in nume de

domenii si invers

• Numele de domenii se organizeaza in ierarhii

(4)

DNS| organizare

• Initial: /etc/hosts – perechi (nume, IP) – Probleme de scalabilitate

• Actual: DNS consta dintr-o schema ierarhica de nume de domenii si dintr-un sistem de baze de date distribuite ce implementeaza aceasta

schema de nume

4

(5)

Figura. O portiune a spatiului numelor de

(6)

DNS| Tipuri de domenii

Primare (Top Level Domains – TLD)

– pentru Infrastructura Internet – un singur domeniu .arpa ARPA (Address and Routing Parameter Area)

• “Changes to the .arpa zone must be coordinated manually with IANA”

– State (ccTLD) – coduri de state: .ro, .fr, .jp, …

– IDN ccTLD (Internationalized Country Code Top-Level Domains)

– Generice: .biz, .com, .info, .name, .net, .org, .pro – Sponsorizate: .aero, .edu, .gov, .int, .jobs, .mil, .tel – Rezervate: .example, .invalid, .localhost, .test

– Pseudo-domenii: .bitnet, .local, .root, .uucp etc.

https://www.iana.org/domains/root/db/

6

http://例子.测试 http://example.test

(7)

DNS| Tipuri de domenii

(8)

DNS| Tipuri de domenii

• Domeniu de nume

– Subarbore al arborelui de domenii

– Nu trebuie sa respecte topologia retelei fizice

Sub-domenii:

– intreaga cale de nume nu depaseste 255 de caractere

Nume de calculatoare (gazde)

8

(9)

DNS

• Exemplu:

(10)

DNS| organizare

• Reguli de alocare a numelor de domenii:

– Fiecare domeniu controleaza cum sunt alocate subdomeniile sale

– Pentru a crea un nou subdomeniu, se cere permisiunea domeniului in care va fi inclus (un domeniu de la un anumit nivel va avea o autoritate) – Atribuirea de nume de domenii respecta granitele

organizationale, nu pe cele ale retelelor

– Un anumit nivel din ierarhia de niveluri poate fi controlat de mai multe servere

10

(11)

DNS| organizare

• Servere de nume (name servers)

– Teoretic, un singur server de nume poate contine intreaga baza de date DNS si poate raspunde

tuturor cererilor

• Probleme: incarcarea si “single point of failure”

(12)

DNS| organizare

• Servere de nume (name servers)

Exemplu: O posibila impartire a spatiului de nume DNS in zone

12

[Computer Networks, 2003 Andrew S. Tanenbaum]

(13)

DNS| organizare

• Servere de nume (name servers)

– Exista un server primar (primary/authoritative name server) care deserveste un anumit domeniu si, eventual, mai multe servere secundare continand baze de date replicate

– TCP se utilizeaza pentru replicarea DNS

– UDP pentru interogari (lookups)

(14)

DNS| organizare

• Client DNS

– Denumit resolver, trimite un pachet UDP serverului DNS, care cauta numele si returneaza adresa IP

14

[Retele de calculatoare – curs 2007-2008, Sabin Buraga]

(15)

DNS| organizare

• Exemplu de implementari ale serverului de nume: BIND (Berkeley Internet Name Domain), MSDNS, PowerDNS etc.

• Ca resolver (client) interactiv, se poate folosi de

exemplu una dintre comenzile: nslookup, host

sau dig.

(16)

DNS| interogari

• Interogari:

Recursiva – daca un server DNS nu cunoaste adresa pentru numele solicitat, atunci va interoga alt server DNS

Incrementala – daca serverul DNS nu stie sa raspunda, returneaza eroare si adresa altui server DNS (numit si referral) care ar putea cunoaste raspunsul la interogare

16

[http://technet.microsoft.com/en-us/library/cc775637%28v=ws.10%29.aspx]

(17)

DNS| interogari

• Fiecarui domeniu ii este asociata o multime de inregistrari de resurse (resource record – RR)

• Mecanismul:

– Cererea: resolver-ul trimite un nume de domeniu – Raspunsul: inregistrarile de resurse asociate acelui

nume (stocate in bazele de date DNS)

(18)

DNS| interogari

• Forma generala RR este:

Nume_domeniu Timp_de_viata Tip Clasa Valoare Nume_domeniu (domain name) – precizeaza

domeniul caruia i se aplica aceasta inregistrare

Timp_de_viata (time-to-live) – da o indicatie despre cat de stabila este inregistrarea

18

(19)

DNS| interogari

Tip - precizeaza tipul inregistrarii

SOA (Start Of Authority) : domeniul curent, adresa e-mail a administratorului, etc.

A – adresa IP a gazdei

MX (mail exchangers) – precizeaza numele domeniului pregatit sa accepte posta electronica pentru domeniul specificat

CNAME (Canonical Name) – permite crearea pseudonimelor

PTR (Pointer) – Pseudonim pentru adresa IP

(20)

DNS| interogari

Clasa: pentru Internet valoarea acestuia este IN

Valoare: acest camp poate fi un numar, un nume de domeniu sau un sir ASCII; semantica depinde de tipul de inregistrare

20

Exemple de inregistrari de

resurse DNS

(21)

DNS| configurare

• Exemplu de fisier pentru specificarea unei zone

DNS

(22)

DNS| clienti, resolveri, servere

22

Ca fisier de configurare al

resolver-ului: /etc/resolv.conf

[Unix Network Programming, R. Stevens B. Fenner, A. Rudoff - 2003

(23)

DNS| configurare

• Exemplu de fisier /etc/resolv.conf

(24)

DNS| interogari inverse

• Problema:

– Data o adresa, care va fi numele ei simbolic?

(reverse DNS resolution sau reverse DNS lookup) Exemple:

1)

2) 2001:db8::567:89ab

b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa

24

(25)

DNS| optimizari

Proximitatea spatiala: serverele locale vor fi interogate mai des decat cele la distanta

Proximitatea temporala: daca un set de domenii sunt referentiate repetat atunci se apeleaza la caching DNS

Fiecare intrare DNS va avea stabilita o valoare TTL (time to live)

Se va utiliza si replicarea (servere multiple, servere

(26)

DNS| comenzi

Ca resolver interactiv se pot folosi comenzile:

nslookupdig

host whois – …

26

(27)

DNS| nslookup

nslookup www.info.uaic.ro

- Returneaza RR de tip A folosind serverul DNS local

Exemple de utilizari:

nslookup 85.122.23.1

- Returneaza RR de tip PTR pentru 85.122.23.1 in ierarhia de domenii in-addr.arpa

Host Lookup

(28)

DNS| nslookup

nslookup www.axiologic.ro

- Returneaza RR de tip A folosind serverul DNS specificat

28

Exemple de utilizari:

man nslookup

Host Lookup

(29)

DNS| dig

dig – un instrument mai puternic decat nslookup

Exemplu de utilizare:

dig www.info.uaic.ro A

(30)

DNS| comenzi

host

30

Exemplu de utilizare:

(31)

DNS| whois

whois ibm.com

(32)

DNS| primitive

• Nu trebuie scris un resolver pentru a afla adresa IP a unei gazde

• Functii principale:

gethostbyname(); getaddrinfo();

gethostbyaddr() ; getnameinfo();

• La unele sisteme de operare (e.g., Solaris) va trebui la compilare sa folosim biblioteca nsl (Name Server

Library): gcc … -lnsl

32

(33)

DNS| primitive

Una din structurile folosite: hostent struct hostent {

char *h_name; /* nume oficial (canonical) */

char **h_aliases; /* alias-uri */

int h_addrtype; /* AF_INET */

int h_length; /* lungimea adresei: 4 sau 6 */

(34)

DNS| primitive

Structura hostent:

34

h_name h_aliases h_addrtype

h_length h_addr_list

Numele oficial al hostului (canonical name)

NULL

NULL

alias 1 alias 2

Adresa IP 1 Adresa IP 2

AF_INET

(35)

DNS| gethostbyname()

#include <netdb.h>

struct hostent *gethostbyname

(const char *hostname);

• In termenii DNS, gethostbyname() realizeaza o

cerere pentru o inregistrare A

(36)

DNS| gethostbyname()

• Returneaza:

– In caz de succes returneaza un pointer la hostent, ce contine adresa IP a host-ului

– In caz de eroare NULL, iar variabila h_errno indica eroarea aparuta:

• HOST_NOT_FOUND

• …

• NO_RECOVERY

• …

36

Constante definite in

netdb.h

(37)

DNS| gethostbyname()

• Exemplu de utilizare: completarea structurii sockaddr_in avand in loc de adresa IP un nume simbolic:

struct sockaddr_in server;

struct hostent *hos;

if(!( hos = gethostbyname(“fenrir.info.uaic.ro”) ) {/*Eroare la rezolvarea adresei*/}

server.sin_family=AF_INET

/* adresa IP o luam din structura hos */

memcpy(&server.sin_addr.s_addr , hos->h_addr_list[0],

(38)

DNS| gethostbyaddr()

#include <netdb.h>

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

• In termenii DNS, gethostbyaddr() realizeaza o cerere la serverul de nume pentru o inregistrare PTR in domeniul in-addr.arpa

• Returneaza: In caz de succes returneaza un pointer la hostent, ce contine numele oficial al host-ului ; In caz de eroare NULL, iar

variabila h_errno indica eroarea aparuta

Obs. gethostbyaddr() se foloseste in special pentru IPv4

38

(39)

DNS| getservbyname()

#include <netdb.h>

struct servent *getservbyname (const char *servname, const char

*protoname);

• Returneaza: un pointer la struct servent in caz de sucess, NULL in caz de eroare

struct servent {

char *s_name; /* numele oficial al serviciului*/

char **s_aliases; /* alias-uri */

int s-port; /* portul (network-byte order) */

(40)

DNS| getservbyport()

#include <netdb.h>

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

• Cauta un serviciu dupa un numar de port si dupa protocol (optional)

• Returneaza: un pointer la struct servent in caz de sucess, NULL in caz de eroare

Obs. port este in network byte order

Exemplu:

struct servent *pserv;

pserv=getservbyport( htons(53), ”udp”); /*DNS folosind UDP */

pserv=getservbyport( htons(21),”tcp”); /*FTP folosind TCP */

40

(41)

DNS| getaddrinfo()

#include <netdb.h>

int getaddrinfo (

const char *hostname, const char *service,

const struct addrinfo *hints, struct addrinfo **result ) ;

• Obs. hostname, service, hints – parametri de intrare

• Returneaza: 0 in caz de sucess, !=0 in caz de eroare

Numele host-lui sau o adresa IPv4 sau IPv6 ca string

Portul serviciului sau numele serviciului (“http”,”pop”,..) (vezi /etc/services )

Contine informatii despre tipul

de informatii pe care trebuie sa

le intoarca primitiva

(42)

DNS| getaddrinfo()

struct addrinfo {

int ai_flags; /* AI_PASSIVE, AI_CANONNAME */

int ai_family; /* AF_INET, AF_INET6, AF_UNSPEC */

int ai_socktype; /* SOCK_STREAM sau SOCK_DGRAM */

int ai_protocol; /* 0 (auto) sau IPPROTO_TCP, IPPROTO_UDP */

socklen_t ai_addrlen; /* lungimea lui ai_addr */

char *ai_canonname; /* numele canonic al host-ului */

struct sockaddr *ai_addr; /* adresa binara a socket-ului */

struct addrinfo *ai_next; /* pointer la urmatoarea structura din lista */

};

42

(43)

DNS| getaddrinfo()

Discutii:

• Daca functia returneaza cu succes result va pointa la lista de struct addrinfo.

Cazuri cind se pot obtine structuri multiple:

– Exista mai multe adrese asociate cu numele hostului si cate o structura este returnata pentru fiecare adresa

– Daca serviciul este furnizat pentru tipuri diferite de socket-uri, atunci cate o structura este returnata pentru fiecare tip de socket

• Informatia returnata de getaddrinfo() in structura struct addrinfo

**result poate fi utilizata astfel:

– Pentru socket() : ai_family, ai_socktype, ai_protocol

(44)

DNS| getnameinfo()

#include <netdb.h>

int getnameinfo (

const struct sockaddr *sockaddr, socklen_t addrlen,

char *host,

socklen_t hostlen, char *serv,

socklen_t servlen, int flags) ;

• Inlocuieste gethostbyaddr() si getservbyport()

• Returneaza: 0 in caz de sucess, !=0 in caz de eroare

44

numele host-ului intors

Numele serviciului

Adresa socket-ului trimisa ca argument

NI_NOFQDN -> host va contine doar

numele host-ului si nu intreg numele

al domeniului

(45)

DNS| IDN

International Domain Names (IDN)

– Extensie care permite folosirea caracterelor Unicode in numele de domenii, nu doar a celor ASCII

https://www.icann.org/en/topics/idn/

16 Noiembrie 2009 - Inregistrarea de domenii ccIDN

sau IDN ccTLD

(46)

DNS| administrare

• Radacina DNS este oficial administrata de Internet Corporation for Assigned Names and Numbers (ICANN)

• Exista si alte organizatii care ofera radacini alternative (alt DNS roots),

precum OpenNIC (Network Information Center) sau New.Net

46

(47)

Rezumat

• Domain Name System (DNS)

• Caracterizare

• Organizare

• Configurare

• Comenzi, Primitive

(48)

Intrebari?

48

Referințe

DOCUMENTE SIMILARE

• începerea programului de recuperare încă din perioada de spitalizare, continuarea acestuia în unitatea noastră, specializată în acest sens, calitatea serviciilor prestate

unde s-a evidenţiat la nivel tiroidian un nodul istmic hipodens şi lobul stâng mărit în volum, neomogen cu zonă caldă centrală, prezentând și valori ușor crescute

În definitiv, eroul lui Bonciu devine – în acest context – un personaj, iar ipoteza lui Karl Kraus, aceea potrivit căreia omul real, Peter Altenberg, se confundă cu masca pe care

Valoarea returnata: un pointer la un obiect CMenu a carui data membru m_hMenu contine un handle la un meniul pop-up, daca un meniu pop-up exista la pozitia data; altfel NULL. Daca

• Un bootloader (pentru RISC) incarca o secventa de cod de pe un mediu de stocare extern pentru a-l executa ca

Cadrul de lucru memoreaza un pointer la obiectul document asociat, in data membru m_pDocument din vizualizare si expune acest pointer prin functia GetDocument().. CView –

un proces apeleaza un client DNS numit resolver, care trimite un pachet (UDP) celui mai apropiat server DNS care cauta numele si returneaza adresa IP; daca nu gaseste apeleaza la

• Se utilizeaza un sistem al numelor de domenii pentru a translata adresele IP .. in nume de domenii

1 Pentru calculul exact al sumei care alocată în fiecare caz, și care nu poate fi mai mare de 100 EUR, vă rog să luați în calcul numărul zilelor de predare și țara de destinație,

Pentru fiecare obiect se cauta daca exista in lista de finalizare, iar in caz afirmativ este eliminata intrarea din aceasta lista si trecuta intr-o alta lista

Sebastian Aniţa, International Exploratory Workshop on Differential Equations and Applications in Life Sciences, Iaşi, 5 - 7 septembrie 2008

Această amplă activitate de cercetare a fost parţial suportată de un grant naţional (de tip proiect complex cu aplicaţii industriale) de 10 granturi de tip IDEI din cadrul PNCDI II

BABOŞA este înregistrat de Tomici, Andronache la 5 persoane (în formele: 1- Babosa, 4-Baboşa) şi considerat derivat de la n.. În DFNFR

 Schimbările de direcţie ale unei funcţii pot fi detectate cu ajutorul derivatei I  cele mai mari schimbări apar acolo unde derivata I are magnitudine (normă,

În acest caz este mai util ca oricând un film de 10-15 min., care prin imagini din viaţa cotidiană şi prin desene animate să pregătească terenul pentru înţelegerea noţiunii

de tip Promise – acesta e creat la execuția funcției asincrone este executat corpul funcției – execuția poate fi terminată. permanent via return (succes) ori throw (caz

pentru un curent de 5V (dar nu puteţi scurge prin el mai mult de 40mA), caz în care + este pinul “5V” al Arduino [setaţi pinul LOW]. CosminVârlan – Facultatea de

sau.. O eroare relativă de ordinul erorii de rotunjire caracterizează un algoritm numeric stabil. Un algoritm numeric stabil aplicat unei probleme bine condiționate conduce

Întrebări de cercetare în stadiul post pilot: Ce factori sunt implicaţi în asimilarea unei modificări în ceea ce priveşte nivelul de cunoştinţe al elevilor cu privire la

Problema servitorilor nu este la fel de acută ca în Anglia – Case cu câte 30 de servitori – Oamenii cu funcţii au câte cinci sau opt servitori – Condiţiile şi îndatoririle

in orice caz, dacă o astfel de cronică ar fi imposibil de redactat, atunci ar trebui căutat un mare mecenate care să inteme1eze un ospiciu pentru toti

Dar, dacă simpla mărturie a lui Richard de Cirencester este suficientă pentru a accepta stabilirea existenţei provinciei romane Vespasiana la nord de zid (zidul lui Hadrian – n.

• Return value: On success, it returns a pointer to hostent, which contains the official name of the host; On error, it returns NULL, and h_errno variable indicates the error.