La Trinakria.it
  Segnala errore sito
Glossario informatico
 
 
PPP
Point-to-Point Protocol
protocollo per trasmissioni punto-punto
Un protocollo che consente di connettere un computer a Internet via linea telefonica commutata, mantenendo gran parte delle prerogative che si avrebbero con un collegamento diretto. Tra le più importanti di queste prerogative abbiamo la possibilità di usare un browser Web, come Mosaic, Netscape Navigator o Internet Explorer. Il PPP viene tipicamente considerato migliore dello SLIP (Serial Line Internet Protocol) poiché, a differenza di quest'ultimo, esegue la correzione automatica degli errori, la compressione dei dati trasmessi, l'autenticazione della password e assicura un miglior rendimento teorico (non sempre realizzato nella realtà). Qualsiasi computer che disponga di un numero IP può connettersi a Internet usando modem ad alta velocità. PPP è in grado di iniziare e terminare una sessione, come pure interrompere una chiamata e richiamare lo stesso numero nel caso in cui la linea sia particolarmente disturbata (questa funzione deve essere attivata dal particolare programma usato per eseguire la chiamata via modem). Il PPP incapsula i comuni protocolli di livello rete (terzo livello OSI) all'interno di pacchetti specializzati. Due esempi in questo senso sono il IPCP (IP su PPP) e il IPXCP (l'IPX su PPP). Può essere utilizzato come sostituto del driver di rete così che gli utenti remoti possano collegarsi alla LAN come se fossero in locale. I protocolli usati per l'autenticazio ne della password sono il Password Authentication Protocol (PAP) e il Challenge Handshake Authentication Protocol (CHAP). Le specifiche del protocollo sono contenute nell'RFC 1661 (che rende obsolela l'RFC 1548). Spiegazione dettagliata: PPP (Point-to-Point Protocol) Nato nel dicembre 1993 e perfezionano nel luglio 1994 per iniziativa di William Allen Simpson (autodefinitosi sognatore ad occhi aperti), il PPP è il più largamente usato tra i protocolli Internet visto che costituisce lo strumento principe per accedere alla Rete per mezzo di un modem. Esso rappresenta un vettore per altri protocolli che, lasciati a se stessi, non potrebbero viaggiare su una linea punto-punto, vale a dire una linea telefonica o qualsiasi altra connessione su lunga distanza che veda ai propri estremi un solo destinatario e un solo mittente. Nella sua versione nativa, il protocollo TCP/IP funziona solamente in rete locale e necessita un vettore per muoversi su una rete geografica. Quando ci colleghiamo da casa, da un albergo o anche dall'ufficio mediante una linea a lunga distanza, l'unico punto di contatto possibile con il sistema all'altro capo è il modem oppure un dispositivo analogo (come un'interfaccia ISDN) e dobbiamo dipendere da questo per inviare le nostre richieste su Internet e ricevere le risposte. All'altro capo della linea c'è un sistema che funge da intermediario tra noi e la rete e che può essere un altro computer oppure un router. Il PPP è progettato per veicolare numerosi protocolli su una sola linea, il più comune tra questi è naturalmente l'Intenet Protocol (IP) il quale a sua volta funge da vettore per altri protocolli applicativi di grande interesse come l'HTTP (HyperText Transfer Protocol) per la consultazione di pagine Web, l'FTP (File Transfer Protocol) per il trasferimento di file a distanza, l'SMTP (Simple Mail Transfer Protocol) per l'inivio dei messaggi di posta elettronica, il POP3 (Post Office Protocol) per la copia in locale dei messaggi presenti nella nostra casella postale, l'NNTP ( Network News Transfer Protocol) per la consultazione di newsgroup e qualsiasi altro protocollo sia utile durante una sessione di collegamento con Internet. Il PPP li contiene tutti come una sorta di busta in cui s'inseriscono altre buste per spedirle a un singolo destinatario. È come raccogliere all'ufficio posta tutte le missive interne destinate a una filiale e inviarle all'ufficio posta all'altro estremo usando un singolo pacco. L'ufficio posta della filiale aprirà il pacco e distribuirà le lettere ai singoli destinatari, restituendoci un secondo pacco con le risposte. Il PPP ha una missione è triplice. Deve incapsulare i pacchetti generati dagli altri protocolli (datagrammi) all'interno di un singolo pacchetto. Deve attivare la connessione con il sistema remoto, configurarla e collaudarla. Deve disporre degli strumenti per controllare al proprio interno il flusso di tutti gli altri protocolli. Il Link Control Protocol La primissima fase d'intervento del PPP è nel creare la connessione con il sistema remoto. Ogni volta che ci si collega con una macchina distante è necessario negoziare i parametri di lavoro che verranno usati nel corso della connessione. Questo viene fatto in primo luogo dal modem che si accorda con il modem all'altro estremo su quale sarà la velocità di trasferimento e la compressione dei dati con correzione di errore da eseguire a livello fisico tra i due apparecchi. Tale prima fase rimane del tutto trasparente al PPP. Una volta che i modem hanno instaurato il legame fisico, i due sistemi si possono parlare e a questo punto devono mettersi d'accordo su quale formato d'incapsulamento utilizzare, sulla dimensione da assegnare ai pacchetti in transito e sulle modalità per porre fine al collegamento una volta che la sessione sia terminata. Tale negoziato è affidato a un protocollo specializzato all'interno di PPP, che si chiama Link Control Protocol. Quest'ultimo è responsabile per identificare qualsiasi errore nella connessione e per assicurare che le due macchine parlino la medesima lingua. Durante questa fase preliminare, inoltre, si possono eseguire eventuali operazioni di autenticazione del chiamante attraverso un altro protocollo specializzato, che può essere il CHAP (Challenge Handshake Authentication Protocol) oppure il PAP (Password Authentication Protocol). È in Link Control Protocol che si accorge se la connessione è venuta a mancare oppure se sta funzionando male per qualche difetto fisico e che segnala la cosa ai due computer interessati dal collegamento. Gli NCP tutto fare Una volta che la connessione è stata attivata, i due computer sono pronti a conversare ma non hanno ancora deciso che lingua utilizzare. Probabilmente useranno il protocollo IP, ma prima devono attivare tutti quei meccanismi che permetteranno d'incapsulare le trame IP nei pacchetti PPP senza che l'IP se ne accorga. Uno di questi gradini preliminari è l'assegnazione dell'indirizzo di rete. Lo standard vuole che tutte le macchine collegate a Internet per scopi di navigazione dispongano di un indirizzo IP univoco in tutto il mondo. Tale indirizzo serve per identificare il mittente delle richieste e per sapere dove inviare le risposte. Viene assegnato da enti internazionali che tengono un registro di tutti gli indirizzi distribuiti. Naturalmente non è molto pratico che ogni singolo navigatore Internet espleti le pratiche burocratiche per richiederne uno proprio, anche perché una delle condizioni per l'assegnazione di questi indirizzi è che la macchina su cui verrà utilizzato sia collegata a Internet in modo permanente, il che non coincide con la nostra esigenza di usare il PPP per accedere alla Rete via modem in modo saltuario. La soluzione consiste nell'affidare un gruppo d'indirizzi a società che poi li distribuiscono ai propri utenti. Un esempio classico è quello degli Internet Service Provider che amministrano questi indirizzi fra tutti i propri iscritti. Tuttavia, l'ISP ha bisogno di un sistema automatico per eseguire questa assegnazione: non è molto pratico affidare un indirizzo a ciascun abbonato e poi tenerne una registrazione puntuale. Inoltre l'abbonato si collega solo in certe ore del giorno e sarebbe uno spreco riservargli un indirizzo a tempo pieno. Infine l'abbonato potrebbe cambiare provider e continuare a usare l'indirizzo vecchio con il nuovo provider provocando problemi di configurazione per il nuovo e di approvvigionamento d'indirizzi per il vecchio. La soluzione consiste nell'assegnare dinamicamente un numero IP al momento della connessione. Questo lavoro viene svolto dal Network Control Protocol, il quale si occupa anche di selezionate anche qualsiasi altro protocollo rete si debba utilizzare sulla connessione in aggiunta all'IP (ad esempio l'IPX). Esiste in effetti un'intera famiglia di NCP, ciascuno dedicato a uno scopo specifico e l'incapsulamento non si limita al protocollo IP, ma abbraccia anche IPX e svariati altri protocolli proprietari, tra cui quelli di Xerox, Banyan, Apple, Digital Equipment, IBM SNA e altri ancora (vedi l'RFC 1700 o STD 2). L'NCP per protocollo IP usa a sua volta protocollo dedicato, l'IPCP (IP Control Protocol), che assomiglia all'LCP ma ha la prerogativa abilitare, disabilitare e configurare i moduli IP a entrambi gli estremi della linea. È questo il protocollo che negozia tutti i parametri specifici di questo ambiente, come la compressione IP e TCP e l'assegnazione automatica dell'indirizzo alla stazione remota. Inoltre l'IPCP blocca il flusso dei pacchetti IP fino a quando la connessione non è stata instaurata per intero, comprese le eventuali fasi di autenticazione del chiamante, e fa in modo che nel campo dati del PPP non entrino più informazioni di quelle che ci stanno e impone la frammentazione delle stesse in caso contrario. Il protocollo che svolge funzioni analoghe per IPX si chiama IPXCP. Facilità di configurazione Dovendo essere usato da persone non esperte, il PPP è concepito per semplificare il più possibile le modalità di collegamento. I parametri impostati per difetto (default) sono idonei per la maggior parte delle connessioni e le eventuali eccezioni vengono risolte automaticamente tra le due macchine (definite peer o pari nel linguaggio tecnico) senza intervento umano. Là dove il protocollo LCP riesce a eseguire solo una negoziazione parziale, entrano in gioco uno o più NCP per sistemare il resto. Di fatto è possibile usare qualsiasi tipo di connessione remota, non solo il modem. Esistono infatti versioni del protocollo PPP progettate per funzionare su linea ISDN, su rete X.25 e su fibra ottica ad alta velocità. Il formato della trama Per costruire il proprio pacchetto d'informazioni, PPP s'ispira a un vecchio protocollo, molto conosciuto nelle reti di grandi sistemi e nelle reti pubbliche: HLDC (High-Level Data Link Control). Si tratta di un protocollo nato per le connessioni sincrone (linee dedicate) perciò presenta caratteristiche bit-oriented, tuttavia PPP usa la trama a proprio modo e può quindi funzionare sia come protocollo sincrono bit-oriented sia come protocollo byte-oriented per linee asincrone, usando 8 bit di dati e nessuna parità (l'impostazione classica della porta seriale). La prima parte della trama contiene un flag (segnalatore) che ha un valore sempre fisso (7E espresso in cifre esadecimali), un indirizzo iniziale (con valore fisso esadecimale FF) e un campo di controllo (esadecimale 03). Queste parti sono invariabili e identificano il tipo di pacchetto. Segue immediatamente dopo l'indicazione del tipo di protocollo in uso. All'inizio della sessione il valore di questo campo sarà 0021 per indicare che si sta usando il Link Control Protocol per negoziare i primi parametri di connessione. Subito dopo subentra l'NCP (8021) e l'eventuale protocollo di autenticazione: PAP (C023) o CHAP (C223). Nel caso si voglia mantenere sotto controllo la qualità del collegamento è possibile ricorrere a un altro protocollo chiamato Link Quality Report che c'informa su quante informazioni da noi trasmesse sono andate perdute lungo la linea. Una volta terminati questi preamboli, possiamo chiamare in causa il protocollo di trasporto vero e proprio che sarà IP, TCP o altro. Segue un campo dedicato ai dati (cioè al datagramma IP che viene incapsulato nel pacchetto PPP) e che corrisponde, come dimensione massima, alla capienza di una trama Ethernet. Non a caso Internet è nata proprio usando Ethernet tra i suoi fondamenti primari. Il pacchetto PPP si chiude con la classica sequenza di verifica (Frame Check Sequence) calcolata sull'intera trama, compreso il campo indirizzo e il campo di controllo iniziali. Segue un altro flag che separa la trama corrente da quella successiva. Caratteri speciali Come tutti i protocolli asincroni byte-oriented, anche PPP usa alcuni caratteri speciali per regolare lo scambio di dati tra le due macchine. Il più importante fra questi è il carattere 7E (flag) usato come riconoscimento dell'inizio e della fine della trama. Grazie alla sua presenza non c'è bisogno di mantenere i due sistemi sincronizzati tra di loro attraverso qualche congegno di temporizzazione: basta che il destinatario resti in ascolto del carattere 7E (valore decimale126 - carattere ASCII ˜ tilde) per determinare i confini del pacchetto. In virtù di questo fatto, come in tutti i protocolli di tipo byte-oriented, il medesimo carattere non può essere utilizzato all'interno del campo dati perché provocherebbe l'interruzione prematura della trasmissione. D'altro canto, rispettare questo limite equivarrebbe a impedire la trasmissione di file binari, cioè i file di programma, che possono contenere qualsiasi sequenza di bit, incluso 7E, e che costituiscono una delle risorse più interessanti per navigatori Internet (pensiamo ai vari shareware, ai driver, agli aggiornamenti software gratuiti). La soluzione consiste nell'istruire il protocollo PPP di "saltare" (escape) il carattere quando lo incontra all'interno del campo dati. Ma poiché il computer non ha altro modo per sapere quali siano i confini del campo dati se non proprio attendere l'arrivo del carattere 7E, si richiede la sostituzione di tutti i caratteri 7E contenuti nel campo dati con una coppia di caratteri alternativa, ma riconoscibile. A questo si arriva usando un altro carattere speciale chiamato "escape" che si scrive 7D (valore decimale 125 - carattere ASCII } graffa chiusa) che serve segnalare che il carattere immediatamente successivo non è ciò che sembra, bensì costituisce in realtà la trasformazione di un carattere precedente che non poteva essere trasmesso nella sua forma originale. Quando la macchina in ricezione incontra il carattere 7D, sa che deve elaborare quello successivo e recuperare il carattere originale. L'elaborazione consiste nel prendere il sesto bit del carattere in questione e complementarlo (trasformarlo in 0 nel caso sia un 1 oppure viceversa). Facciamo un esempio prendendo appunto il carattere di flag 7E che scritto in notazione binaria diventa 0111 1111, cambiamo il suo sesto bit e otteniamo questa nuova sequenza: 0101 1111 che corrisponde alla notazione esadecimale 5D. In trasmissione, ogni volta che nel campo dati compare 7E, il protocollo sostituirà automaticamente la coppia di caratteri 7D,5D. All'altro capo, il protocollo di ricezione eseguirà 'operazione inversa 7D,5D = 7E. Questa regola vale per qualsiasi c arattere speciale che debba filtrare attraverso le maglie dei vari protocolli in gioco senza provocare conseguenze. Prendiamo l'esempio di un file che contenga il carattere 7D (cioè il carattere di escape). Applichiamo lo stesso sistema e perciò avremo una sequenza 7D,5D = 7D. Tutti i caratteri che hanno un valore esadecimale inferiore a 20 vengono trattati nello stesso modo. Infatti nel codice ASCII i primi trentadue caratteri (da 00 a 20 esadecimale) possono rappresentare comandi interpretabili dal modem oppure dalla stampante. In questa regione troviamo infatti il comando di avanzamento riga, di avanzamento pagina, di ritorno a capo, di cancellazione all'indietro e altro ancora. Il meccanismo di filtraggio è sempre il medesimo: li si fa precedere dal co dice 7D seguito da un codice esadecimale calcolato trasformando il sesto bit del numero originale. Perché il sesto bit? Perché 0010 0000 corrisponde al numero esadecimale 20, cioè alla soglia dalla quale vogliamo cominciare ad applicare questo filtro, e se prendiamo questo numero e lo sovrapponiamo a un qualsiasi altro numero esadecimale con un'operazione di OR esclusivo, vediamo che l'effetto prodotto è una complementazione del sesto bit a partire da destra. Se già sappiamo che alcuni dei primi 32 caratteri ASCII sono innocui, possiamo usare il Link Control Protocol per specificare quali di questi caratteri lasciar transitare senza codifica di escape. In fase di trasmissione su linea telefonica, di solito vengono soppressi i campi indirizzo e controllo, che sono sempre uguali e possono essere aggiunti nuovamente all'altro estremo quando la trama viene ricostruita dalla stazione ricevente. La decisione di comprimere l'intestazione della trama può anche essere unilaterale: il mittente tralascia di spedire il campo indirizzo e controllo e il ricevente legge la trama e, non incontrando i valori FF e 03, suppone che siano stati omessi, perciò li aggiunge di propria iniziativa. Le specifiche primarie del protocollo PPP sono contenute nell'RFC 1661, ma più di una dozzina di altre RFC collegate descrivono le modalità per incapsulare i diversi protocolli nei pacchetti PPP e descrivono in che modo eseguire il negoziato iniziale e tenere sotto controllo la qualità della linea. Tra le RFC accessorie merita attenzione la 1334 dedicata all'autenticazione degli accessi. Controllo degli accessi Abbiamo visto che, una volta completata la predisposizione della connessione attraverso LCP, capita sovente che il sistema chieda un'identificazione. Esistono due modalità per fornire nome e password. La prima consiste nel protocollo PAP (Password Authentication Protocol) il quale attende che la connessione sia attiva dopo di che continua a inviare la coppia "nome/password" fino a quando il terminale remoto risponde convalidando l'accesso oppure negandolo e terminando la connessione. Questo non è un approccio molto sicuro visto che la password viaggia sulla rete in chiaro e chiunque potrebbe intercettarla. Inoltre il sistema può essere bombardato da ripetuti tentativi di accesso da parte di un utente esterno che prova numerose combinazioni fino a quando ne azzecca una. È l'utente in remoto che ha la piena discrezione sulla frequenza e la durata dei propri tentativi di accesso. Il protocollo CHAP (Challenge Handshake Authentication Protocol) è più robusto poiché verifica periodicamente l'identità del sistema remoto usando un sistema di handshake (sincronizzazione) a tre vie. L'operazione viene seguita nel momento in cui la connessione è attivata e può essere ripetuta dopo. Non appena la connessione è completa, CHAP manda un messaggio di altolà (challenge) al sistema dell'utente il quale esegue un calcolo sul messaggio ricevuto basandosi su un matrice in proprio possesso e spedisce la risposta al sistema centrale. Quest'ultimo, che nel fra ttempo ha eseguito il medesimo calcolo, confronta i risultati e in caso affermativo abilita l'accesso, oppure lo nega. Il calcolo si basa su un sistema one-way hash. Ogni volta che invia un altolà (challenge), il sistema autenticatore inserisce un numero progressivo all'interno del pacchetto, numero che viene incrementato a ogni tentativo di connessione seguente. Contemporaneamente modifica anche il contenuto del pacchetto di challenge così da riportare sotto il proprio controllo la frequenza e la durata delle operazioni di autenticazione e riducendo il rischio di attacchi. Per funzionare, questo meccanismo richiede l'esistenza di un "segreto" noto unicamente al sistema centrale (autenticatore) e al sistema remoto (quello che tenta l'accesso). Segreto che non può essere trasferito sulla rete, ma deve essere recapitato in modo sicuro per vie diverse. La lunghezza del segreto deve essere di almeno 8 bit, ma la sicurezza aumenta in proporzione alla lunghezza e negli Stati Uniti la maggiore protezione oggi raggiungibile è con 128 bit. Il sistema one-way hash viene scelto in modo che sia praticamente impossibile risalire al segreto partendo semplicemente dal messaggio di challenge e dalla risposta. Il messaggio di challenge deve essere unico nel suo genere (per consentire il login da qualsiasi parte del mondo) e imprevedibile. Se fosse prevedibile, l'intruso potrebbe intrufolarsi fornendo uno dei challenge precedentemente intercettati. La qualità del sistema di protezione dipende in larga misura dall'applicazione che ne fa uso. Il protocollo PPP fornisce unicamente gli strumenti per trasportare le informazioni, mentre tutte le funzioni di autenticazione vengono svolte altrove, con criteri diversi a seconda dei Paesi in cui si svolgono. Ad esempio, la tecnologia one-way hash 128 esistente negli USA non può essere esportata in Europa in quanto "munizione" protetta dalla legislazione statunitense. Esistono soluzioni a 128 bit europee, ma non sono disponibili a tutti. Gli standard pubblicati su PPP Documenti primari RFC 1661 standard primario aggiornato RFC 1548 standard obsoleto sostituito dalla RFC 1661 RFC 1549 formattazione delle trame PPP in trame HDLC RFC 1552 ipx su PPP (IPXCP) RFC 1570 estensioni LCP RFC 1598 PPP su X.25 RFC 1618 PPP su ISDN RFC 1619 PPP su SONET/SDH RFC 1638 PPP Bridging Control Protocol RFC 1662 altro sulla formattazione di trame PPP in trame HDLC RFC 1663 trasmissione affidabile dei dati RFC 1762 DECnet su PPP RFC 1763 Banyan VINES su PPP RFC 1764 protocolli Xerox su PPP RFC 1841 Network Control Protocol con estensioni lan (per router remoti) RFC 1877 estensioni ai name address server RFC 1915 Connection Control Protocol ed Encryption Control Protocol Documenti collegati RFC 1332 Network Control Protocol per connessione ip su PPP (IPCP) RFC 1333 monitoraggio sulla qualità della connessione RFC 1334 protocolli di autenticazione per PPP (CHAP e PAP).


 Indietro