Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Funzionamento IP Routing
Q: Come fa un host a capire il proprio network ID?
Viene effettuato un AND bit-a-bit tra il suo indirizzo IP e la netmask
Q: Come fa un host a capire se l'host con cui vuole comunicare è nella sua stessa rete (stesso network ID)?
Viene effettuato un AND bit-a-bit tra l'indirizzo IP dell'host destinazione e la netmask dell'host sorgente
Per capire meglio:
Q: Come fa un router a selezionare la porta di output corretta?
Viene effettuato un AND bit-a-bit tra l'indirizzo IP destinazione di un pacchetto e la netmask di ogni entry della routing table, attendendo un match
Esempio:
Routing table
destinazione output port
200.23.16.0/20 1
99.31.0.0/16 2
Indirizzo destinazione del pacchetto: 200.23.16.1
destination IP address 200.23.16.1
netmask (output port 1 - 20bit) 255.255.240.0
bit-wise AND result 200.23.16.0
Come si può notare, il risultato dell'AND bit-a-bit è uguale al network ID riportato nella routing table, quindi c'è
Un match. Pertanto la porta di uscita (output port) sarà la numero 1.
Per capire facciamo anche il test con la seconda entry:
destination IP address 200.23.16.1
netmask (output port 2 - 16bit) 255.255.0.0
bit-wise AND result 200.23.0.0
Come si può notare, in questo caso il risultato dell'AND bit-a-bit non è uguale al network ID presente nella routing table, quindi non si verifica un match: la porta di uscita non è la 2.
NB: effettuare i calcoli (bit-wise AND) in binario può essere più lungo ma più comprensibile
LONGEST PREFIX MATCHING
Concettualmente: quando ho più match, devo considerare quello fatto con il prefisso più lungo (cioè quello più specifico).
Esempio: Organizzazione 1 ha network ID 200.23.20.0/23 e fa parte di ISP 1 con network ID 200.23.16.0/20
Organizzazione 1 decide di cambiare ISP senza cambiare il proprio network ID e passare con ISP 2 che però ha come network ID 199.31.0.0/16 (quindi ISP 2)
gli altri attraverso un mezzo di trasmissione, come un cavo o una connessione wireless.- Gli altri attraverso meccanismi di livello 2 (link layer mechanism).
- SUBNETS E PHYSICAL NETWORKS
- IP assume una corrispondenza biunivoca tra physical network e subnet.
- Per questo:
- Ogni volta che due host sono sulla stessa subnet, possono comunicare direttamente attraverso meccanismi di livello 2 (comunicazione diretta).
- Ogni volta che due host si trovano su subnet diverse, utilizzeremo il routing IP (comunicazione indiretta).
- E' possibile avere:
- Più subnet su una sola rete fisica (one-arm router).
- Una subnet su più reti fisiche (proxy ARP) - poco utilizzata.
- ARP - ADDRESS RESOLUTION PROTOCOL
- Come si può determinare l'indirizzo MAC di un'interfaccia, sapendo il suo indirizzo IP?
- Ogni dispositivo ha una tabella chiamata ARP table con dentro associati gli indirizzi IP ai corrispondenti indirizzi MAC.
- Procedura:
- A vuole inviare un pacchetto a B, l'indirizzo MAC di B non è nella ARP table di A → A manda un pacchetto ARP broadcast contenente l'indirizzo IP di B.
di B (ARP request)B riceve il pacchetto ARP e risponde ad A con il suo indirizzo MAC (ARP reply)A salva la coppia IP-to-MAC nella sua ARP table (l'ARP table è una cache, quindi dopo un tot ditempo, verrà ripulita)ARP è plug-and-play i nodi creano le loro ARP table senza l'intervento dell'amministratore di rete
ICMP (Internet Control Message Protocol)Si tratta di un protocollo di livello 3 incapsulato nell'IP datagram, utilizzato da host e router principalmente per comunicare:errori unreachable host/network/port ecc. -> echo request/reply (usate da ping)
STRATO TRASPORTO (4)Lo strato trasporto ha diverse funzioni:multiplexing/demultiplexing trasferimento "affidabile" dei dati controllo di flusso controllo di congestione
I due principali protocolli a cui si fa riferimento sono:TCPUDP Questo strato riesce a funzionare utilizzando le porte, per indirizzare il traffico verso l'applicativo giusto.
NB: trasferimento affidabile dei dati,
d'accordo sul protocollo di comunicazione e quindi è garantita la ricezione dei pacchetti inviati.determinare l'inizio e la fine della comunicazione, gestire gli errori e garantire la consegna affidabile dei dati. UDP UDP è un protocollo point-to-point (un trasmettitore e un ricevitore) che offre un servizio di trasmissione non affidabile dei dati. Le connessioni UDP sono datagram-oriented, il che significa che ogni pacchetto inviato è considerato indipendente dagli altri. Non c'è alcun controllo di flusso o di congestione, quindi non viene garantita la consegna dei pacchetti né l'ordine di arrivo. IP IP (Internet Protocol) è il protocollo di rete fondamentale utilizzato per instradare i pacchetti di dati attraverso una rete. IP è responsabile dell'indirizzamento e dell'instradamento dei pacchetti da un host all'altro. IP è un protocollo senza connessione, il che significa che ogni pacchetto viene instradato indipendentemente dagli altri e può seguire percorsi diversi attraverso la rete. ICMP ICMP (Internet Control Message Protocol) è un protocollo utilizzato per il controllo e la segnalazione degli errori nella comunicazione IP. ICMP viene utilizzato per inviare messaggi di errore o di controllo tra i dispositivi di rete, ad esempio per segnalare un host non raggiungibile o un pacchetto scaduto. ARP ARP (Address Resolution Protocol) è un protocollo utilizzato per mappare gli indirizzi IP degli host a livello di rete con i loro indirizzi MAC a livello di collegamento. ARP viene utilizzato per determinare l'indirizzo MAC di un host all'interno della stessa rete locale. Questi sono solo alcuni dei protocolli utilizzati nella comunicazione di rete. Ogni protocollo ha il suo ruolo specifico e contribuisce al funzionamento complessivo della comunicazione tra i dispositivi di rete.Gestire tutte le funzioni che il protocollo può garantire. Per comunicare con lo strato applicazione, vengono utilizzati i socket, cioè degli intermediari.
TCP SEQUENCE NUMBERS: Indica il numero del primo byte (rispetto a tutto il byte stream) nella parte dati del segmento.
TCP ACKs: Indica il numero del prossimo byte atteso. Si tratta di ACK cumulativi.
TCP OPEN/CLOSE CONNECTION
APERTURA: La connessione viene iniziata dal trasmettitore inviando un segmento TCP contenente il flag SYN(S) settato a 1 (apertura solo in un verso). Quando il segmento viene ricevuto dal ricevitore, quest'ultimo invia un pacchetto di ACK contenente anch'esso il flag SYN settato a 1, in modo da aprire la connessione anche nel suo verso. A questo punto la connessione sarà utilizzabile normalmente.
CHIUSURA: Stessa procedura di apertura ma con il flag FIN (F) settato a 1.
TCP FLOW CONTROL: Il ricevitore comunica al trasmettitore la dimensione attualmente libera del suo buffer attraverso il campo rwnd.
(receiver window) presente nell'header TCP. Mano a mano che l'applicativo svuota il buffer, il valore in rwnd
aumenta.
TCP CONGESTION CONTROL
AIMD (Additive Increase Multiplicative Decrease) o Congestion Avoidance
Il trasmettitore incrementa la dimensione della sua finestra di trasmissione, di poco alla volta, fino a che non subisce delle perdite.
additive increase: incremento la cwnd
(congestion window) di un MSS (Maximum Segment Size) ogni RTT (quindi di 1/cwnd ogni ACK ricevuto) fino a quando non rilevo perdite
multiplicative decrease: dimezzo la cwnd
ogni volta che ho perdite
TCP SLOW START
Quando viene stabilita la connessione tra trasmettitore e ricevitore, la cwnd
viene settata a 1 MSS e aumenta esponenzialmente fino a quando non si verifica la prima perdita.
TCP: REAZIONE ALLE PERDITE
In base alla causa per cui si verifica la perdita si agisce diversamente:
per timeout: cwnd
resettata a 1 MSS e si riprende a crescere esponenzialmente
per 3 ACK duplicati: cwnd
dimezzata
E poi cresce linearmente (TCP version RENO) → c'è un'altra versione, la TCP Tahoe che reagisce settando a 1 MSS la cwnd a prescindere dalla causa della perdita
TRASFERIMENTO AFFIDABILE
L'obiettivo è quello di costruire un servizio affidabile su un canale che di per sé non lo è. Si risolve utilizzando i protocolli a finestra (pipelined protocols):
- Go-Back-N
- Selective Repeat
TCP, per creare un trasferimento affidabile, utilizza:
- protocolli a finestra
- cumulative acks
- timer di ritrasmissione singolo
Come funziona l'invio tramite TCP?
Quando i dati (inviati dall'applicazione) vengono ricevuti dal trasmettitore, quest'ultimo crea un segmento con il numero del primo byte (rispetto al byte stream) dei dati che invierà tramite il segmento.
Viene fatto partire un timer se non è già attivo (il timer è riferito al più vecchio segmento di cui ancora non si è ricevuto l'ack).
Quando scatta un timeout, viene
ritrasmesso solo il segmento che ha causato il timeout e viene fatto ripartire il timer quando viene ricevuto un ack (cumulativo), faccio ripartire il timer se ci sono ancora segmenti inviati che non sono riscontrati dall'ack ricevuto
Come funziona la ricezione tramite TCP? Quando ricevo un segmento con un seq# che stavo aspettando, posso utilizzare la tecnica del delayed ACK, cioè attendo 500ms prima di inviare l'ACK relativo a quel segmento, così se nel frattempo ricevo il segmento successivo, posso inviare solo l'ACK relativo