M2-Internet 1 DNS: Domain Name System People: many identifiers: SSN, name, passport # Internet...

34
M2-Internet 1 DNS: Domain Name System People: many identifiers: SSN, name, passport # Internet hosts, routers: IP address (32 bit) - used for addressing datagrams “name”, e.g., ww.yahoo.com - used by humans Q: map between IP addresses and name ? Domain Name System: distributed database implemented in hierarchy of many name servers application-layer protocol host, routers, name servers to communicate to resolve names (address/name translation) note: core Internet function, implemented as application-layer protocol complexity at network’s “edge” H. Fauconnier

Transcript of M2-Internet 1 DNS: Domain Name System People: many identifiers: SSN, name, passport # Internet...

M2-Internet 1

DNS: Domain Name System

People: many identifiers: SSN, name, passport #

Internet hosts, routers: IP address (32 bit) -

used for addressing datagrams

“name”, e.g., ww.yahoo.com - used by humans

Q: map between IP addresses and name ?

Domain Name System: distributed database

implemented in hierarchy of many name servers

application-layer protocol host, routers, name servers to communicate to resolve names (address/name translation) note: core Internet

function, implemented as application-layer protocol

complexity at network’s “edge”

H. Fauconnier

M2-Internet 2

DNS

Why not centralize DNS? single point of failure traffic volume distant centralized

database maintenance

doesn’t scale!

DNS services hostname to IP

address translation host aliasing

Canonical, alias names

mail server aliasing load distribution

replicated Web servers: set of IP addresses for one canonical name

H. Fauconnier

M2-Internet 3

Root DNS Servers

com DNS servers org DNS servers edu DNS servers

poly.eduDNS servers

umass.eduDNS servers

yahoo.comDNS servers

amazon.comDNS servers

pbs.orgDNS servers

Distributed, Hierarchical Database

Client wants IP for www.amazon.com; 1st approx: client queries a root server to find com DNS

server client queries com DNS server to get

amazon.com DNS server client queries amazon.com DNS server to get IP

address for www.amazon.comH. Fauconnier

M2-Internet 4

DNS: Root name servers contacted by local name server that can not resolve name root name server:

contacts authoritative name server if name mapping not known

gets mapping returns mapping to local name server

13 root name servers worldwideb USC-ISI Marina del Rey, CA

l ICANN Los Angeles, CA

e NASA Mt View, CAf Internet Software C. Palo Alto, CA (and 36 other locations)

i Autonomica, Stockholm (plus 28 other locations)

k RIPE London (also 16 other locations)

m WIDE Tokyo (also Seoul, Paris, SF)

a Verisign, Dulles, VAc Cogent, Herndon, VA (also LA)d U Maryland College Park, MDg US DoD Vienna, VAh ARL Aberdeen, MDj Verisign, ( 21 locations)

H. Fauconnier

M2-Internet 5

TLD and Authoritative Servers Top-level domain (TLD) servers:

responsible for com, org, net, edu, etc, and all top-level country domains uk, fr, ca, jp.

Network Solutions maintains servers for com TLD

Educause for edu TLD Authoritative DNS servers:

organization’s DNS servers, providing authoritative hostname to IP mappings for organization’s servers (e.g., Web, mail).

can be maintained by organization or service provider

H. Fauconnier

M2-Internet 6

Local Name Server

does not strictly belong to hierarchy each ISP (residential ISP, company,

university) has one. also called “default name server”

when host makes DNS query, query is sent to its local DNS server acts as proxy, forwards query into hierarchy

H. Fauconnier

M2-Internet 7

requesting hostcis.poly.edu

gaia.cs.umass.edu

root DNS server

local DNS serverdns.poly.edu

1

23

4

5

6

authoritative DNS serverdns.cs.umass.edu

78

TLD DNS server

DNS name resolution example

Host at cis.poly.edu wants IP address for gaia.cs.umass.edu

iterated query: contacted server

replies with name of server to contact

“I don’t know this name, but ask this server”

H. Fauconnier

M2-Internet 8

requesting hostcis.poly.edu

gaia.cs.umass.edu

root DNS server

local DNS serverdns.poly.edu

1

2

45

6

authoritative DNS serverdns.cs.umass.edu

7

8

TLD DNS server

3recursive query: puts burden of

name resolution on contacted name server

heavy load?

DNS name resolution example

H. Fauconnier

M2-Internet 9

DNS: caching and updating records once (any) name server learns mapping, it

caches mapping cache entries timeout (disappear) after

some time TLD servers typically cached in local name

servers• Thus root name servers not often visited

update/notify mechanisms under design by IETF RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html

H. Fauconnier

M2-Internet 10

DNS records

DNS: distributed db storing resource records (RR)

Type=NS name is domain (e.g.

foo.com) value is hostname of

authoritative name server for this domain

RR format: (name, value, type, ttl)

Type=A name is hostname value is IP address

Type=CNAME name is alias name for some

“canonical” (the real) name www.ibm.com is really servereast.backup2.ibm.com value is canonical name

Type=MX value is name of

mailserver associated with name

H. Fauconnier

M2-Internet 11

DNS protocol, messagesDNS protocol : query and reply messages, both with same message format

msg header identification: 16 bit #

for query, reply to query uses same #

flags: query or reply recursion desired recursion available reply is authoritative

H. Fauconnier

M2-Internet 12

DNS protocol, messages

Name, type fields for a query

RRs in responseto query

records forauthoritative servers

additional “helpful”info that may be used

H. Fauconnier

M2-Internet 13

Inserting records into DNS

example: new startup “Network Utopia” register name networkuptopia.com at DNS

registrar (e.g., Network Solutions) provide names, IP addresses of authoritative name

server (primary and secondary) registrar inserts two RRs into com TLD server:

(networkutopia.com, dns1.networkutopia.com, NS)(dns1.networkutopia.com, 212.212.212.1, A)

create authoritative server Type A record for www.networkuptopia.com; Type MX record for networkutopia.com

How do people get IP address of your Web site?

H. Fauconnier

Quelques compléments Java réseaux

14H. Fauconnier M2-Internet

Sommaire

URL et URI html et swing URLconnections

URLStreamHandler URLStreamHandlerFactory

ContentHandler ContentHandlerFactory

15H. Fauconnier M2-Internet

URL

la classe URL permet d'utiliser les URL les classes URLDecoder et URLEncoder

permettent de traiter les formulaires HTML Une URI (Uniform ressource Identifier), est une

sorte de généralisation des URL qui inclut de Uniform Resource Location (URL) mais aussi de Uniform Ressource Names (URN) exemples

• tel:1-800-9988-9938• http://www.xml.comp/pub/stax.html#id =_hdbc

(la classe URLConnection sera décrite plus loin)

16H. Fauconnier M2-Internet

URI URI:

URL (location) http://java.sun.com/j2se/1.3/docs/guide/collections/

designfaq.html#28 ou URN (name):

mailto:[email protected]

Syntaxe: Général:

[scheme:]scheme-specific-part[#fragment] Hiérarchique:

[scheme:][//authority][path][?query][#fragment]Authorité: [user-info@]host[:port]

H. Fauconnier M2-Internet 1-17

URL

http://www.bib.org:80/javafaq/book/index.html?isbn=56888#toc

ftp://anonymous:[email protected]/c%3a/stuff protocol port authority chemin référence requête user

18H. Fauconnier M2-Internet

Construire une URL

public URL(String url) throws MalformedURLException public URL(String protocol, String hostname, String file)

throws MalformedURLException public URL(String protocol, String host, int port, String file)

throws MalformedURLException public URL(URL base, String relative) throws

MalformedURLException

19H. Fauconnier M2-Internet

Remarques

tous les protocoles ne sont pas compris par la machine virtuelle…

exception MalFormedURLException

20H. Fauconnier M2-Internet

Exemple: Quels protocoles?

import java.net.*;public class ProtocolTester { public static void main(String[] args) { testProtocol("http://www.adc.org"); testProtocol("https://www.amazon.com/exec/obidos/order2/"); testProtocol("ftp://metalab.unc.edu/pub/languages/java/javafaq/"); testProtocol("mailto:[email protected]"); testProtocol("telnet://dibner.poly.edu/"); testProtocol("file:///etc/passwd"); testProtocol("gopher://gopher.anc.org.za/"); testProtocol( "ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?

postalAddress"); testProtocol( "jar:http://cafeaulait.org/books/javaio/ioexamples/javaio.jar!" +"/com/macfaq/io/StreamCopier.class"); testProtocol("nfs://utopia.poly.edu/usr/tmp/"); testProtocol("jdbc:mysql://luna.metalab.unc.edu:3306/NEWS"); testProtocol("rmi://metalab.unc.edu/RenderEngine"); testProtocol("doc:/UsersGuide/release.html"); testProtocol("netdoc:/UsersGuide/release.html"); testProtocol("systemresource://www.adc.org/+/index.html"); testProtocol("verbatim:http://www.adc.org/"); }

21H. Fauconnier M2-Internet

Quels protocoles (suite)

private static void testProtocol(String url) { try { URL u = new URL(url); System.out.println(u.getProtocol() +

" is supported"); } catch (MalformedURLException ex) { String protocol = url.substring(0,url.indexOf(':')); System.out.println(protocol + " is not supported"); } } http is supportedhttps is supportedftp is supportedmailto is supportedtelnet is not supportedfile is supportedgopher is supportedldap is not supportedjar is supportednfs is not supportedjdbc is not supportedrmi is not supporteddoc is supportednetdoc is supportedsystemresource is supportedverbatim is supported

22H. Fauconnier M2-Internet

Décomposer l'url

public static void decomposeURL(String st) { try{ URL u = new URL(st); System.out.println("URL :" + u); System.out.println("Protocole : " + u.getProtocol( )); System.out.println("UserInfo :" + u.getUserInfo( )); String host = u.getHost( ); if (host != null) { int atSign = host.indexOf('@'); if (atSign != -1) host = host.substring(atSign+1); System.out.println("hôte " + host); } else { System.out.println("hôte null."); }

23H. Fauconnier M2-Internet

suite

System.out.println("Port :" + u.getPort( )); System.out.println("Path : " + u.getPath( )); System.out.println("Ref : " + u.getRef( )); System.out.println("Query: " + u.getQuery( )); } catch (MalformedURLException ex) {System.err.println(st + " URL malformée"); } }

24H. Fauconnier M2-Internet

Résultat

http://www.bib.org:80/javafaq/book/index.html?isbn=56888#toc

URL :http://www.bib.org:80/javafaq/book/index.html?isbn=56888#toc

Protocole : httpUserInfo :nullhôte www.bib.orgPort :80Path : /javafaq/book/index.htmlRef : tocQuery: isbn=56888

25H. Fauconnier M2-Internet

Obtenir des données

public InputStream openStream( ) throws IOException

public URLConnection openConnection( ) throws IOException

public URLConnection openConnection(Proxy proxy) throws IOException

public Object getContent( ) throws IOException public Object getContent(Class[] classes)

throws IOException

26H. Fauconnier M2-Internet

Charger le contenu d'une URL public static void chargerFichier(String url) { try { URL u = new URL(url); InputStream in = u.openStream(); in = new BufferedInputStream(in); Reader r = new InputStreamReader(in); int c; while ((c = r.read()) != -1) { System.out.print((char) c); } } catch (MalformedURLException ex) { System.err.println(url + " mauvaise URL"); } catch (IOException e) { System.err.println(e + " problème de lecture url "

+ url); } }

27H. Fauconnier M2-Internet

Type du contenu

public static void typeObjetURL(String st) {

try { URL u = new URL(st); try { Object o = u.getContent(); System.out.println("L'objet est un " +

o.getClass().getName()); } catch (IOException ex) {System.err.println(ex);} } catch (MalformedURLException ex) { System.err.println(st + " URL malformée"); } }http://www.liafa.jussieu.frL'objet est un sun.net.www.protocol.http.HttpURLConnection$HttpInputStream

28H. Fauconnier M2-Internet

Et encore

URLEncoder URLDecoder

29H. Fauconnier M2-Internet

URLEncode: Exemple

public class QueryString { private StringBuffer query = new StringBuffer(); public QueryString(String name, String value) { encode(name, value); } public synchronized void add(String name, String value) { query.append('&'); encode(name, value); } private synchronized void encode(String name, String value){ try { query.append(URLEncoder.encode(name, "UTF-8")); query.append('='); query.append(URLEncoder.encode(value, "UTF-8")); } catch (UnsupportedEncodingException ex) { throw new RuntimeException("??"); }//...

30H. Fauconnier M2-Internet

Exemple (suite)

/… public String getQuery() { return query.toString(); } public String toString() { return getQuery(); }}

31H. Fauconnier M2-Internet

Authentication

Classe (abstraite) Authenticator PasswordAuthentication représente un

couple password + user Méthode getPasswordAuthentication() à

redéfinir pour obtenir un PasswordAuthenitcation

Méthode setDefault(Authenticator) définit l'Authenticator pour le système

• C'est à lui que s'adressera le système à chaque fois que nécessaire

32H. Fauconnier M2-Internet

Pour apache:

Fichier .htaccess: (il faut aussi un AllowOverride AuthConfig dans httpd.conf)

AuthType BasicAuthName "restreint"AuthUserFile /Users/hf/Sites/.psswdRequire user hf

.psswd est le fichier des mots de passe htpasswd –c /Users/hf/Sites/.passwd hf

33H. Fauconnier M2-Internet

Exemple

34H. Fauconnier M2-Internet