sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · dns| interogari •...
TRANSCRIPT
![Page 1: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/1.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
Sistemul numelor de domenii
Lenuta Alboaie ([email protected])Andrei Panu ([email protected])
1
![Page 2: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/2.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
Cuprins
• Domain Name System (DNS)
•Caracterizare
•Organizare
•Configurare
•Comenzi, Primitive
• IDN
2
![Page 3: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/3.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 domeniipentru a translata adresele IP in nume de domenii si invers
• Numele de domenii se organizeaza in ierarhii
• RFC 1034, 1035, 1123, 21813
![Page 4: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/4.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 aceastaschema de nume
4
![Page 5: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/5.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
Figura. O portiune a spatiului numelor de domenii in Internet
5
[Computer Networks, 2003 Andrew S. Tanenbaum]
![Page 6: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/6.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 7: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/7.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| Tipuri de domenii
7
![Page 8: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/8.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 9: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/9.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS• Exemplu:
9
![Page 10: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/10.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| organizare
• Reguli de alocare a numelor de domenii:
– Fiecare domeniu controleaza cum sunt alocatesubdomeniile sale
– Pentru a crea un nou subdomeniu, se cerepermisiunea domeniului in care va fi inclus (undomeniu de la un anumit nivel va avea o autoritate)
– Atribuirea de nume de domenii respecta graniteleorganizationale, nu pe cele ale retelelor
– Un anumit nivel din ierarhia de niveluri poate ficontrolat de mai multe servere
10
![Page 11: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/11.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| organizare
• Servere de nume (name servers)
– Teoretic, un singur server de nume poate contineintreaga baza de date DNS si poate raspundetuturor cererilor
• Probleme: incarcarea si “single point of failure”
– Spatiul de nume DNS se divide in zone ne-suprapuse
11
![Page 12: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/12.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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]
![Page 13: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/13.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| organizare
• Servere de nume (name servers)
– Exista un server primar (primary/authoritativename server) care deserveste un anumit domeniusi, eventual, mai multe servere secundarecontinand baze de date replicate
– TCP se utilizeaza pentru replicarea DNS
– UDP pentru interogari (lookups)
13
![Page 14: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/14.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| organizare
• Client DNS
– Denumit resolver, trimite un pachet UDP serveruluiDNS, care cauta numele si returneaza adresa IP
14[Retele de calculatoare –
curs 2007-2008, Sabin Buraga]
![Page 15: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/15.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| organizare
• Exemplu de implementari ale serverului denume: BIND (Berkeley Internet Name Domain),MSDNS, PowerDNS etc.
• Ca resolver (client) interactiv, se poate folosi deexemplu una dintre comenzile: nslookup, hostsau dig.
15
![Page 16: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/16.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| interogari
• Interogari:
– Recursiva – daca un server DNS nu cunoaste adresapentru numele solicitat, atunci va interoga altserver DNS
– Incrementala – daca serverul DNS nu stie saraspunda, returneaza eroare si adresa altui serverDNS (numit si referral) care ar putea cunoasteraspunsul la interogare
16
[http://technet.microsoft.com/en-us/library/cc775637%28v=ws.10%29.aspx]
![Page 17: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/17.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 aceluinume (stocate in bazele de date DNS)
17
DNS realizeaza corespondenta dintre numele de
domenii si inregistrarile de resurse
![Page 18: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/18.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| interogari
• Forma generala RR este:
Nume_domeniu Timp_de_viata Tip Clasa Valoare
Nume_domeniu (domain name) – precizeazadomeniul caruia i se aplica aceasta inregistrare
Timp_de_viata (time-to-live) – da o indicatie desprecat de stabila este inregistrarea
18
![Page 19: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/19.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 domeniuluipregatit sa accepte posta electronica pentru domeniulspecificat
– CNAME (Canonical Name) – permite crearea pseudonimelor
– PTR (Pointer) – Pseudonim pentru adresa IP
– HINFO- permit aflarea tipului de masina si de sistem deoperare carora le corespunde domeniul
– TXT: text neinterpretat (comentarii) 19
![Page 20: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/20.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 inregistraride resurse DNS
![Page 21: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/21.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| configurare
• Exemplu de fisier pentru specificarea unei zone DNS
21
![Page 22: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/22.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| clienti, resolveri, servere
22
Ca fisier de configurare alresolver-ului: /etc/resolv.conf
[Unix Network Programming, R. Stevens B. Fenner, A. Rudoff - 2003
![Page 23: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/23.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| configurare
• Exemplu de fisier /etc/resolv.conf
23
![Page 24: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/24.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 25: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/25.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| optimizari
Proximitatea spatiala: serverele locale vor fiinterogate mai des decat cele la distanta
Proximitatea temporala: daca un set de domenii suntreferentiate 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, servereroot multiple) – se va interoga cel mai apropiat(geografic) server
25
![Page 26: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/26.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| comenzi
Ca resolver interactiv se pot folosi comenzile:
–nslookup
–dig
–host
–whois
–…
26
![Page 27: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/27.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| nslookup
nslookup www.info.uaic.ro
- Returneaza RR de tip A folosind serverul DNS local
27
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
Reverse IP
Lookup
[http://www.zytrax.com/books/dns/ch3/]
![Page 28: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/28.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| nslookup
nslookup www.axiologic.ro
- Returneaza RR de tip A folosind serverul DNS specificat
28
Exemple de utilizari:
man nslookup
Host Lookup
![Page 29: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/29.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| digdig – un instrument mai puternic decat nslookup
29
Exemplu de utilizare:
dig www.info.uaic.ro A
![Page 30: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/30.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| comenzi
host
30
Exemplu de utilizare:
![Page 31: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/31.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| whois
31
whois ibm.com
![Page 32: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/32.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 33: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/33.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 */
char **h_addr_list; /*pointeri la adresele IP */
}; 33
![Page 34: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/34.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 35: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/35.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| gethostbyname()
#include <netdb.h>
struct hostent *gethostbyname
(const char *hostname);
• In termenii DNS, gethostbyname() realizeaza o cerere pentru o inregistrare A
• Obs. gethostbyname() se foloseste in special pentru IPv4
35
![Page 36: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/36.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| gethostbyname()
• Returneaza:
– In caz de succes returneaza un pointer la hostent, cecontine adresa IP a host-ului
– In caz de eroare NULL, iar variabila h_errno indicaeroarea aparuta:
• HOST_NOT_FOUND
• …
• NO_RECOVERY
• …
36
Constante definite in netdb.h
![Page 37: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/37.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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],
sizeof(hos->h_addr_list));
server.sin_port=htons(4321);
37
![Page 38: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/38.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| gethostbyaddr()
#include <netdb.h>
struct hostent *gethostbyaddr (
const char *addr,
socklen_t len,
int family);
• In termenii DNS, gethostbyaddr() realizeaza o cerere la serverulde nume pentru o inregistrare PTR in domeniul in-addr.arpa
• Returneaza: In caz de succes returneaza un pointer la hostent, cecontine numele oficial al host-ului ; In caz de eroare NULL, iarvariabila h_errno indica eroarea aparuta
Obs. gethostbyaddr() se foloseste in special pentru IPv4
38
![Page 39: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/39.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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) */
char *s_proto; /* protocolul */ };
Exemplu: struct servent *pserv;
pserv=getservbyname(“ftp”,”tcp”); /*FTP folosind TCP */39
![Page 40: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/40.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 41: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/41.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
• Se recomanda a fi folosita si pentru IPv4 si pentru IPv6
• Combina functionalitati ale: gethostbyname(), getservbyname(), getservbyport()
41
Numele host-lui sau o adresa IPv4 sauIPv6 ca string
Portul serviciului sau numele serviciului(“http”,”pop”,..) (vezi /etc/services )
Contine informatii despre tipulde informatii pe care trebuie sale intoarca primitiva
![Page 42: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/42.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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
![Page 43: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/43.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| getaddrinfo()Discutii:
• Daca functia returneaza cu succes result va pointa la lista de structaddrinfo.
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
– Pentru connect() sau bind(): ai_addr si ai_addrlen
• freeaddrinfo()
43
![Page 44: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/44.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 eroare44
numele host-ului intors
Numele serviciului
Adresa socket-ului trimisa ca argument
NI_NOFQDN -> host va contine doarnumele host-ului si nu intreg numeleal domeniului
![Page 45: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/45.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
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 ccIDNsau IDN ccTLD
– Pot fi exploatate pentru atacuri de tip phishing
(… detalii intr-un curs viitor)45
![Page 46: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/46.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
DNS| administrare
• Radacina DNS este oficial administratade Internet Corporation for Assigned Names and Numbers (ICANN)
• Exista si alte organizatii care oferaradacini alternative (alt DNS roots), precum OpenNIC (Network Information Center) sau New.Net
46
![Page 47: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/47.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
Rezumat
• Domain Name System (DNS)
•Caracterizare
•Organizare
•Configurare
•Comenzi, Primitive
• IDN
47
![Page 48: Sistemul numelor de domeniicomputernetworks/files/9rc... · 2019-10-28 · DNS| interogari • Interogari: –Recursiva –daca un server DNS nu cunoaste adresa pentru numele solicitat,](https://reader033.vdocuments.net/reader033/viewer/2022041705/5e447ec7a85c5d06b8636737/html5/thumbnails/48.jpg)
2019 – 2020| Reţele de calculatoare – https://www.info.uaic.ro/~computernetworks
Intrebari?
48