Corso di laureainINFORMATICA RETI di CALCOLATORI A.A. 2003/2004
Protocolli Applicativi
Alberto Polzonetti
alberto.polzonetti@unicam.it
Corso di laureainINFORMATICA RETI di CALCOLATORI A.A. 2003/2004
Protocolli Applicativi
Alberto Polzonetti
alberto.polzonetti@unicam.it
Come accedere alle applicazioni
NFS TELNET SNMP FTP DNS SMTP IGMP RARP IP ARP UDP FISICO PROTOCOLLI DEFINITI DALLA RETE SOTTOSTANTE COMUNICAZIONE ICMP RETE TCP TRASPORTO SESSIONE PRESENTAZIONE APPLICAZIONI APPLICAZIONE Una applicazione deve prima comunicare al software di protocollo che sta aspettando l’arrivo di un messaggio di un tipo specificato e poi si mette in attesa Quando il protocollo riceve un messaggio che corrisponde esattamente al tipo specificato lo passa applicazione
Argomenti
Modello client-server
Procedure di inizializzazione
Domain Name System
Protocolli per la posta elettronica
Protocolli per trasferimento files
Protocollo HTTP e web server/client
Modello client - server
Il server attende passivamente di essere contattato, mentre il client avvia il processo di comunicazione Applicazione client
Generico programma
Si comporta da client quando richiede l’uso della rete
Esegue anche elaborazioni in locale
È invocata direttamente dall’utente
È eseguita localmente sul computer dell’utente
Contatta attivamente un solo server alla volta
Non richiede dispositivi dedicati Applicazione server
Programma specializzato
Dedicato all’erogazione di un servizio
Può servire più di un client alla volta
Automaticamente invocato all’avvio del sistema
Attende passivamente di essere contattato dai client
Accetta richieste da client arbitrari,ma offre un solo servizio
Calcolatore condiviso e macchina potente
Interazione tra client e server
E A Trasporto k j dati Trasporto k j dati E A Rete k j dati E A Rete k j dati 77 95 E A collegamento k j dati 77 95 E A collegamento k j dati Internet client server
Servizi multipli
SCHEDA DI RETE INTER-RETE TRASPORTO Un calcolatore di classe server può offrire contemporaneamente più servizi, ciascuno dei quali è erogato da una specifica applicazione server SCHEDA DI RETE INTER-RETE TRASPORTO SCHEDA DI RETE INTER-RETE TRASPORTO Client 1 Client 2 Server 1 Server 2
Creazione dinamica (1)
Erogazione dello stesso servizio a più client senza che questi debbano mettersi in coda
TCP client Porta effimera
TCP client Porta effimera Porte effimere serverfiglio serverfiglio Server padre
TCP Porta nota usata solo per l’apertura della connessione Server parallelo con connessioni
Creazione dinamica (2)
Erogazione dello stesso servizio a più client memorizzati in una coda in attesa di essere processati Server sequenziale senza connessioni
(specifici per server che usano UDP)
UDP client Porta effimera
UDP client Porta effimera Porta nota Server
UDP Un client alla volta
Interfaccia socket
Le applicazioni client e server comunicano tramite i protocolli di trasporto
Le applicazioni debbono fornire al protocollo molte informazioni
API (Application Program Interface): insieme di procedure che le applicazioni possono invocare
API non è definita all’interno dei protocolli di comunicazione, ma parte dei sistemi operativi residenti
Interfaccia SOCKET standard de facto Nel sistema UNIX BSD l’interfaccia socket è parte del sistema operativo
Molti produttori aggiungono le socket ai loro sistemi
Librerie di procedure (Libreria delle Socket)
Mettono a disposizione delle applicazioni un API Socket anche se il sistema operativo sottostante non le prevede
Quando le applicazioni chiamano una procedura della libreria essa invoca le funzioni del proprio sistema operativo per ottenere l’effetto desiderato
DESCRITTORE SOCKET
Descrittore (numero naturale) che individua il socket
(-1 for error) sd Il particolare protocollo di trasporto
0 nel caso TCP/IP Protocollo Modalità di comunicazione
Trasmissione orientata alla connessione (SOCK_STREAM)
Trasmissione priva di connessione (SOCK_DGRAM) Tipo Famiglia dei protocolli da usare
(PF_INET per TCP/IP)
(PF_DECnet per DEC) Fam_prot sd=socket(fam_prot,tipo,protocollo) Crea una socket e restituisce il descrittore Procedura SOCKET La comunicazione tramite socket si basa sul concetto di descrittore
Il descrittore rappresenta un oggetto
Le procedure sono metodi applicati all’oggetto
Flessibilità nello scrivere una sola applicazione per il trasferimento di dati verso destinazioni di natura diversa
Il descrittore può individuare un file
I dati saranno scritti sul file
Il descrittore può individuare una socket
I dati saranno trasferiti verso una applicazione di rete
PROCEDURE SOCKET
Descrittore (numero naturale) che individua il socket sd Close (sd) Richiede al sistema la chiusura di una socket Procedura close Di solito i client non chiamano la funzione BIND perche dell’indirizzo socket locale se ne occupa il sistema operativo Intero che rappresenta la lunghezza dell’indirizzo lungh_ind Indirizzo locale da assegnare alla socket ind_locale Descrittore (numero naturale) che individua il socket sd Bind (sd,ind_locale,lungh_ind) Lega un socket ad un indirizzo socket locale, cioè definisce il valore dell’indirizzo socket locale Procedura bind Massima lunghezza della coda lungh_coda Listen (sd,lungh_coda) Rende la socket passiva sul server per poterla usare per ricevere dati dal client Procedura listen
PROCEDURE SOCKET (continua)
Riempie i campi ind_client con l’indirizzo del client che inoltra la richiesta, crea una nuova socket e ne ritorna il descrittore al server Nuova_socket=accept( sd, ind_client,lungh_ind_client) Chiamata dal server e rimuove la prima richiesta di connessione dalla coda corrispondente. Procedura accept Connect(sd,ind_server,lungh_ind_server) Usata dal client per collegarsi al server Procedura connect Send(sd,dati…..) Trasferisce i dati in una comunicazione orientata alla connessione Procedura send Send(sd,dati, ind_dest…..) Trasferisce i dati in una comunicazione priva di connessione Procedura sendto Recv(sd, buffer, …..) Riceve i dati in una comunicazione orientata alla connessione Procedura recv Recv(sd, buffer, ind_mitt,…..) Riceve i dati in una comunicazione priva di connessione Procedura recvfrom
Esempio per server parallelo con connessioni
socket bind listen socket connect ripetizione accept Close
accepting recv processo send ripetizione Close
accepting ripetizione send recv Close SERVER CLIENT CHILD
Esempio per server sequenziale senza connessioni
socket bind socket ripetizione recvfrom processo sendto ripetizione sendto recvfrom Close SERVER CLIENT
Inizializzazione
L’insieme delle operazioni che hanno luogo all’avvio dei calcolatori è noto come bootstrap
Caricamento dei protocolli
Protocolli sono integrati con il sistema operativo
Si sfrutta la rete nel processo di boot
I protocolli vanno configurati
È necessario fornire al protocollo informazioni (parametri) sul sistema
Indirizzo IP
Indirizzo del router principale
Maschera di sottorete
Indirizzo del server DNS
Indirizzo del server delle stampanti
Indirizzi di altri server
Configurazione di protocolli
Configurazione basata sull’accesso al disco (file di configurazione)
nome_parametro = valore
Configurazione automatica
RARP
ICMP
Richiesta maschera degli indirizzi
Scoperta del router
Protocollo BOOTP
Il protocollo di bootstrap (BOOTP) è un protocollo progettato per ottenere le informazioni di rete (IP, mask, default gateway, name server) quando vengono installate macchine prive di disco CLIENT SERVER 67 UDP Apertura passiva CLIENT SERVER 67 UDP Richiesta 68 IP destinat IP mitt Porta destinatario Porta mittente richiesta Tutti 1 Tutti 0 67 68 richiesta CLIENT SERVER 67 UDP Risposta 68 Indirizzo unicast del client Indirizzo unicast del server 68 67 risposta
Dynamic Host Configuration Protocol (DHCP)
BOOTP è un protocollo di configurazione statico
DHCP è una estensione di BOOTP pensata per permettere procedure di configurazione dinamiche e con esso compatibile
Un server DHCP ha due data base
Uno per la configurazione statica
Uno contiene certi numeri di indirizzi IP da assegnare in “leasing”
DHCP:funzionamento
Fase 1 : DHCPDISCOVER
Il client cerca di acquisire un indirizzo IP
Inviato in broadcast
Include il MAC address
Fase 2 : DHCPOFFER
Inviato da qualsiasi server DHCP che riceve la richiesta discover
Offerta indirizzo IP e tempo di leasing
Il server congela l’indirizzo IP offerto
Fase 3 : DHCPREQUEST
Il client sceglie le offerte ricevute e ne invia uno al server
FASE 4 : DHCPACK
Conferma da parte del server
Creazione della corrispondenza tra MAC ed IP
Rinnovi di licenza
Ogni volta che un client DHCP si riavvia
Al 50% del tempo
Nomi di Dominio
INDIRIZZI IP 151.100.20.152 Registro Nomi it uniroma1 let cri cri.let.uniroma1.it sistema di registrazione unificato
Domain Name System (DNS)
un nome è decodificato da destra verso sinistra
la parte più a destra è definita zona
Per non doversi ricordare tutte le volte un indirizzo numerico, le varie reti che partecipano a Internet si sono accordate per definire uno standard di nomi alfanumerici, in modo che l'utente debba digitare ad esempio HTTP://WWW.MUSEOSCIENZA.ORG, e poi l'indirizzamento avvenga automaticamente verso l'indirizzo numerico giusto.
La traduzione dell'indirizzo da caratteri a numeri e' il compito di specifici computer chiamati Name Server
Questo sistema di nomi e' il Domain Name System (DNS)
Comments