Reti di Calcolatori Application
Dove siamo? 2
Livello applicativo Applicazioni che utilizzano i servizi di rete Porte TCP o UDP host LAN 3
Applicazioni Programmi applicativi e servizi usati dagli utenti della rete Spesso basati sul modello client-server DNS (Domain Name System) Risoluzione dei nomi degli host SMTP (Simple Mail Transfer Protocol) e email sendmail o postfix POP3 (Post Office Protocol) e IMAP (Interactive Mail Access Protocol) Accesso remoto alle caselle di posta elettronica FTP (File Transfer Protocol) Trasferimento file remoti SNMP (Simple Network Management Protocol) Gestione di apparati di rete HTTP (HyperText Transfer Protocol) e il WWW Server web e browsers telnet, rlogin, rcp,ssh, sftp, nfs, lpd,... 4
Domain Name System (DNS) E un database distribuito che permette di convertire i nomi simbolici degli host negli indirizzi IP numerici E più facile ricordare (e dà più informazioni) che www.google.it 193.205.7.2 Per comunicare su rete serve l indirizzo IP! Quando gli host sono pochi la tabella di conversione può essere memorizzata localmente ad ogni host (file /etc/hosts in Unix) Il DNS è distribuito: ogni sito mantiene il suo database relativo agli host locali eseguendo su una macchina il server DNS che può essere interrogato da altri sistemi su Internet 5
Il resolver Quando un applicazione deve convertire un nome di host nell indirizzo IP o viceversa, chiama una procedura resolver che contatta il DNS server del suo dominio In Java la procedura è incapsulata nella classe InetAddress In C sono disponibili le chiamate di libreria gethostbyname e gethostbyaddr Occorre specificare l indirizzo IP del DNS server (o Name Server) a cui il resolver invia le sue interrogazioni (in Unix /etc/resolv.conf) Il protocollo di comunicazione fra resolver e Name server è del livello applicativo ed è basato su scambio di pacchetti UDP (porta server 53) o TCP nslookup è un programma client che permette di esplorare la tabella del Name Server 6
Lo spazio dei nomi I nomi in Internet sono organizzati in modo gerarchico radice domini generici domini degli stati arpa com edu gov int mil net org biz ae it zw in-addr cisco w3c Emirati Arabi unisi Zimbabwe www www ing 2.7.205.193.in-addr.arpa gestiti dal DNS server di ingeneria (193.205.7.2) www lucy 7
I domini I nomi dei componenti sono stringhe (case-insensitive) fino a 63 caratteri mentre il nome completo di un cammino non può superare 255 caratteri Un nome di dominio assoluto (fully qualified domain name - FQDN) termina con un punto (es. www.sun.com.) I nomi che non terminano con un punto sono relativi (es. sunto è relativo al dominio in cui si trova l host ovvero ing.unisi.it) Ciascun dominio controlla l allocazione dei suoi sottodomini I domini delle nazioni sono indicati con i codici previsti dallo standard ISO 3166 arpa è un dominio speciale per le conversione indirizzo IP-nome nelle interrogazioni al Name Server 8
I domini generici com edu gov int mil net org organizzazioni commerciali istituzioni accademiche (università USA) organizzazioni governative USA organizzazioni internazionali rete militare USA fornitori di servizi di rete organizzazioni no profit In genere non sono riferite ad una posizione geografica Sono in fase di attivazione nuovi domini generici (es. biz) Alcuni paesi inseriscono sottodomini equivalenti a quelli generici (es..ac.uk e.co.uk - istituzioni accademiche e commerciali del Regno Unito) Il NIC mantiene il primo livello; i sottolivelli (zone) sono gestiti localmente (gestione DNS servers, assegnazione nomi, ecc.) 9
Zone e Name server Una zona è un sottoalbero del DNS amministrato separatamente name server it unisi 193.205.4.2 name server 193.205.7.2 ing lett www ftp ltt name server pc1 pc2 10
Name servers Un Name Server ha autorità per una o più zone In una zona esiste un name server primario ma possono esistere anche name servers secondari (per ridondanza) I name server secondari ottengono le informazioni dal name server primario (zone transfer) interrogandolo periodicamente mentre i name server primari leggono le loro informazioni da un file Quando si aggiunge un nuovo host nella zona si aggiunge una riga alla tabella presente sul name server primario Il resolver chiede di risolvere il nome al name server locale Il nome dell host è locale -> viene restituito il record di autorità Il nome è relativo ad un host di un altra zona -> interrogazione ricorsiva (a meno che non sia nella cache) 11
Interrogazione ricorsiva Si propaga la richiesta al name server di livello superiore www.unimi.it????!! altair.ing.unisi.it ing.unisi.it unisi.it it unimi.it La richiesta non si propaga ai livelli superiori se un name server ha la risposta nella cache Le risposte presenti nella cache non sono con autorità in quanto potrebbe esserci incoerenza con il vero valore I record sono inseriti nella cache con un time-to-live 12
La posta elettronica agenti utente programmi per leggere e gestire la posta e le mailboxes (es. eudora, netscape, outlook, pine, mail,...) Possono utilizzare protocolli per la gestione di mailboxes remote (pop3, imap). agenti di trasferimento di messaggi Gestiscono il trasferimento dei messaggi dalla sorgente alla destinazione e la ricezione dei messaggi sui server di posta Inviare un messaggio corrisponde a trasferire un file... Sono demoni di sistema che sono eseguiti in background e usano il protocollo SMTP per trasferire i messaggi sulla rete (es. sendmail, postfix,..). 13
Trasferimento di mail mittente agente utente coda della posta da spedire agente di trasferimento client SMTP connessione TCP porta TCP 25 destinatario agente utente mailboxes degli utenti agente di trasferimento server MTA (Message Transfer Agent) 14
Relay Agents Server di riferimento per l invio della posta Tutti i client inviano la posta al relay che la invia al destinatario Semplifica la configurazione Sono sempre connessi (possono ritentare in caso di insuccesso) coda di posta relay MTA Internet coda di posta local MTA local MTA local MTA Agente utente 15
Indirizzi di posta elettronica Hanno il formato utente@host.dominio Gli indirizzi sono risolti dal DNS che individua il server a cui inviare il messaggio (eventualmente usa una richiesta MX) Il server di posta riceve i messaggi e li accoda nella mailbox dell utente La mailbox è un file di testo in una directory specifica nel server (es. in Unix è normalmente /var/spool/mail/utente ) L utente può accedere alla posta localmente leggendo il file mailbox. Il client per la lettura della posta provvede a individuare i singoli messaggi nella mailbox 16
Formato dei messaggi E definito in RFC 821 - RFC 822 campi di intestazione linea vuota corpo del messaggio I campi di intestazione consistono in linee di testo ASCII contenenti il nome del campo seguito dal carattere : e poi da un valore L agente utente costruisce il messaggio e lo passa all agente di trasferimento che utilizza alcuni campi dell intestazione per l invio 17
Esempio di intestazione Return-Path: <BWerner@computer.org> Delivered-To: maggini@dii.unisi.it Received: from firewall.dii.unisi.it (firewall.dii.unisi.it [10.0.0.1]) by alpha.dii.unisi.it (Postfix) with ESMTP id B763218337 for <maggini@dii.unisi.it>; Sat, 19 May 2001 03:02:57 +0200 (CEST) Received: from sendmailout.computer.org (unknown [206.99.234.2]) by firewall.dii.unisi.it (Postfix) with ESMTP id 6A9053C0BC for <maggini@dii.unisi.it>; Sat, 19 May 2001 02:48:10 +0200 (CEST) Received: from cray.computer.org ([63.84.223.121]) by sendmailout.computer.org (Build 101 8.9.3/NT-8.9.3) with ESMTP id UAA01113; Fri, 18 May 2001 20:03:57-0400 Subject: ICDAR'01: Your Author Kit To: ld47@csgz.edu.cn, maggini@ing.unisi.it Cc: Karl.Tombre@loria.fr, haralick@gc.cuny.edu X-Mailer: Lotus Notes Release 5.0.4 June 8, 2000 Message-ID: <OF1A96792E.5B9B2F1A-ON88256A50.00814155@computer.org> From: BWerner@computer.org Date: Fri, 18 May 2001 17:03:57-0700 X-MIMETrack: Serialize by Router on Cray/IEEE Computer Society(Release 5.0.6a January 17, 2001) at 05/18/2001 05:11:59 PM MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0 =88256A50008141558f9e8a93df938690918c88256A5000814155" Content-Disposition: inline 18
MIME Multipurpose Internet Mail Extensions (RFC 1521) Aggiunge dei campi di intestazione per definire la struttura del corpo del messaggio (è gestita dall agente utente) Mime-Version: Content-Type: Content-Transfer-Encoding: Content-ID: Content-Description: I tipi di contenuto sono organizzati in categorie predefinite es. text/plain, text/html, image/gif, multipart/mixed, application/octet-stream,... 19
Esempio MIME MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0 =88256A50008141558f9e8a93df938690918c88256A5000814155" Content-Disposition: inline --0 =88256A50008141558f9e8a93df938690918c88256A5000814155 Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: quoted-printable Dear Author: Parte 1 Congratulations! We have been notified that your paper has been accepte= d --0 =88256A50008141558f9e8a93df938690918c88256A5000814155 Content-type: application/pdf; name="=?windows-1252?q?icdar01=5fcopyright=5fform.pdf?=" Content-Disposition: attachment; filename="=?windows- 1252?Q?icdar01=5Fcopyright=5Fform.pdf?=" Content-transfer-encoding: base64 JVBERi0xLjIgDSXi48/TDQogDTEwIDAgb2JqDTw8DS9MZW5ndGggMTEgMCBSDS9GaWx0ZXIgL0Zs YXRlRGVjb2RlIA0+Pg1zdHJlYW0NCkiJrFfZctvIFf0C/UPXvESuUBAaO+YplEx5WDNjuSi6nFTp 20
SMTP Il protocollo SMTP definisce la sequenza di comandi (inviati in ASCII) necessaria per il trasferimento dei messaggi Insieme minimale di comandi usati dal client HELO <host> Saluta il server MAIL From: <indirizzo> indica il mittente del messaggio RCPT To: <indirizzo> busta Indica il destinatario (recipient) DATA Invio corpo del messaggio terminato da un. su una linea QUIT Chiude la connessione 21
Esempio SMTP maggini@mcculloch.ing.unifi.it... Connecting to alpha.dii.unisi.it. via relay... 220 alpha.dii.unisi.it ESMTP Postfix (Postfix-19991231) (Linux-Mandrake) >>> EHLO ultra3.dii.unisi.it 250-alpha.dii.unisi.it 250-PIPELINING 250-SIZE 10240000 Extended SMTP 250-ETRN 250 8BITMIME >>> MAIL From:<maggini@ultra3.dii.unisi.it> SIZE=20 250 Ok >>> RCPT To:<maggini@mcculloch.ing.unifi.it> 250 Ok >>> DATA 354 End data with <CR><LF>.<CR><LF> >>>. 250 Ok: queued as BE37A18337 maggini@mcculloch.ing.unifi.it... Sent (Ok: queued as BE37A18337) Closing connection to alpha.dii.unisi.it. >>> QUIT 221 Bye 22
Il WEB Nato nel 1989 al CERN di Ginevra come mezzo per scambiare informazioni w3c - Consorzio World Wide Web (1994) Standardizzazione dei protocolli su Web Interoperabilità fra i siti http://www.w3c.org Il web è una collezione di documenti ipertestuali distribuita su server collegati alla rete Internet La ragnatela (web) è un grafo i cui nodi sono i singoli documenti collegati fra loro da puntatori (hyperlink) La maggior parte dei documenti su web è in formato HTML (HyperText Markup Language) ma si trovano anche altri formati (Macromedia Flash, pdf, postscript, ecc..) 23
Web servers hyperlink Connessione TCP httpd Internet disco browser (client) HTTP HyperText Transfer Protocol Web Server www.apache.org 24
HTTP Ogni sito Web ha un processo server in ascolto su una porta TCP La porta standard è la numero 80 HTTP definisce il protocollo di comunicazione fra il client e il server E utilizzato per trasferire ogni tipo di risorsa (file) su WWW Una risorsa è un entità individuata da un URL (Uniform Resource Locator) file di qualsiasi formato prodotto dell esecuzione di una interrogazione o di uno script Utilizza un modello client-server Il client HTTP apre la connessione e invia un messaggio di richiesta al server HTTP Il server invia una risposta che in genere contiene la risorsa richiesta e poi chiude la connessione Il protocollo è senza stato (non c è memoria delle transazioni) 25
Formato dei messaggi HTTP I messaggi di richiesta e risposta hanno formato simile Linea Iniziale (diversa per richiesta e risposta) Header1: valore1 Header2: valore2 Header3: valore3 Linea vuota! Corpo del messaggio (contenuto del file, risultato di una interrogazione; può essere lungo molte linee e essere binario) L intestazione è separata dal corpo da una linea vuota (CR LF) 26
Richieste HTTP La linea iniziale di una richiesta è formata da 3 parti Esempio di richiesta header Metodo Percorso locale della risorsa richiesta Versione di HTTP usata Linea Iniziale GET /index.html HTTP/1.1 Host: univac.dii.unisi.it User-Agent: Mozilla/5.0 (Windows; U; Win98; en-us; m18) Gecko/20010131 Netscape6/6.01 Accept: */* Accept-Language: en Accept-Encoding: gzip,deflate,compress,identity Keep-Alive: 300 Connection: keep-alive 27
Metodi HTTP I metodi definiscono le operazioni possibili su una risorsa GET chiede il trasferimento di una risorsa. Se è seguita dall intestazione If- Modified-Since il server invia i dati solo se sono stati modificati dopo la data specificata (gestione cache del browser) HEAD Richiede solo le intestazioni relative alla risorsa. Serve per verificare le caratteristiche della risorsa senza trasferirla POST Utilizzato per inviare dati da elaborare al server. L intestazione è seguita da un corpo della richiesta che contiene i dati. Il tipo e la dimensione dei dati è indicata dagli header MIME Content-Type: e Content-Length: 28
Risposta HTTP La linea iniziale di una risposta costituisce una linea di stato headers risorsa HTTP/1.1 200 OK Date: Wed, 06 Jun 2001 22:44:40 GMT Server: Apache/1.3.20 (Win32) Last-Modified: Wed, 06 Jun 2001 22:32:26 GMT ETag: "0-64-3b1eaf7a" Accept-Ranges: bytes Content-Length: 100 Connection: close Content-Type: text/html <HTML> <HEAD> <TITLE>Prova</TITLE> </HEAD> <BODY> <H2>File HTML di Prova</H1> </BODY> Linea vuota 29
Codici di stato La linea di stato riporta un codice di stato e la sua spiegazione I codici più comuni sono HTTP/1.1 200 OK 200 OK Richiesta con successo. La risorsa è nel corpo della risposta 404 Not Found La risorsa richiesta non esiste 301 Moved Permanently 302 Moved Temporarily 303 See Other (in HTTP 1.1) La risorsa è stata spostata ad un altro URL specificato nel campo Location: dell intestazione. Il client dovrebbe saltare a tale locazione (redirect). 500 Server Error 30
Intestazioni Seguono il formato specificato in RFC 822 anche per l email HTTP 1.0 definisce 16 header (tutti opzionali) HTTP 1.1 definisce 46 header (obbligatorio Host:) Alcuni esempi... User-Agent: Identifica il programma client che effettua la richiesta. Individua webots, spiders, ecc.. Server: Identifica il server Last-Modified: Indica la data di modifica della risorsa. E usata per gestire le cache Content-Type: Tipo MIME del corpo del messaggio Content-Length: Lunghezza in byte del corpo del messaggio 31
Proxy HTTP Un proxy HTTP agisce da intermediario fra il client e il server Riceve le richieste dal client Propaga la richiesta al server corretto Sono usati su LAN per caching o accesso ad Internet tramite firewall httpd proxy cache Internet httpd disco client configurato per usare il proxy server Proxy Server proxy Web Server www.apache.org 32
HTTP 1.1 Permette più transazioni su una stessa connessione persistente Attivo di default. Si inviano le richieste in pipelining e si recuperano le risposte nello stesso ordine Ha introdotto il supporto per le cache (If-Modified-Since:) Risposta più veloce per pagine generate dinamicamente utilizzando la codifica chunked Non si deve specificare la lunghezza del messaggio nell intestazione Il messaggio è scomposto in blocchi (chunks) Uso migliore degli indirizzi IP permettendo di ospitare più siti virtuali su uno stesso server con un solo IP Uso dell intestazione Host: -> specifica il nome del sito a cui è indirizzata la richiesta 33
Multi-homed IP Un server allo stesso indirizzo IP può gestire più domini Richiede alias nel DNS 193.205.7.2 httpd http://www.dii.unisi.it/ www.dii.unisi.it? disco http://www.ing.unisi.it/ www.ing.unisi.it? DNS Server named (bind) 34
URL Un URL (Uniform Resource Locator) individua univocamente una risorsa su web http://www.ing.unisi.it/general/people.html protocollo (ftp, file,...) nome DNS del server risorsa Al nome DNS possono essere aggiunte la porta TCP (altrimenti si usa quella di default del protocollo) una coppia username/password per accedere a risorse che richiedono autenticazione http://johnm:x34l23@www.ieee.org:8080/ username:password porta TCP 35
HTML (HyperText Markup Language) E un linguaggio che usa annotazioni (markup) per definire la formattazione del testo <B>scrittura in grassetto</b> tag di apertura tag di chiusura Attualmente è alla versione 4.0 che ha standardizzato il concetto di fogli di stile (Cascading Style Sheets - css) Una pagina prevede un intestazione e un corpo compresi fra il tag <HTML> e </HTML> <HEAD>...</HEAD> definiscono l intestazione (titolo, stili, meta,..) <BODY>...</BODY> definisce il corpo del documento 36