26
1 Introduzione al TCP/IP

Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

Embed Size (px)

DESCRIPTION

BASIC TRAINING AND INFORMATION KNOWLEGDE for TCP-IP introduction.

Citation preview

Page 1: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

1

Introduzione al TCP/IP

Page 2: Lumit.Basic.Knowledge.Training.Introduzione.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

Page 3: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 4: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 5: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 6: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 7: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 8: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 9: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 10: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 11: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 12: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 13: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 14: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 15: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 16: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 17: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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.

Page 18: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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).

Page 19: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 20: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 21: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 22: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 23: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

23

HTTP

Metodologie delle richieste comuniGET, PUT, POST

Categorie delle possibili risposteInformational :100Successful :200Redirection :300Client Error :400 (eg. 404 Not found)Server Error :500

Page 24: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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

Page 25: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

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)

Page 26: Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip

26TCP : Appendice Diagramma di Stato TCP