Lezione 8
Transcript
Lezione 8
CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 12.5 88 UDP (User Datagram Protocol) L’UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l’IP, é un protocollo inaffidabile, che demanda l’eventuale gestione degli errori di trasmissione e del riordinamento dei pacchetti in ricezione ad un livello superiore. Mentre il protocollo IP si occupa del trasferimento dei pacchetti tra due host, il protocollo UDP aggiunge la possibilitá di distinguere tra piú destinazioni (i programmi applicativi) sullo stesso host. Piú che l’host, il vero destinatario di un pacchetto é infatti un’applicazione (programma) che gira su di esso, sia allo scopo di realizzare un servizio (server e–mail, web, ecc.) che allo scopo di consentire ad un utente di usufruire di un servizio (client). Infatti, i dati o le richieste che un utente formula attraverso un client devono poter giungere ad un programma in esecuzione (server) in grado di elaborarle. L’UDP, cosı́ come l’altro protocollo di trasporto, consente di indirizzare un pacchetto verso uno specifico servizio (realizzato da un’applicazione) su un determinato host. Ció é fatto tramite un insieme di punti astratti di destinazione (e sorgente), detti porte di protocollo. Una porta, definita da un numero intero a 16 bit (per un totale di 65536 possibili porte) viene utilizzata da un processo (programma in esecuzione) per stabilire un collegamento con un altro processo che gira su un altro host. L’header del pacchetto UDP conterrá quindi i numeri di porta di destinazione e sorgente (l’header del pacchetto IP che lo contiene conterrá invece gli indirizzi IP degli host destinazione e sorgente). Un’applicazione che vuole inviare un pacchetto ad un’altra applicazione che realizza un certo servizio su un certo host (server) invierá un pacchetto UDP indicando il numero di porta appropriato (su cui l’applicazione destinazione é nota essere in ascolto). Il sistema operativo dell’host destinazione analizzerá l’header del pacchetto UDP e provvederá ad inviare il pacchetto all’applicazione in ascolto (se c’é) sul numero di porta specificato. Tale applicazione userá la porta sorgente per comunicare con l’applicazione che ha iniziato la comunicazione. Per iniziare la comunicazione, l’applicazione sorgente deve conoscere il numero di porta a cui indirizzare i pacchetti. A tale scopo un certo numero di porte sono state assegnate a determinati servizi (well–known ports) da parte di un’autoritá centrale. Ad esempio, tra di esse troviamo (sono usualmente memorizzate in un file denominato services) ftp-data 20/tcp ftp-data 20/udp # 21 is registered to ftp, but also used by fsp ftp 21/tcp CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP ftp 21/udp ssh 22/tcp ssh 22/udp telnet 23/tcp telnet 23/udp # 24 - private mail system smtp 25/tcp smtp 25/udp time 37/tcp time 37/udp rlp 39/tcp rlp 39/udp nameserver 42/tcp nameserver 42/udp . . . . . . . . . . http 80/tcp http 80/udp pop2 109/tcp pop2 109/udp pop3 110/tcp pop3 110/udp . . . . . . . . . . imap 143/tcp imap 143/udp 89 fsp fspd # SSH Remote Login Protocol # SSH Remote Login Protocol mail mail timserver timserver resource resource name name # # # # resource location resource location IEN 116 IEN 116 www www-http # WorldWideWeb HTTP www www-http # HyperText Transfer Protocol pop-2 postoffice # POP version 2 pop-2 pop-3 # POP version 3 pop-3 imap2 imap2 # Interim Mail Access Proto v2 Richiedendo un servizio, ad esempio la visualizzazione di una pagina web, il client utilizzato invierá una richiesta alla porta 80 dell’host destinazione. Tale assegnazione puó essere anche forzata dall’utente. Ad esempio, se nel browser (client) web utilizzato digitiamo www.unifi.it:8080 il client invierá la richiesta di verso la porta 8080. Se peró nessun server web é in ascolto su di essa, la richiesta non verrá raccolta. La maggior parte delle porte ĺasciato libero. Ognuna di esse puó essere assegnata dinamicamente dal sistema operativo ad un processo che ne fa richiesta. 12.6 TCP (Transmission Control Protocol) Il TCP (Transmission Control Protocol) é l’altro protocollo del livello di trasporto. É nato e si é sviluppato con Internet e non é mai stato completamente standardizzato. Per esso vengono definite solo le caratteristiche dei servizi del protocollo, lasciando libera l’implementazione degli stessi. CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 90 Come l’altro protocollo di trasporto, l’obiettivo del TCP é mettere in comunicazione le applicazioni che girano su diversi host. Al contrario dell’UDP, peró, il TCP mira a realizzare una connessione affidabile tra due host, impiegando una tecnica di conferma di ricezione con ritrasmissione. Ció vuol dire che l’host di destinazione provvede a inviare delle conferme di avvenuta e corretta ricezione dei pacchetti. Per non sottoutilizzare la rete, l’host sorgente invia comunque un certo numero di pacchetti senza aspettare conferma. Nel pacchetto inviato per confermare una corretta ricezione viene indicato il numero del primo byte dei dati che non é stato ancora ricevuto. Si conferma cosı́ l’avvenuta corretta ricezione dei byte precedenti e si indica quale pacchetto é eventualmente da ritrasmettere, se la conferma non giunge entro un tempo di time–out. Le caratteristiche fondamentali del protocollo TCP sono le seguenti. • Orientato al flusso (stream). Con ció si intende che i dati sono ricevuti con l’identica sequenza dei byte trasmessi (provvede all’eventuale riordinamento). • Connessione a circuito virtuale. Viene fornita una visione del collegamento come un circuito fisico dedicato (circuito virtuale), in cui si ha una fase di richiesta e accettazione del collegamento, una fase di scambio di dati, e la chiusura della connessione, anche se si appoggia al protocollo IP (che é senza connessione, ossia a datagramma). • Trasferimento bufferizzato. A meno di richieste esplicite da parte dei livelli superiori, per ottimizzare il numero dei pacchetti da trasmettere, i dati da trasmettere vengono suddivisi in pacchetti e trasmessi solo quando sono sufficienti a riempire un datagramma relativamente grande. • Flusso non strutturato. Il protocollo TCP non entra nel merito del formato o del tipo dei dati trasmessi, demandando alle applicazioni l’estrazione e l’interpretazione corretta dei dati dai pacchetti ricevuti. • Connessione full–duplex. É consentito il trasferimento in entrambe le direzioni. Il protocollo TCP assicura quindi una trasmissione affidabile dei pacchetti. L’UDP mira invece ad un invio rapido degli stessi. Ció fa preferire l’UDP nel caso di un trasferimento voce/video, in cui lo scarto di un numero limitato di pacchetti é meno dannoso del ritardo introdotto da un’eventuale ritrasmissione. Il TCP é invece utilizzato quando si vuole assicurare la ricezione dei dati spediti (es. e–mail, ftp, web, ecc.). CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP Host 1 client web 91 Host 2 client web 187.233.1.34 porta 1234 (client 1) porta 2555 (client 2) 155.215.6.33 porta 1234 Internet 150.217.8.124 porta 80 Server web Figura 12.2: Connessione di piú client ad un unico server mediante TCP. Come per l’UDP, per identificare l’applicazione sorgente e destinazione del pacchetto, viene utilizzato il numero di porta. Al solito, tale informazione é contenuta nell’header del datagramma TCP. Al contrario dell’UDP peró, il TCP lavora in termini di connessione, dove questa é caratterizzata da due punti (due applicazioni su due host), ognuno dei quali é caratterizzato da un indirizzo IP e un numero di porta. La connessione é quindi individuata da 4 numeri (Fig. 12.2) host 1 host 2 indirizzo IP indirizzo IP numero di porta numero di porta Ció permette che una porta su di un certo host su cui, ad esempio, é in ascolto un certo server, possa essere condivisa simultaneamente da piú connessioni (piú client dallo stesso o da diversi host). Il protocollo distingue comunque le connesioni poiché almeno uno dei 4 numeri é diverso per le diverse connessioni. Cosı́, ad esempio, piú utenti si possono collegare al solito server di posta. Non si ha ambiguitá anche se i protocolli TCP e UDP condividono la stessa porta, dato che i pacchetti IP contengono l’informazione del tipo di protocollo contenuto. Capitolo 13 Protocolli applicativi In questo capitolo prenderemo brevemente in considerazione alcuni protocolli applicativi della suite TCP/IP, alla base di altrettanti servizi messi a disposizione degli utenti della rete. 13.1 Telnet Ogni sistema operativo prevede un’interfaccia a linea di comando, da cui un utente puó avviare processi, gestire il file system, ecc. ecc. Ad esempio, il prompt del DOS (cmd o command) nei sistemi Windows. Telnet é un protocollo, che si appoggia sul TCP, che consente l’accesso all’interfaccia a linea di comando di un sistema remoto. Per utilizzare tale servizio, un utente avvierá un client Telnet (ad esempio Telnet, per i sistemi Windows e Linux/Unix) per connettersi ad un host su cui girerá un server Telnet. Dopo una fase di autenticazione, in cui l’utente deve fornire un login ed una password validi per l’host a cui ci si collega, il client passa tutto ció che é digitato sull’host dell’utente al server remoto, come se fosse digitato alla tastiera di quest’ultimo. Tutte le risposte vengono quindi visualizzate sul monitor del client (Fig. 13.1). Il protocollo consente inoltre la negoziazione di alcune opzioni da parte del client e del server. Per consentirne l’uso con sistemi operativi quanto piú eterogenei possibile, il protocollo definisce il formato con cui le sequenze dei comandi e dati sono inviati sulla rete (NVT: Network Virtual Terminal). La particolare versione del server e del client si occuperá della traduzione da e verso il sistema operativo ospite. Nonostante ció che si puó pensare, l’utilizzo di terminali a linea di comando risulta estremamente utile. Ció avviene, ad esempio, nel caso in cui 92 CAPITOLO 13. PROTOCOLLI APPLICATIVI I/O utente (tastiera/monitor) 93 host A host B client Telnet server Telnet sistema operativo sistema operativo Internet Figura 13.1: Connessione tra client e server Telnet. un host non sia facilmente raggiungibile e, comunque, per consentire a piú utenti di accedere contemporaneamente ad una certa macchina, ad esempio, per sfruttrne le capacitá di calcolo. Sotto i sistemi operativi come gli Unix/Linux, l’interfaccia a linea di comando mette a disposizione un insieme di strumenti molto potenti per la gestione e la configurazione della macchina stessa. Inoltre un’interfaccia a linea di comando richiede pochissime risorse, e puó funzionare anche in condizioni critiche. Secondo il protocollo Telnet, tutto il traffico, compreso il nome di login e la password, transita in chiaro, ossia come stringa di testo, quindi potenzialmente visibili anche ad altri utenti. Per questo, in molti casi, per problemi di sicurezza, viene preferito l’utilizzo del protocollo (e di server/client) SSH (Secure Shell), che prevede la crittatura di tutti i dati e messaggi in transito tra client e server, comprese le informazioni di login e password di un utente autorizzato a collegarsi. In tal caso, l’utente avvierá un client ssh, per connettersi ad un host su cui gira un server ssh. 13.2 FTP (File Transfer Protocol) Il protocollo FTP (File Transfer Protocol) implementa un meccanismo per il trasferimento di file tra due host. Oltre a poter esser utilizzato dalle applicazioni, é prevista una semplice interfaccia utente testuale per l’accesso al file system dell’host remoto. Inoltre é prevista un’autenticazione dell’utente tramite un nome di login ed una password, e puó essere specificato il formato dei dati da trasferire, allo scopo di effettuare una conversione automatica