Upload
luca-astori
View
835
Download
0
Tags:
Embed Size (px)
DESCRIPTION
BASIC TRAINING AND INFORMATION KNOWLEGDE for TCP-IP introduction.
Citation preview
1
Introduzione al TCP/IP
2
OSI and Protocol StackOSI: Open Systems Interconnect
OSI Model TCP/IP Hierarchy Protocols
7th
Application Layer
6th
Presentation Layer
5th
Session Layer
4th
Transport Layer
3rd
Network Layer
2nd
Link Layer
1st
Physical Layer
Application Layer
Transport Layer
Network Layer
Link Layer
Link Layer : includes device driver and network interface cardNetwork Layer : handles the movement of packets, i.e. RoutingTransport Layer : provides a reliable flow of data between two hostsApplication Layer : handles the details of the particular application
3
Packet Encapsulation
I dati vengono inviati attraverso lo stack (o pila) dei protocolli Ciascun layer (o livello) aggiunge la propria specifica porzione di dati anteponendo la propria le intestazioni
22Bytes20Bytes20Bytes 4Bytes
64 to 1500 Bytes
4
Ethernet
Permette la comunicazione Computer <-> Computer (non solo) sullo stesso network
Ciascun device dispome di un indirizzo MAC (o MAC address) che lo identifica univocamente. Questo indirizzo e’ formato da un identificativo a 48-bit
esempio: 00-C0-4F-48-47-93
Pacchetto Ethernet :Dest.
addressData CRCSorgent
eaddress
Type
MAC: Media Access Control
6bytes 6bytes 2bytes
Preambolo
8bytes 64 - 1500bytes 4bytes
5
ARP : Address Resolution Protocol
Il protocollo ARP permette la “mappatura” dei devices32bit IP address <-> 48bit MAC address128.97.89.153 <-> 00-C0-4F-48-47-93
ARP cache Tabella creata alla scopo di mantenere all’interno del device una mappatura dei recenti indirizzi IP con I relativi indirizzi di MAC addresses
Protocollo1. La funzionalita’ dell’ARP avviene tramite broadcast (inviata a
tutta la network) veicolata attraverso l’Ethernet 2. Solo l’ARP layer del device che si identifica con la richiesta
risponde al richiedente3. ARP-REQUEST -> ARP-REPLY
6
IP: Internet Protocol IP è un protocollo di rete a pacchetto; secondo la classificazione ISO/OSI è
di livello rete (3). IP è un protocollo di interconnessione di reti (Inter-Networking Protocol), nato per interconnettere reti eterogenee per tecnologia, prestazioni, gestione. Pertanto IP è spesso implementato sopra altri protocolli di livello rete.
Protocollo inaffidabile in quanto è un servizio di consegna privo di connessione (connectionless)
E’ responsabile per l'instradamento dei dati attraverso le reti intermedie e da/per i device
Header IP :
1 :ICMP6 :TCP17 :UDP
118901
11112345
11116789
22220123
22224567
223389010123 4567
7
IP Routing
Routing Table o Tabella di RoutingIP address di destinazioneIP address del router di “next-hop” (default
GW) Flags Network interface specification
Application
Transport
Network
Link
Application
Transport
Network
Link
Network
Link
Sorgente Destinazione
Router
8ICMP : Internet Control Message Protocol
ICMP Message
ICMP DataICMP
HeaderIP
Header
4bytes20bytes
Type Code Checksum
1byte 1byte 2bytes
Usato per segnalare problemi con la consegna di datagrammi IP in una rete IP
Utilizzato da comandi quali Ping e Tracerout
Tipologie e Codici Echo Request (type=8, code=0) Echo Reply(type=0, code=0) Destination Unreachable(type=3, code=0) Time Exceeded(type=11, code=0) : Time-to-Live =0
9TCP : Transmission Control Protocol pt. 1
Connection-Oriented, affidabile, offre il trasporto di un flusso di byte bidirezionale
1. Verifica l’apertura delle connessione (handshake)2. garantisce che i dati trasmessi, se giungono a
destinazione, lo facciano in ordine e una volta sola ("at most once").
3. Chiusura delle connessioni
0 1 2 3 4 5 6 7 8 9 10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Porta Sorgente Porta Destinazione
Sequence Number o Numero di sequenza
Acknowledgement Number
DataOffset
- - - -
Window
Checksum Urgent Pointer
Options (0 to 10 Words of 32 Bits)
TCP Payload (dati applicativi)
Header TCP
10TCP : Transmission Control Protocol pt. 2
Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP. Destination port [16 bit] - Identifica il numero di porta sull'host destinatario associato alla connessione
TCP. Sequence number [32 bit] - Numero di sequenza, indica lo scostamento (espresso in byte) dell'inizio del
segmento TCP all'interno del flusso completo, a partire dall' Initial Sequence Number (ISN), negoziato all'apertura della connessione.
Acknowledgment number [32 bit] - Numero di riscontro, ha significato solo se il flag ACK è settato a 1, e conferma la ricezione di una parte del flusso di dati nella direzione opposta, indicando il valore del prossimo Sequence number che l'host mittente del segmento TCP si aspetta di ricevere.
Data offset [4 bit] - Indica la lunghezza (in word da 32 bit) dell'header del segmento TCP; tale lunghezza può variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options.
Reserved [4 bit] - Bit non utilizzati e predisposti per sviluppi futuri del protocollo; dovrebbero essere settati a zero.
Flags [8 bit] - Bit utilizzati per il controllo del protocollo: CWR (Congestion Window Reduced) - se settato a 1 indica che l'host sorgente ha ricevuto un segmento
TCP con il flag ECE settato a 1 (aggiunto all'header in RFC 3168). ECE (ECN-Echo) - se settato a 1 indica che l'host supporta ECN (Explicit Congestion Notification)
durante il 3-way handshake (aggiunto all'header in RFC 3168). URG - se settato a 1 indica che nel flusso sono presenti dati urgenti alla posizione (offset) indicata dal
campo Urgent pointer; ACK - se settato a 1 indica che il campo Acknowledgment number è valido; PSH - se settato a 1 indica che i dati in arrivo non devono essere bufferizzati ma passati subito ai livelli
superiori dell'applicazione; RST - se settato a 1 indica che la connessione non è valida; viene utilizzato in caso di grave errore; SYN - se settato a 1 indica che l'host mittente del segmento vuole aprire una connessione TCP con
l'host destinatario e specifica nel campo Sequence number il valore dell' Initial Sequence Number (ISN); ha lo scopo di sincronizzare i numeri di sequenza dei due host. L'host che ha inviato il SYN deve attendere dall'host remoto un pacchetto SYN/ACK.
FIN - se settato a 1 indica che l'host mittente del segmento vuole chiudere la connessione TCP aperta con l'host destinatario. Il mittente attende la conferma dal ricevente (con un FIN-ACK). A questo punto la connessione è ritenuta chiusa per metà: l'host che ha inviato FIN non potrà più inviare dati, mentre l'altro host ha il canale di comunicazione ancora disponibile. Quando anche l'altro host invierà il pacchetto con FIN impostato la connessione, dopo il relativo FIN-ACK, sarà considerata completamente chiusa.
11TCP : Transmission Control Protocol pt. 3
Advertise Window [16 bit] - Indica la dimensione della finestra di ricezione dell'host mittente, cioè il numero di byte che il mittente è in grado di accettare a partire da quello specificato dall'acknowledgment number.
Checksum [16 bit] - Campo di controllo utilizzato per la verifica della validità del segmento. È ottenuto facendo il complemento a 1 della somma complemento a uno a 16 bit dell'intero header TCP (con il campo checksum messo a zero) con l'aggiunta di uno pseudo header composto da: indirizzo IP sorgente(32bit),indirizzo IP destinazione(32bit), un byte di zeri, un byte che indica il protocollo e due byte che indicano la lunghezza del pacchetto TCP (header + dati).
Urgent pointer [16 bit] - Puntatore a dato urgente, ha significato solo se il flag URG è settato a 1 ed indica lo scostamento in byte a partire dal Sequence number del byte di dati urgenti all'interno del flusso.
Options - Opzioni (facoltative) per usi del protocollo avanzati.
12
OSI: Open Systems Interconnection
ISO/OSI è uno stack di protocolli incapsulati, che sicuramente è più flessibile rispetto al paradigma di TCP/IP (TCP= Transfer Control Protocol ; IP= Internet Protocol), ma soltanto perché risulta più astratto rispetto a questo. In pratica non esistono implementazioni 'complete' di ISO/OSI, a parte quelle proprietarie (ad esempio il protocollo proprietario DECNET della Digital) e di interesse accademico.
ISO/OSI ha quindi un interesse puramente didattico come esempio di architettura di riferimento per tutte le altre architetture utilizzate in pratica.
13OSI: Open Systems Interconnection pt. 1
Livello 1: fisico
Obiettivo: trasmettere un flusso di dati non strutturati attraverso un collegamento fisico, occupandosi della forma e del voltaggio del segnale. Ha a che fare con le procedure meccaniche e elettroniche necessarie a stabilire, mantenere e disattivare un collegamento fisico.
Ovvero semplicemente: si occupa di controllare la rete, gli hardware che la compongono e i dispositivi che permettono la connessione, ovvero in questo livello si decidono tutti gli aspetti puramente fisici che mettono in pratica la connessione, tra i quali:
Le tensioni scelte per rappresentare i valori logici La durata in microsecondi del segnale elettrico che identifica un bit L'eventuale trasmissione simultanea in due direzioni La forma e la meccanica dei connettori usati per collegare l'hardware al mezzo
trasmissivo
14OSI: Open Systems Interconnection pt. 2
Livello 2: datalink
Obiettivo: permettere il trasferimento affidabile di dati attraverso il livello fisico. Invia frame di dati con la necessaria sincronizzazione ed effettua un controllo degli errori e delle perdite di segnale. Tutto ciò consente di far apparire, al livello superiore, il mezzo fisico come una linea di trasmissione esente da errori di trasmissione.
Questo livello si occupa di formare i dati da inviare attraverso il livello fisico, incapsulando i dati in un pacchetto provvisto di header (intestazione) e tail (coda), usati anche per sequenze di controllo. Questa frammentazione dei dati in specifici pacchetti è detta framing e i singoli pacchetti sono i frame.
Per ogni pacchetto ricevuto, il destinatario invia al mittente un pacchetto ACK (acknowledgement, conferma) contenente lo stato della trasmissione: il mittente deve ripetere l'invio dei pacchetti mal trasmessi e di quelli che non hanno ricevuto risposta. Per ottimizzare l'invio degli ACK, si usa una tecnica, che consiste nell'accodare ai messaggi in uscita gli ACK relativi ad una connessione in entrata, per ottimizzare l'uso del livello fisico. I pacchetti ACK possono anche essere raggruppati e mandati in blocchi. Questo livello si occupa anche di controllare il flusso di dati: in caso di sbilanciamento di velocità di trasmissione, si occupa di rallentare l'opera della macchina più veloce, accordandola all'altra e minimizzando le perdite dovute a sovraccarico.La sua unità dati fondamentale è il frame.
15OSI: Open Systems Interconnection pt. 3
Livello 3: reteObiettivo: rende i livelli superiori indipendenti dai meccanismi e dalle tecnologie di trasmissione usate per la connessione. Si occupa di stabilire, mantenere e terminare una connessione, garantendo il corretto e ottimale funzionamento della sottorete di comunicazione.È responsabile di:
routing: scelta ottimale del percorso da utilizzare per garantire la consegna delle informazioni gestione della congestione: evitare che troppi pacchetti arrivino allo stesso router contemporaneamente indirizzamento conversione dei dati nel passaggio fra una rete ed un'altra con diverse caratteristiche. Deve, quindi:
•tradurre gli indirizzi •valutare la necessita' di frammentare i dati se la nuova rete ha una diversa Maximum Transmission Unit (MTU) •valutare la necessita' di gestire diversi protocolli attraverso l'impiego di gateway
La sua unità dati fondamentale è il pacchetto.
16OSI: Open Systems Interconnection pt. 4
Livello 4: trasporto
Obiettivo: permettere un trasferimento di dati trasparente e affidabile (implementando anche un controllo degli errori e delle perdite) tra due host. È il primo livello realmente end-to-end, cioè da host sorgente a destinatario.
A differenza dei livelli precedenti, che si occupano di connessioni tra nodi contigui di una rete, il Trasporto (a livello logico) si occupa solo del punto di partenza e di quello finale.
Si occupa anche di effettuare la frammentazione dei dati provenienti dal livello superiore in pacchetti, detti 'segmenti' e trasmetterli in modo efficiente ed affidabile usando il livello rete ed isolando da questo i livelli superiori. Inoltre, si preoccupa di ottimizzare l'uso delle risorse di rete e di prevenire la congestione.
La sua unità dati fondamentale è il messaggio.
17OSI: Open Systems Interconnection pt. 5
Livello 5: sessione
Obiettivo: controllare la comunicazione tra applicazioni. Stabilire, mantenere e terminare connessioni (sessioni) tra applicazioni cooperanti.
Esso consente di aggiungere, ai servizi forniti dal livello di trasporto, servizi più avanzati, quali la gestione del dialogo (mono o bidirezionale), la gestione del token (per effettuare mutua esclusione) o la sincronizzazione (inserendo dei checkpoint in modo da ridurre la quantità di dati da ritrasmettere in caso di gravi malfunzionamenti).
Si occupa anche di inserire dei punti di controllo nel flusso dati: in caso di errori nell'invio dei pacchetti, la comunicazione riprende dall'ultimo punto di controllo andato a buon fine.
18OSI: Open Systems Interconnection pt. 6
Livello 6: presentazione
Obiettivo: trasformare i dati forniti dalle applicazioni in un formato standardizzato e offrire servizi di comunicazione comuni, come la crittografia, la compressione del testo e la riformattazione.
Esso consente di gestire la sintassi dell'informazione da trasferire. E sono previste tre diverse sintassi:
astratta (definizione formale dei dati che gli applicativi si scambiano),
concreta locale (come i dati sono rappresentati localmente) di trasferimento (come i dati sono codificati durante il
trasferimento).
19OSI: Open Systems Interconnection pt. 7
Livello 7: applicazione
Obiettivo: interfacciare utente e macchina.
Fornisce un insieme di protocolli che operano a stretto contatto con le applicazioni. È errato identificare un'applicazione utente come parte del livello applicazione.
I protocolli delle applicazioni tipiche di questo livello realizzano operazioni come ad esempio le applicazioni di:
Trasferimento di file Terminale virtuale Posta elettronica
20
TCP : Connessione
HostClient
Send SYN seq=x
Receive SYN+ACK segment
Send ACK y+1
Receive SYN segmentSend SYN seq=y, ACK x+1
Receive ACK segment
HostClient
Send FIN seq=x
Receive FIN + ACK segmentSend ACK y+1
Receive FIN segmentSend ACK x+1
Receive ACK segment
Apertura di una connessione TCP Chiusura di una connessione TCP
Receive ACK segment
Send FIN seq=y, ACK x+1
21TCP : Data transfer (Trasferimento Dati)
HostClient
Invio Packet 1Avvio Timer
Ritrasmissione Packet 1Avvio Timer
Packet 1 dovrebbe arrivare ACK deve essere inviato
ACK dovrebbe Normalmente arrivareA questo punto
Ricezione Packet 1Invio ACK 1
Tempo Scaduto
Ricezione ACK 1Cancellazione Timer
Packet LostPacchetto perso
Timer
Timer
22
HTTP : Hyper Text Transfer Protocol
Stateless Transaction ProtocolOgni operazione crea una nuova connessione
Gli Steps in Transaction1. Realizzazione della connessione2. Richiesta
Metodo <URL> <CR>3. Risposta
Codice della Risposta <Data> <CR>4. Chiusura della connessione
23
HTTP
Metodologie delle richieste comuniGET, PUT, POST
Categorie delle possibili risposteInformational :100Successful :200Redirection :300Client Error :400 (eg. 404 Not found)Server Error :500
24
Esempio: Accesso a www.lumit.it
Http requestGET “http://www.lumit.it”<CR>
Http response200 “” <CR> <html file in MIME format>
Initiate connection (hdshk)Package data (add TCP header)send http request packet
Assemble response(break into several packets)Send http response packets
send data to next hop
Appl
HTTP
Transp
TCP
NetIP
Linkethernet
Close connection (hdshk)
Relay data
Lato Client Lato Server
Router(s)
NetIP
Linkethernet
Appl
HTTP
Transp
TCP
NetIP
Linkethernet
ARP to provide IP/MAC translation
25
Principali Referenze
“TCP/IP Illustrated, Volume 1 The Protocols “di W. Richard Stevens (http://www.amazon.com/TCP-IP-Illustrated-1-Protocols/dp/0201633469)
“Internet Working with TCP/IP Volume 1” di Douglas E. Comer
“Sams Teach Yourself TCP/IP in 24 Hours”di Joe Casad. pubblicato da Sams. (http://www.informit.com)
“Internet Core Protocols” by Eric A. Hall. Pubblicato da O’Reilly (http://oreilly.com/catalog/9781565925724)
26TCP : Appendice Diagramma di Stato TCP