Transmission Control Protocol Franco Callegati Franco Callegati IC3N 2000 N. 1 Transmission Control Protocol - RFC 793 Protocollo di tipo connection-oriented Ha lo scopo di realizzare una comunicazione full-duplex affidabile e di tipo end-to-end fra processi applicativi di due host, facenti parte di un sistema di reti interconnesse E disegnato assumendo che: il livello inferiore sia in grado di fornire solamente un semplice ed inaffidabile servizio di trasferimento dei pacchetti di tipo connection-less (esattamente quello che fa l IP) Franco Callegati IC3N 2000 N. 2 1
Funzioni del TCP Affidabilità del collegamento: il TCP garantisce la completa correttezza nella consegna dei dati, finchè il sistema di reti interconnesse non diviene completamente partizionato a causa di guasti ai collegamenti fisici A tale fine utilizza: numerazione sequenziale dei dati, prendendo come unità di riferimento il byte conferma esplicita della ricezione di ogni blocco di byte da parte del ricevitore (acknowledge) ritrasmissione dei dati di cui non viene confermata la ricezione Franco Callegati IC3N 2000 N. 3 Funzioni del TCP (2) Controllo dell errore per il riconoscimento degli errori di trasmissione viene effettuato un controllo mediante 16 bits Controllo di flusso: prevede un meccanismo a finestra che permette al ricevitore di regolare il flusso dati inviati dal trasmettitore Franco Callegati IC3N 2000 N. 4 2
Funzioni del TCP (3) Multiplazione: permette a più processi di utilizzare le sue funzioni di comunicazioni contemporaneamente usa un identificativo detto numero di porta (che equivale concettualmente al SAP secondo la terminologia OSI) per identificare il processo destinazione Una connessione è costituita da una coppia di endpoints: il numero di porta, concatenato con il numero IP dell host costituisce un end-point una coppia di end-points identifica in modo univoco una particolare connessione, così che un singolo end-point può essere condiviso tra più connessioni sulla stessa macchina Franco Callegati IC3N 2000 N. 5 Funzioni del TCP (4) Controllo della connessione: per garantire affidabilità ed il controllo di flusso, il TCP lavora in modo connection-oriented deve prevedere tutte le procedure per: l instaurazione, il controllo del corretto andamento la chiusura di ogni connessione Franco Callegati IC3N 2000 N. 6 3
L interfaccia Socket Qual è l interfaccia fra i programmi applicativi ed il software dei protocolli? Gli standard non specificano come gli applicativi debbano interagire con i protocolli L interfaccia non è standardizzata e dipende dall implementazione del sistema operativo Franco Callegati IC3N 2000 N. 7 Interfaccia Socket in BSD Unix Un programma applicativo interagisce con il sistema operativo mediante system calls: - open - read -write -close la comunicazione tra due applicazioni residenti su macchine distinte avviene seguendo lo schema client-server: - un codice server che esegue precise funzioni attende Franco Callegati IC3N 2000 N. 8 4
Uso delle socket Al momento della connessione è necessario un accordo tra i due host per stabilire i numeri di porta da utilizzare L host che inizia la connessione deve comunicare a quale porta si vuole connettere e qual è il numero di porta da lui utilizzato Il numero di porta a cui connettersi deve essere in qualche modo noto a priori all host sorgente Franco Callegati IC3N 2000 N. 9 Uso delle socket (2) Host A TCP 301 300 IP Host C TCP 25 23 23 IP Host B TCP 301 IP Franco Callegati IC3N 2000 N. 10 5
Well-known-socket (servizio client-server) Un processo client, avviato nell host sorgente, tenta di connettersi ad un processo server nell host destinazione (demone) per ottenere un servizio Il client deve sapere la porta attribuita al demone, cioè deve esserci accordo preliminare sui numeri di porta da utilizzare per i server Le porte da 0 a 255 sono riservate per questo uso, e si attribuiscono ai vari demoni dei numeri di porta prefissati, uguali per qualunque host di Internet. Questi numeri riservati danno vita alle well known socket. Franco Callegati IC3N 2000 N. 11 Well-known-socket (esempi) Numero Nome Tipo di servizio 20 FTP-DATA trasferimento files (dati) 21 FTP trasferimento files(contr.) 23 TELNET server Telnet 25 SMTP trasf. posta elettronica 53 DOMAIN Domain Name Server 109 POP2 Post Office Protocol 2 Franco Callegati IC3N 2000 N. 12 6
Formato del pacchetto TCP 32 bit Source Port Destination Port Sequence number Acknowledge number Data Offset Reserved U R C A C K P S H R S T S Y N F I N Window Checksum Urgent Pointer Opzioni Padding Dati Franco Callegati IC3N 2000 N. 13 Formato del pacchetto TCP (2) Source port: numero della porta sorgente Sequence number: numero di sequenza del primo byte del pacchetto; se è presente il bit SYN questo è il numero di sequenza iniziale su cui sincronizzarsi Acknowledge number: se il bit ACK è a 1 allora questo numero contiene il numero di sequenza del blocco di dati che il ricevitore si aspetta di ricevere Data offset: numero di parole di 32 bit dell intestazione TCP; indica dove iniziano i dati Reserved: sei bit riservati per uso futuro Franco Callegati IC3N 2000 N. 14 7
Formato del pacchetto TCP (3) Control bit: sono 6 bit di controllo - URG posto a 1 se si deve considerare il campo Urgent Pointer - ACK posto a 1 se si deve considerare il campo Acknowledge - PSH posto a 1 serve per la funzione di push, di cui non ci occupiamo - RST posto a 1 per resettare la connessione - SYN posto a 1 per sincronizzare i numeri di sequenza - FIN posto a 1 per indicare la fine dei dati Franco Callegati IC3N 2000 N. 15 Formato del pacchetto TCP (4) Window: il numero di byte, partendo dal numero di sequenza di quello contenuto nel campo acknowledge, che il ricevitore è disposto a ricevere Checksum: controllo errore sull intestazione e dati Urgent Pointer: contiene puntatore a dati urgenti eventualmente presenti nel pacchetto (es. per abortire programma remoto in esecuzione), ha senso se il bit URG è posto ad 1 Options: contiene opzioni per la connessione Padding: bit aggiuntivi per fare in modo che l intestazione sia multipla di 32 bit Franco Callegati IC3N 2000 N. 16 8
User Datagram Protocol - RFC 768 32 bit Source Port Message Lenght Destination Port Checksum (optional) Dati UDP è un protocollo di tipo connectionless a livello 4, per tutte quelle applicazioni per cui la completa gestione della connessione TCP non è necessaria Usato da quelle applicazioni che trasmettono pacchetti singoli, senza necessità di acknowledgement Franco Callegati IC3N 2000 N. 17 User Datagram Protocol - RFC 768 (2) Utilizzati solamente i campi di source e destination port Anche per UDP esiste il concetto di porta, ed aggiunge ad IP la possibilità di distinguere diverse applicazioni entro uno stesso host Port 7: echo; port 69: trivial file transfer Franco Callegati IC3N 2000 N. 18 9