Computer Networks. Domain Name System

2,417 views

Published on

Computer Networks course (in Romanian).

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,417
On SlideShare
0
From Embeds
0
Number of Embeds
51
Actions
Shares
0
Downloads
87
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Computer Networks. Domain Name System

  1. 1. Retele de calculatoare Retele de calculatoare Sistemul numelor de domenii Sabin-Corneliu Buraga busaco@infoiasi.ro http://www.infoiasi.ro/~busaco Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [1]
  2. 2. Retele de calculatoare Cuprins • Domain Name System (DNS) – Caracterizare – Organizare – Configurare – Comenzi – Primitive – International Domain Names (IDN) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [2]
  3. 3. Retele de calculatoare DNS • Adresele IP sint dificil de memorat si de “ghicit” • 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 • RFC 1034, 1035 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [3]
  4. 4. Retele de calculatoare DNS Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [4]
  5. 5. Retele de calculatoare DNS • Nume de domenii – De lungime maxima de 255 caractere – Primare: • Generice: .org, .net, .mil, .gov, .int, .edu, .com, .ws, .biz, .info • State: .uk, .us, .fr, .ro, .jp, .am, .to, .fm, .tv,… – Sub-domenii: • Maxim 63 de caractere – Nume de calculatoare (gazde) – Domeniu de nume • Subarbore al arborelui de domenii • Nu trebuie sa respecte topologia retelei fizice Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [5]
  6. 6. Retele de calculatoare DNS • Exemplu: Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [6]
  7. 7. Retele de calculatoare DNS|organizare • Initial: /etc/hosts – perechi (nume, IP) • Actual: sistem de baze de date distribuite ⇒ ierarhii de domenii • Reguli de alocare a numelor de domenii: – Fiecare domeniu controleaza cum sint alocate subdomeniile sale – Pentru a crea un nou subdomeniu, se cere permisiunea domeniului in care va fi inclus (un domeniu 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 • Probleme: toleranta la defecte, supra-incarcarea radacinii Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [7]
  8. 8. Retele de calculatoare DNS|organizare • Servere de nume (name servers) – Spatiul de nume DNS se divide in zone care nu se suprapun – Fiecare zona contine o parte din domenii si numele serverelor care stocheaza informatiile din acea zona – Exista un server primar (primary/authoritative name server) care deserveste un anumit domeniu si, eventual, mai multe servere secundare continind bazele de date replicate – Un server poate fi responsabil al mai multor domenii Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [8]
  9. 9. Retele de calculatoare DNS|organizare • Client DNS – Denumit resolver, trimite un pachet UDP serverului DNS care cauta numele si returneaza adresa IP Aplicatie Server DNS uaic.ro uaic.ro rpi.edu uaic.ro resolver rpi.edu DNS DB DNS DB DNS DB DNS DB Authoritative Replici Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [9]
  10. 10. Retele de calculatoare DNS|organizare • Implementarea serverului de nume: BIND (Berkeley Internet Name Domain) – Daemonul named, configurat prin /etc/named.conf – Domeniul local si lista serverelor DNS pentru acel domeniu se gasesc in /etc/resolv.conf • Ca resolver interactiv, se pot folosi comenzile nslookup, host sau dig Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [10]
  11. 11. Retele de calculatoare 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 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [11]
  12. 12. Retele de calculatoare DNS|interogari • Gasirea unui server DNS pentru a furniza: – Numele unui domeniu – Adresa IP corespunzatoare unui domeniu simbolic • Bazele de date DNS – resource record (RR): Domeniul curent, vers. fisier: SOA (Start Of Authority) – – Adresa IP a gazdei: A Servere de nume: NS (Name Server) – Alias-uri pentru nume: CNAME (Canonical Name) – Mail exchangers: MX – vezi cursul viitor – – Descrierea gazdei (CPU, OS): HINFO – Text neinterpretat (comentarii): TXT • Interogarile externe (cu alte servere DNS) se stocheaza in memorii cache – DNS caching Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [12]
  13. 13. Retele de calculatoare DNS|interogari • Exista un server de nume principal (root) pentru a returna adresele serverelor DNS pentru domeniile primare sau de nivel secund • Interogarile: nume de domeniu, tip (A, NS, MX,…), clasa (1=IP) • Raspunsurile: nume de domeniu, tip raspuns, clasa (IP), time to live (in sec.), informatii • TCP se utilizeaza pentru replicarea DNS • UDP pentru interogari (lookups) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [13]
  14. 14. Retele de calculatoare DNS|interogari • Exemplu – interogare iterativa Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [14]
  15. 15. Retele de calculatoare DNS|interogari • Exemplu – interogare recursiva Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [15]
  16. 16. Retele de calculatoare DNS|optimizari • Proximitatea spatiala: serverele locale vor fi interogate mai des decit cele la distanta • Proximitatea temporala: daca un set de domenii sint 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 root multiple); se va interoga cel mai apropiat (geografic) server Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]
  17. 17. Retele de calculatoare DNS|abrevieri • Serverele vor raspunde numai daca primesc nume complete de domenii (e.g., fenrir.info.uaic.ro) • Utilizatorii pot da doar nume partiale (de exemplu, fenrir) • Resolver-ul va putea completa sufixurile (e.g., fenrir ⇒ fenrir.info.uaic.ro) • Fiecare resolver va avea definita o lista de sufixuri de incercare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [17]
  18. 18. Retele de calculatoare DNS|interogari inverse • Problema: data o adresa, care va fi numele ei simbolic? • Raspuns: se va returna o adresa de forma x.x.x.x.in-addr.arpa Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [18]
  19. 19. Retele de calculatoare DNS|configurare • Exemplu de fisier /etc/resolv.conf search net.infoiasi.ro infoiasi.ro info.uaic.ro domain info.uaic.ro nameserver 127.0.0.1 nameserver 193.226.23.1 nameserver 193.226.30.2 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [19]
  20. 20. Retele de calculatoare DNS|configurare • Exemplu de fisier pentru specificarea unei zone DNS tgv.com. in soa vaxa.tgv.com. wing.tgv.com. ( 199501091 ; serial number 10800 ; refresh 3 hr 3600 ; retry 1 hr 604800 ; expire 1 wk 86400 ; min. TTL 1 day ) tgv.com. in ns ns1.tgv.com. ns1.tgv.com. in a 161.44.128.70 hq.tgv.com. in a 161.44.128.70 in hinfo VAXSTATION-4000-90 VMS tgv.com. in mx 10 hq.tgv.com. fang.tgv.com. in a 161.44.128.87 in mx 10 hq.tgv.com. Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [20]
  21. 21. Retele de calculatoare DNS|comenzi • uname • host • nslookup • whois •… Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [21]
  22. 22. Retele de calculatoare DNS|comenzi (infoiasi)$ nslookup > thor.info.uaic.ro Server: 127.0.0.1 Address: 127.0.0.1#53 Name: thor.info.uaic.ro Address: 193.231.30.225 Name: thor.info.uaic.ro Address: 193.231.30.131 thor.info.uaic.ro mail exchanger = 30 orion.uaic.ro. thor.info.uaic.ro mail exchanger = 40 relay-1.dntis.ro. thor.info.uaic.ro mail exchanger = 10 thor.info.uaic.ro. thor.info.uaic.ro mail exchanger = 20 fenrir.info.uaic.ro. Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [22]
  23. 23. Retele de calculatoare DNS|whois (infoiasi)$ whois dom ibm.com [whois.crsnic.net] Whois Server Version 1.3 Domain Name: IBM.COM Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: http://www.networksolutions.com Name Server: INTERNET-SERVER.ZURICH.IBM.COM Name Server: NS.WATSON.IBM.COM Name Server: NS.ERS.IBM.COM Name Server: NS.ALMADEN.IBM.COM Name Server: NS.AUSTIN.IBM.COM Status: REGISTRAR-LOCK Updated Date: 07-jan-2003 Creation Date: 19-mar-1986 Expiration Date: 20-mar-2005 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [23]
  24. 24. Retele de calculatoare DNS|clienti, rezolveri, servere Cod aplicatie cerere Server DNS Alte servere Cod rezolver raspuns local DNS UDP aplicatie Fisier de config. Ca fisier de configurare resolver al resolver-ului: /etc/resolv.conf Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [24]
  25. 25. Retele de calculatoare DNS|primitive • Nu trebuie scris un resolver pentru a afla adresa IP a unei gazde • Adresele IP returnate sint network byte order • Pentru a putea folosi functiile de conversie DNS, la unele sisteme de operare (e.g., Sun) va trebui la compilare sa folosim biblioteca nsl (Name Server Library): gcc … -lnsl • Functii principale: – gethostbyname() – gethostbyaddr() Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [25]
  26. 26. Retele de calculatoare DNS|primitive • Se foloseste structura hostent: #include <netdb.h> struct hostent { char *h_name; /* nume oficial */ char **h_aliases; /* alias-uri */ int h_addrtype; /* AF_INET/AF_INET6 */ int h_length; /* lungime: 4 ori 16 */ char **h_addr_list; /* pointeri la adresele IP */ }; Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [26]
  27. 27. Retele de calculatoare DNS|primitive hostent Nume oficial h_name alias 1 h_aliases h_addrtype alias 2 h_length null h_addr_list Adresa IP 1 Adresa IP 2 null Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [27]
  28. 28. Retele de calculatoare DNS|primitive struct hostent *gethostbyname ( const char *hostname ); • Returneaza: – Succes – adresa structurii hostent create; se foloseste de obicei prima: #define h_addr h_addr_list[0] – Eroare – constanta NULL, iar variabila h_errno indica eroarea aparuta: • HOST_NOT_FOUND • TRY_AGAIN Constante definite • NO_RECOVERY in netdb.h • NO_DATA • NO_ADDRESS Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [28]
  29. 29. Retele de calculatoare DNS|exemplu • Completarea structurii sockaddr_in avind in loc de adresa IP un nume simbolic: struct sockaddr_in server; struct hostent *ip_addr; /* incercam sa gasim adresa IP */ if (!(ip_addr = gethostbyname (quot;www.w3.orgquot;))) { /* eroare la rezolvarea adresei */ } server.sin_family = AF_INET; server.sin_port = htons (80); /* adresa IP o luam din structura ip_addr */ memcpy (&server.sin_addr.s_addr, ip_addr->h_addr, sizeof (ip_addr->h_addr)); Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [29]
  30. 30. Retele de calculatoare DNS|primitive • Se poate utiliza si gethostbyaddr() • Alte functii utile: – uname()– informatii privind gazda curenta – gethostname()– asemanatoare cu uname() – getservbyname()– ofera portul unui serviciu – getservbyaddr()– ofera numele unui serviciu asociat la un port – gethostbyname2()– pentru adrese IPv6 – getaddrinfo(), getnameinfo()– folosite nu doar pentru TCP/IP, ci pentru orice domeniu de adrese (standard POSIX) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [30]
  31. 31. Retele de calculatoare DNS|IDN • International Domain Names (IDN) – Extensie care permite folosirea caracterelor Unicode in numele de domenii, nu doar a celor ASCII – Suport pentru internationalizarea numelor de domenii – Pot fi exploatate pentru atacuri de tip phishing (vezi unul din cursurile viitoare) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [31]
  32. 32. Retele de calculatoare Rezumat • Domain Name System (DNS) – Caracterizare – Organizare – Configurare – Comenzi – Primitive – International Domain Names (IDN) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [32]
  33. 33. Retele de calculatoare Intrebari? Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [33]

×