Istoric. Concepte si notiuni de baza.

Similar documents
9 Internet 10 Internet

第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 计 算 机 网 络 在

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP

DNS

1. 二 進 制 數 值 ( ) 2 轉 換 為 十 六 進 制 時, 其 值 為 何? (A) ( 69 ) 16 (B) ( 39 ) 16 (C) ( 7 A ) 16 (D) ( 8 A ) 在 電 腦 術 語 中 常 用 的 UPS, 其 主 要 功 能

ebook

<4D F736F F F696E74202D20A1B6CFEEC4BFD2BB20B3F5CAB6BCC6CBE3BBFACDF8C2E7A1B7C8CECEF1C8FD20CAECCFA A1A24950D0ADD2E9BACD4950B5D8D6B72E707074>

网络程序设计(socketAPI)

ebook67-9

第 11 章 互聯網技術 11.1 互聯 網 和 萬 維 網 的 發 展 歷 史 A. 互聯網的發展 互聯網是由 ARPANET 開 始發展的 1969 年 美國國防部高級研究計劃署 (ARPA) 把部分軍事研究所和大 的電腦連接起來 建造了㆒個實驗性的電腦網絡 稱為 ARPANET 並 列 的功能

ch09.PDF

C3_ppt.PDF

HKCERT


untitled

IP505SM_manual_cn.doc

《信息通信网》实验指导书

IP-Routing-05.pdf

本文由筱驀釹贡献

A API Application Programming Interface 见 应 用 程 序 编 程 接 口 ARP Address Resolution Protocol 地 址 解 析 协 议 为 IP 地 址 到 对 应 的 硬 件 地 址 之 间 提 供 动 态 映 射 阿 里 云 内

自由軟體教學平台

untitled

IPv6移轉機制之介紹

電子商業伺服器管理(終極版).doc

SIP/ENUM Trial

Microsoft Word - PS2_linux_guide_cn.doc

untitled

Microsoft PowerPoint - 数据通信-ch1.ppt

Data Server_new_.doc

ansoft_setup21.doc

经华名家讲堂

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC

VoIP Make a Rtp Call VoIP Abstract... 2 VoIP RTP...3 Socket IP...9 Config Two Voice-hub

第3章 计算机网络体系结构

ebook140-8

Microsoft Word - 選擇_無解答2_.doc

網路安全:理論與實務 第二版

目 彔 1. 准 备 工 作 登 彔 设 置 功 能 说 明 实 时 监 控 基 本 控 制 功 能 设 置 画 质 调 节 彔 像 与 抓 拍

<4D F736F F D D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>

ch08.PDF

untitled


3.1 num = 3 ch = 'C' 2

投影片 1

11N 无线宽带路由器


AL-M200 Series

財金資訊-80期.indd

ebook67-10

Chapter #

C/C++ - 文件IO

未命名-4

五 參 與 政 治 活 動 之 限 制 綜 觀 中 立 法, 其 重 點 在 於 適 度 規 範 公 務 人 員 參 與 政 治 活 動, 可 分 為 消 極 性 的 行 為 規 範 及 積 極 性 參 與 政 治 活 動 的 限 制 規 範 兩 種 前 者 除 依 法 行 政 公 平 對 待 等

epub 61-2

高中信息技术课程标准

/ Multistake-holder Multilateralism NTIA Announces Intent to Transition Key Internet Domain Name Functions http / /

中文朗科AirTrackTM T600 迷你无线路由器用户手册.doc

C6_ppt.PDF

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

飞鱼星多WAN防火墙路由器用户手册

FreeRouter V2 完全手册

一.NETGEAR VPN防火墙产品介绍

Ps22Pdf

目 錄 壹 緣 起... 1 貳 目 標... 7 參 現 行 自 動 化 作 業 現 況 肆 實 施 重 點 及 時 程 伍 資 源 需 求 陸 預 期 效 益 及 影 響 柒 計 畫 管 考 捌 配 合 事 項 子 計 畫

epub

CNNIC 2014 年 度 报 告 中 国 互 联 网 络 信 息 中 心 CONTENTS 目 录 致 用 户 2 CNNIC 概 览 3 CNNIC 简 介 4 CNNIC 主 要 职 责 年 度 报 告 中 国 互 联 网 络 信 息 中 心 2014 年 工 作 概 况 5

EMC® VNX® Series VNX8000™ Block 安装指南

<4D F736F F F696E74202D FC2B2B3F85FA44AAB49B0BBB4FABB50B977A8BEA874B2CEC2B2A4B6BB50C0B3A5CE2E707074>

IP Access Lists IP Access Lists IP Access Lists

「人名權威檔」資料庫欄位建置表

D-link用户手册.doc

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

中華電信憑證總管理中心憑證實務作業基準


Transcription:

Sistemul numelor de domenii Lenuta Alboaie (adria@info.uaic.ro) Andrei Panu (andrei.panu@info.uaic.ro) 1

Cuprins Domain Name System (DNS) Caracterizare Organizare Configurare Comenzi, Primitive IDN 2

DNS Adresele IP (ex. 85.122.23.145) 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 RFC 1034, 1035, 1123, 2181 3

DNS organizare Initial: /etc/hosts perechi (nume, IP) Probleme de scalabilitate Actual: DNS consta dintr-o schema ierarhica de nume de domenii si a unui sistem de baze de date distribuite pentru implementarea acestei scheme de nume 4

Figura. O portiune a spatiului numelor de domenii in Internet [Computer Networks, 2003 Andrew S. Tanenbaum] 5

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) http:// 例子. 测试 http://example.test 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. http://www.iana.org/domains/root/db/ 6

DNS Tipuri de domenii 7

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

Exemplu: DNS 9

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

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 Spatiul de nume DNS se divide in zone nesuprapuse 11

DNS organizare Servere de nume (name servers) Exemplu: O posibila impartire a spatiului de nume DNS in zone [Computer Networks, 2003 Andrew S. Tanenbaum] 12

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 continind baze de date replicate TCP se utilizeaza pentru replicarea DNS UDP pentru interogari (lookups) 13

DNS organizare Client DNS Denumit resolver, trimite un pachet UDP serverului DNS care cauta numele si returneaza adresa IP [Retele de calculatoare curs 2007-2008, Sabin Buraga] 14

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

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 [http://technet.microsoft.com/en-us/library/cc775637%28v=ws.10%29.aspx] 16

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) DNS realizeaza corespondenta dintre numele de domenii si inregistrarile de resurse 17

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

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 HINFO- permit aflarea tipului de masina si de sistem de operare carora le corespunde domeniul TXT: text neinterpretat (comentarii) 19

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 Exemple de inregistrari de resurse DNS 20

DNS configurare Exemplu de fisier pentru specificarea unei zone DNS 21

DNS clienti, resolveri, servere Ca fisier de configurare al resolver-ului /etc/resolv.conf [Unix Network Programming, R. Stevens B. Fenner, A. Rudoff - 2003 22

DNS configurare Exemplu de fisier /etc/resolv.conf 23

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

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 root multiple) se va interoga cel mai apropiat (geografic) server 25

DNS comenzi Ca resolver interactiv se pot folosi comenzile: nslookup dig host whois 26

DNS nslookup Exemple de utilizari: nslookup www.info.uaic.ro - Returneaza RR de tip A folosind serverul DNS local Host Lookup nslookup 85.122.23.1 - Returneaza RR de tip PTR pentru 85.122.23.1 in ierarhia de domenii in-addr.arpa Reverse IP Lookup [http://www.zytrax.com/books/dns/ch3/] 27

DNS nslookup Exemple de utilizari: nslookup www.axiologic.ro - Returneaza RR de tip A folosind serverul DNS specificat Host Lookup man nslookup 28

DNS dig dig un instrument mai puternic decat nslookup Exemplu de utilizare: dig www.info.uaic.ro A 29

DNS comenzi host Exemplu de utilizare: 30

DNS whois whois ibm.com 31

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

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

Structura hostent: DNS primitive h_name h_aliases h_addrtype h_length h_addr_list AF_INET Numele oficial al hostului (cannonical name) NULL alias 1 alias 2 Adresa IP 1 Adresa IP 2 NULL 34

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

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 Constante definite in netdb.h 36

DNS gethostbyname() Exemplu de utilizare: completarea structurii sockaddr_in avind 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], server.sin_port=htons(4321); sizeof(hos->h_addr_list)); 37

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

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; char **s_aliases; /* alias-uri */ /* numele oficial al serviciului*/ int s-port; /* portul (network-byte order) */ char *s_proto; /* protocolul */ }; Exemplu: struct servent *pserv; pserv=getservbyname( ftp, tcp ); /*FTP folosind TCP */ 39

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

#include <netdb.h> int getaddrinfo ( const char *hostname, const char *service, DNS getaddrinfo() const struct addrinfo *hints, struct addrinfo **result ) ; Numele host-lui sau o adresa IPv4 sau IPv6 ca string Portul serviciului sau numele serviciului ( http, pop,..) (vezi /etc/services ) Obs. hostname, service, hints parametri de intrare Returneaza: 0 in caz de sucess,!=0 in caz de eroare Contine informatii despre tipul de informatii pe care trebuie sa le intoarca primitiva Se recomanda a fi folosita si pentru IPv4 si pentru IPv6 Combina functionalitati ale: gethostbyname(), getservbyname(), getservbyport() 41

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

Discutii: DNS getaddrinfo() 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 Pentru connect() sau bind(): ai_addr si ai_addrlen freeaddrinfo() 43

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() Adresa socket-ului trimisa ca argument numele host-ului intors Numele serviciului NI_NOFQDN -> host va contine doar numele host-ului si nu intreg numele al domeniului Returneaza: 0 in caz de sucess,!=0 in caz de eroare 44

DNS IDN International Domain Names (IDN) Extensie care permite folosirea caracterelor Unicode in numele de domenii, nu doar a celor ASCII http://www.icann.org/en/topics/idn/ 16 Noiembrie 2009 - Inregistrarea de domenii ccidn sau IDN cctld Pot fi exploatate pentru atacuri de tip phishing ( detalii intr-un curs viitor) 45

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

Rezumat Domain Name System (DNS) Caracterizare Organizare Configurare Comenzi, Primitive IDN 47

Intrebari? 48