Professional Documents
Culture Documents
TCP
FDDI backbone switch uplink global server porta Fddi SWITCH Ethernet SWITCH Ethernet SWITCH Ethernet
Internet nasce come esperimento militare nel 1969 con il nome di ARPANET. Il protocollo TCP/IP nasce nel 1980, insieme ad UNIX, e viene utilizzato su ARPANET. Nel 1987 la rete ARPANET fu affiancata da una nuova struttura che and a formare la NFSNET ( National Foundation of Science). In seguito al posto di ARPANET si sostituisce unaltra NFSNET, ed oggi le due reti formano il nucleo di Internet. Nel 1990 Internet contava 1.000 reti locali connesse, oggi siamo quasi al limite teorico di 1.000.000 di reti.
Architettura TCP/IP
n n n n n n
TCP - Transmission Control Protocol UDP - User Datagram Protocol IP - Internet Protocol ICMP - Internet Control Message Protocol ARP - Address Resolution Protocol RARP - Reverse Address Resolution Protocol
Applicazione Presentazione Sessione Trasporto Rete Dati Fisico OSI Trasporto Internet Interfaccia rete Hardware TCP/IP TCP UDP Applicazione Protocolli e servizi applicativi
IP ICMP ARP RARP Routing Driver di rete Scheda di rete (NIC) Componenti di TCP/IP
Esso
affidabile tra due soggetti (end-to-end) su una internet di per se inaffidabile, e ne costituisce il livello di trasporto (Transport Layer).
Ogni
apposito software che svolga le mansioni di entit di trasporto TCP, questo pu essere un semplice processo utente o pu fare parte del kernel del Sistema Operativo della macchina stessa.
porta sorgente (Source port) e porta destinazione (Destination port), ognuno di 16 bit, che identificano gli estremi locali della connessione. Ogni host deve decidere come allocare le porte successive alla 256. Lins ieme di porta e indirizzo IP dellhost forma lidentificativo unico a 48 bit di un socket mentre i numeri di socket sorgente e destinazione identificano univocamente la connessione.
I campi numero di sequenza (Sequence number) e numero di ack (Acknowledgement number), entrambi di 32 bit, servono a ricostruire correttamente il flusso di dati originale evitando di stravolgere lordine dei segmenti o di perderne qualcuno.
E importante notare che il numero di ack indica il prossimo byte atteso e non lultimo byte correttamente spedito.
TCP header length indica il numero di parole da 32 bit contenute nel preambolo TCP. URG ha valore 1 se il campo Urgent pointer effettivamente valido. Indica uno scostamento in byte dal numero di sequenza attuale, indispensabile per individuare i dati urgenti. ACK posto a 1 quando il campo numero di ack valido. PSH se ha valore 1 indica allentit TCP di non memorizzare dati nel buffer di invio, ma di inviarli immediatamente. RST posto ad 1 per indicare un qualche problema a causa del guasto, divenuta instabile SYN usato per la creazione di una connessione. FIN serve a segnalare che il mittente non ha altri dati da inviare. Finestra (Window) che indica quanti byte possono essere spediti a partire dal byte confermato.
Checksum verifica il preambolo, i dati e uno pseudopreambolo. Durante la sua esecuzione lalgoritmo di checksum pone il campo controllo a 0, e aggiunge uno 0 al campo dati se la sua lunghezza un numero dispari. Poi somma tutte le parole di 16 bit in complemento a 1 e prende il complemento a 1 della somma. Di conseguenza il destinatario deve ottenere 0 come risultato delloperazione sullintero segmento (incluso controllo).
Lo pseudopreambolo contiene lindirizzo IP a 32 bit delle macchine sorgente e destinazione, il numero di protocollo (per il TCP 6) e il numero di byte del segmento TCP (incluso il preambolo). In questo modo possibile individuare i pacchetti consegnati allindirizzo sbagliato (anche se tale controllo dovrebbe essere effettuato solo dal livello di rete, ovvero lIP).
Ricevente
Buffer del Ricevente 0K 8k
Vuoto
4K SEQ=0
4K
ACK=4096 WIN=4096
4K
SEQ=4096
Pieno
Lapplicazione legge 2K
ACK=8192 WIN=0
6K
Il Mittente invia 1K (ma pu inviare fino a 2K) ACK=8192 WIN=2048
1K
SEQ=8192
1K
6K
veicolare il flusso di dati richiesto e che tende a "perdere" pacchetti). La soluzione scelta da Internet affronta i due tipi di congestione separatamente, utilizzando due finestre, una, relativa al ricevente, detta Finestra del ricevente e laltra, relativa al canale trasmissivo, detta Finestra di congestione.
n
se questo consegnato prima che scada il timer, il valore della finestra di congestione viene raddoppiata e vengono spediti due segmenti.
n
se arrivano a destinazione entro il timeout la dimensione della finestra di congestione ancora raddoppiata e vengono inviati 4 segmenti.
n
Si continua a raddoppiare la finestra di congestione e ad inviare un numero sempre maggiore di segmenti, sino a quando non si raggiunge un valore per cui almeno un segmento non raggiunge la destinazione e scatta il timeout
n
allora si prender come valore massimo della finestra di congestione la met del valore raggiunto (cio il valore che aveva al passo precedente).
n
Nella figura la soglia inizia da 32KB (si gi verificato un time-out) e la dimensione del segmento di 1KB.
1.Calcolo del Round Trip Time RTT = . RTT + (1 - ) . M ( 7/8, M il valore misurato del RTT) 2. Timeout = RTT + 4 . D dove D la deviazione media data da:
0,1 (b) 0
0 10 20 30 40 50
Tempo di andata e ritorno ( ms) Densit di probabilit dei tempi di arrivo degli ack per il DLL (curva a) e per il TCP (curva b).
D = . D + (1 - ) . | RTT M | Timer di persistenza: evita unattesa indefinita pa parte del SENDER in caso di perdita dellACK. Keepalive timer: verifica, in caso di lunghe inattivit, se laltro estremo ancora connesso.
Se tale processo non esiste, viene spedito un segmento con il flag RST=1 per rifiutare la connessione. Se esiste, gli si consegna il pacchetto TCP appena arrivato.
server
client
SYN(SEQ=X) TEMPO
server
SYN(SEQ=Y, ACK=X+1)
SYN(SEQ=X+1, ACK=Y+1)
SYN(SEQ=X, ACK=Y+1)
Nel caso in cui due host tentino contemporaneamente di creare una connessione tra due stessi socket (a) e (b), essendo la connessione individuata univocamente dalla coppia (a, b), verr comunque registrata una sola connessione fra (a) e (b).
LUDP consente di inviare pacchetti con il minimo overhead, senza garanzia di consegna. Il protocollo non invia messaggi di accettazione e non in grado di rilevare perdita di dati, trasmissione fuori sequenza o duplicazioni pacchetti. Il protocollo UDP controlla lerrore solo attraverso il Checksum. 32 bit
Ottetto 0 Ottetto 4 Ottetto 8
DATI