corso reti ed applicazioni mauro campanellacmp/corsoreti/slides04/cap3-1.pdf · 2004-04-21 · data...

33
Capitolo 3 - parte 1 Corso Reti ed Applicazioni Mauro Campanella

Upload: buinhi

Post on 18-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Capitolo 3 - parte 1

Corso Reti ed ApplicazioniMauro Campanella

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 2

Agenda

- Le applicazioni per il Sig. Rossi- Lo strato di trasporto- Multiplexing/Demultiplexing- User Datagram Protocol (UDP)- Trasferimento affidabile

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 3

I servizi base per il Sig. Rossi

Necessità Server Client

Web Apache NetscapeProxy Squid -e-Mail sendmail, PostFix Eudora, Netscape,pineDNS (rossi.org) Bind -Database MySQL -Condivisione dischi NFS,Altro NFS, altroStampe Stampante in rete LPRFax Stampante in rete -Sistema Operativo Unix (Linux) Mac, Windows, LinuxVoce centralino + IP telefono + IPVideo vari (su IP) vari (su IP)Firewall Router, Ipchains -

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 4

Agenda

- Le applicazioni per il Sig. Rossi- Lo strato di trasporto- Multiplexing/Demultiplexing- User Datagram Protocol (UDP)- Trasferimento affidabile

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 5

Indirizzamento Internet

Applicazione

Trasporto

IP

Data Link

Fisico

Numero di porta (da 0 a 1024 - “well known ports”-sono riservati - 1025-65535 liberi)

Numero di protocollo (assegnato da IANA)

L’indirizzo unico a livello mondiale dell’interfaccia,(in IPv4 intero, 32 bit, unsigned) scritto nella forma1.2.3.4

Indirizzo MAC o simile a seconda della tecnologia

Nulla

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 6

Indirizzamento

Applicazione

Socket

Porta, numero di processo, socket

Descrittore verso il sistemaPorta/indirizzo verso il trasporto

Trasporto Numero di protocollo

Rete Indirizzo IP

Una “socket” è: sia una interfaccia di programmazione, che la coppia (porta, indirizzo IP)

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 7

Protocolli Internet

IP porta pacchetti per vari protocolli, tra cui due fondamentaliper il trasporto end to end dei pacchetti.

ip 0 IP # internet protocol, pseudo protocolnumbericmp 1 ICMP # internet control message protocoligmp 2 IGMP # internet group management protocolggp 3 GGP # gateway-gateway protocolipencap 4 IP-ENCAP # IP encapsulated in IPtcp 6 TCP # transmission control protocolegp 8 EGP # exterior gateway protocoludp 17 UDP # user datagram protocolipv6 41 IPv6 # IPv6rsvp 46 RSVP # Resource ReSerVation Protocolgre 47 GRE # Generic Routing Encapsulationospf 89 OSPFIGP # Open Shortest Path First IGPpim 103 PIM # Protocol Independent Multicastisis 124 ISIS # ISIS over IPv4

http://www.iana.org/assignments/protocol-numbers

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 8

Lo strato di trasporto

applicazione

trasportotrasporto

rete (IP)

data link

fisico

E’ lo strato che si occupa di fornire unservizio di trasferimento dei dati dalnodo sorgente al nodo destinazione.

Normalmente viene richiesto untrasporto affidabile, efficente eindipendente dal comportamentodegli strati sottostanti

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 9

Il servizio di trasporto

Fornisce la comunicazione logica(orizzontale) fra applicazioni neidue nodi.

Internet offre due tipi di trasporto:

- TCP: affidabile, orientato alla connessione con controllo della congestione e di flusso

- UDP: non affidabile, senza connessione

Non offrono garanzie sui parametridi QoS (p.e. ritardo e capacità)

applicazionetrasporto

retedata link

fisico

retedata link

fisico

retedata link

fisico

retedata link

fisico

Trasporto logico end to end

applicazionetrasporto

retedata link

fisico

retedata link

fisico

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 10

Perché strato di trasporto e rete ?

I due strati svolgono funzioniapparentemente simili, cioèportare i messaggi generatidall’applicazione a destinazione

MAlo Strato di rete svolge il suocompito distribuito nei routerlo Strato di trasporto svolge ilcompito nei nodi iniziale eterminale indipendentementedalle prestazioni dello strato direte

Essenzialmente l’esistenza dellostrato di trasporto rendepossibile fornire un servizioglobale di trasporto piùaffidabile e sicuro di quello cheoffrirebbe da sola la rete erende l’applicazioneindipendente dalla tecnologia direte.

Per esempio nella rete esistonoerrori fisici nei pacchetti,duplicazioni, perdite …

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 11

Agenda

- Le applicazioni per il Sig. Rossi- Lo strato di trasporto- Multiplexing/Demultiplexing- User Datagram Protocol (UDP)- Trasferimento affidabile

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 12

Multiplexing/demultiplexing

applicazione

trasporto

rete

data link

fisico

P1 application

trasporto

rete

data link

fisico

applicazione

trasporto

rete

data link

fisico

P2P3 P4P1

nodo 1 nodo 2 nodo 3

= processo= socket

Smistare i pacchetti alla socketcorretta usando l’header

Demultiplexing : alla ricezioneRaccogliere da tutte le socket,aggiungendo l’header.

Multiplexing : nel mittente

Nel nodi la porta è scelta diversa per ogni processo

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 13

Header

Ogni strato riceve dati e li passa dallo strato adiacente.Vi aggiunge (toglie) informazione specifica nella forma diun “header” e crea una nuova unità di informazione datrasmettere allo strato successivo.

applicazionetrasporto

retedata link

fisico

applicazionetrasporto

retedata link

fisico

sorgente destinazione

M

M

M

M

H t

H tH r

H tH rH l

M

M

M

M

Ht

HtHr

HtHrHl

messaggio

segmento

datagramma

frame

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 14

Demultiplexing

Nodo riceve il datagramma IP:– L’header del datagramma IP

contiene gli indirizzi sorgente edestinazione ed il protocollo

– l’header del segmento ditrasporto contiene le portesorgente e destinazione

– l’header del messaggio contieneinformazioni variabili per ogniapplicazione

Il nodo usa sia gli indirizzi IP che inumeri di porta per identificare lasocket corretta

sempre 32 bit

32 bit

IP destinazioneIP sorgente

altri header di datagramma

header di datagramma

altri header di segmento

porta sorg. porta dest.

header del messaggio

Dati applicazione

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 15

Anteprima formato datagramma IP

32 bits

vers. lunghezza totale

dati (lunghezza variabile)

identificatore 16-bit

Internet checksumtime to live

32 bit indirizzo IP sorgente

lungh.head.

tipo di servizioToS ora DSCP

flgs offset frammento

protocollo

32 bit indirizzo IP destinazione

Opzioni (se presenti)

0 8 16 24 3115

20byte

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 16

Demultiplexing

Nel demultiplexing, lo strato sottostante potrebbeeliminare tutta l’informazione nel suo header, inclusil’indirizzo IP e la porta sorgente o altri valori !

Esistono delle opzioni delle socket o il comportamentonormale del sistema operativo che permettonoall’applicazione di accedere o ricevere tali valori.

Questo permette anche ai server UDP di demultiplarefinemente i datagrammi ricevuti.

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 17

Demultiplexing con UDP

La socket crea automaticamentela porta o si forza la scelta:

DatagramSocket mySocket = newDatagramSocket();DatagramSocket mySocket = newDatagramSocket(9222);

La socket UDP è identificatadalla coppia:(IP , porta destinazione)

Il nodo ricevente:– controlla la porta di

destinazione– smista il datagramma su

quella portaDatagrammi con IP o portasorgente differenti sonoinviati alla stessa socket.

MA

in realtà sono usati sia lacoppia {IP,porta} sorgente,che quella di destinazione

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 18

Demultiplexing con UDP

DatagramSocket serverSocket = new DatagramSocket(6428);

clientIP:B

P3

client IP: A

P1P1P3

serverIP: C

SP: 6428DP: 9157

SP: 9157DP: 6428

SP: 6428DP: 5775

SP: 5775DP: 6428

SP nel datagramma prodotto dal client fornisce “l’indirizzo di ritorno”

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 19

Demultiplexing con TCP

La socket TCP è identificatadai quattro valori (4-tuple):

– indirizzo IP mittente– porta mittente– indirizzo IP destinatario– porta destinatario

Il nodo ricevente usa tutti equattro i valori per smistare ilsegmento alla socket corretta.

Un server può manteneremolte socket aperte:– ogni socket è identificata da

una quadrupla

I Web server hanno una socketdiversa per ogni client:– HTTP non-persistente deve

usare una socket per ognirichiesta (max 65536)

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 20

Connessioni contemporanee ?

Singola connessione dura 10 minuti (600 secondi), quanteSingola connessione dura 10 minuti (600 secondi), quantesono le connessioni al secondo massime che un web serversono le connessioni al secondo massime che un web serverpuò accettare ?può accettare ?

(65535 - 1024) / 600 secondi = 107 socket/secondo(65535 - 1024) / 600 secondi = 107 socket/secondo

Quanto tempo impiega un sistema a creare unQuanto tempo impiega un sistema a creare unsottoprocesso od un thread ?sottoprocesso od un thread ?

Quanta memoria serve per ogni thread ?Quanta memoria serve per ogni thread ?

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 21

Demultiplazione con TCP

P3

client IP: A

clientIP:B

P1P1

serverIP: C

P1Processo Server

S: A, 9157D: C, 80

P2

S: C, 80D: A, 9157

S: B, 5775D: C, 80

S: C, 80D: B, 5775

Sottoprocessoserver T1 Thread

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 22

Agenda

- Le applicazioni per il Sig. Rossi- Lo strato di trasporto- Multiplexing/Demultiplexing- User Datagram Protocol (UDP)- Trasferimento affidabile

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 23

UDP: User Datagram Protocol

RFC 768 del 1980 (3 pagine)Definisce un trasportosemplice in cui ognioperazione di invio da partedell’applicazione produceesattamente undatagramma, mentre conTCP questo non è vero.

Non garantisce la consegnae quindi neanche altriparametri di qualità.

Vantaggi di UDP?

– senza connessione (ritardominimo quindi)

– semplice: nessuno stato nelmittente e nel ricevente

– header minimo– nessun controllo di

congestione o flusso: ipacchetti possono essereinviati costantemente allamassima velocità

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 24

Formato del segmento UDP

Usato spesso per applicazionimultimediali (voce, video)– tollerano la perdita di dati– isocrone

altre applicazioni su UDP– DNS– Simple Network Monitor

ProtocolSe l’applicazione desideraaffidabilità deve avereinternamente una parte dicontrollo e recupero errori.

porta sorg. porta dest.

32 bits

Dati dell’applicazione(messaggio)

Formato del segmento UDP

lunghezza checksum

Lunghezza,in bytes del

segmentoUDP incluso

l’header.Minimo 8

bytes (0 datiaccettabile)

8bytes

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 25

Datagramma IP + UDP

vers. lunghezza totale

dati

identificatore 16-bit

IP checksumtime to live

32 bit indirizzo IP sorgente

lungh.head.

tipo di servizioToS ora DSCP

flgs offset frammento

protocollo

32 bit indirizzo IP destinazione

Opzioni (se presenti)

0 8 16 24 3115

20byte

porta del mittente porta del destinatario

lunghezza totale UDP UDP checksum8

byte

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 26

Checksum

Mittente:– divide il segmento in

blocchi da 16 bit– somma i blocchi (senza

riporto finale)– ne fa il complemento ad 1– lo inserisce nel campo

checksum

Ricevente:Ricalcola il checksumincludendo il checksum stessosenza fare il complemento ad 1Il risultato sono tutti “1” ?– NO - errore– SI - nessun errore trovato

Scopo: scoprire “errori” (cioè bit cambiati) nel segmentotrasmesso.

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 27

Esempio di Checksum (8 bit)

Mittente:

10101000010100101000111000000000 checksum azzerato

10001000 somma

01110111 complemento ad 1 = checksum

Destinatario:

10101000010100101000111001110111

11111111 checksum OK

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 28

PseudoHeader Checkshum

dati

lunghezza UDPzero

32 bit indirizzo IP sorgente

protocollo

32 bit indirizzo IP destinazione

0 8 16 24 3115

UDPpseudoheader

porta del mittente porta del destinatario

lunghezza totale UDP UDP checksum

UDPheader

byte di pad

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 29

Checksum

Nel caso di una lunghezza in byte dispari del segmento, siaggiunge un byte di “pad” (completamento) di valore zero.

Il checksum è calcolato in modo tal che, se si deve cambiareanche un sola coppia di byte, basta sottrarre il vecchiovalore e sommare il nuovo, senza ricalcolare completamenteil checksum.

L’RFC non obbliga ad effettuare il calcolo del checksum, maè meglio che sia sempre abilitato.

Naturalmente non è in grado di correggere gli errori o dirivelare errori multipli …

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 30

Overhead e lunghezza massima

La massima lunghezza di un datagramma IP è di 65535 bytes(16 bit). Togliendo 20 bytes minimo di header IP ed 8 byteper quello UDP, rimangono 65507 byte di dati.28 byte sono l’overhead di protocollo, cioé la parte diinformazione trasmessa che non sono dati utente.

Ad utilizzare questa dimensione vi può essere una limitazione:– nelle socket nel dimensionare i buffer di UDP sia nel

mittente che nel ricevente– nella configurazione del kernel dello stack IP– nell’applicazione (ma meglio scritture di grandi blocchi dati)

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 31

Agenda

- Le applicazioni per il Sig. Rossi- Lo strato di trasporto- Multiplexing/Demultiplexing- User Datagram Protocol (UDP)- Trasferimento affidabile

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 32

I problemi nella rete

Durante il tragitto di unpacchetto nella rete, ilpacchetto può:– subire errori a livello fisico– subire ritardi anche elevati– essere scartato per

congestione– essere consegnato in

ordine diverso rispettoall’emissione

Il canale di trasmissione puòessere inaffidabile ed esserecomposto da molte reti diversecon caratteristiche diverse.

Questo è il principio base diprogettazione di IP e quindil’affidabilità deve esseretrasportata allo stratosuperiore.

M. Campanella Corso Reti ed Applicazioni - Como 2004 Cap 3 - 1 pag. 33

I problemi nella rete

Il protocollo deve quindi:– poter ritrasmettere e

ricordarsi ciò che devetrasmettere fino a certezzadella ricezione (buffer)

– avere dei timer– accorgersi della congestione– riordinare i segmenti– ricevere feedback dal nodo

destinatario (essereconnesso)

Dato che sarebbe complessoinserire il controllo diaffidabilità in ogniapplicazione, lo strato ditrasporto deve poter offrireun servizio affidabile.

Deve quindi garantire cheuna sequenza di byte inviatisiano ricevuti nello stessoordine e senza perdite