PPP
protocollo per trasmissioni punto-punto (Point-to-Point Protocol)

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'autenticazione 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)










Glossario dei termini dell'informatica a cura di Roberto Mazzoni
Tutti i diritti riservati