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
IPv4 e IPv6
IPv4: 4 byte (36 bit) ➔ IPv6: 16 byte (128 bit)
Si utilizza il concetto di Netmask per specificare la quantità di bit dedicati alla sezione di rete (parte non attribuibile ai dispositivi controllati dal dispositivo con questo indirizzo). La netmask è una serie di 1 nella rappresentazione binaria che indica quale parte dell'indirizzo IP non può cambiare nella sottorete. Si utilizza anche la notazione /n dove n è il numero di bit a 1.
Esempio di netmask: 11111111.11111111.11111111.00000000 = 255.255.255.0 = /24
Ad esempio, la rete 192.168.1.0 con la subnet precedente può avere client da 192.168.1.1 a 192.168.1.254 (l'ultimo indirizzo è riservato al broadcast) ed è anche indicabile come 192.168.1.0/24
Classi di indirizzi IPv4:
- Classe A: Netmask /8
- Classe B: Netmask /16
- Classe C: Netmask /24
Indirizzi IPv4 privati:
- 10.0.0.0/8: 1 possibile rete di Classe A
- 172.16.0.0/12: 16 possibili reti di Classe B
- ...
192.168.0.0/16 256 possibili reti di Classe C 32.
NAT (Network Address Translation) Viene usato per consentire l'uso di indirizzi IP privati all'interno di una sottorete connessa alla rete pubblica. Traduce tramite gli indirizzi privati e assegna a ogni richiesta una porta libera in modo che il destinatario, rimandando il pacchetto alla porta assegnata dal NAT, riesca a raggiungere lo stesso il mittente. Il compito della traduzione è del router che connette le due reti.
Layer 4: Protocolli di Trasmissione
3.1 UDP (User Datagram Protocol) UDP Utilizza Datagrammi e non fa nessun controllo, né sulla banda usata (flow control) né sulla avvenuta ricezione. Per via della minore quantità di controlli l'UDP è utile quando serve una comunicazione il più veloce possibile dove l'arrivo dei pacchetti o del giusto ordine di essi non è necessario. Un esempio di applicazione del protocollo UDP è la risoluzione DNS, dove
è più importante avere una risposta veloce che avere la certezza della consegna (in caso di scadenza del timeout di richiesta, se ne invia un altra)
Il protocollo UDP, a differenza del TCP, supporta l'invio di pacchetti in broadcast
3.1 TCP (Transmission Control Protocol)
È un protocollo reliable e connection oriented. TCP ha le seguenti caratteristiche:
- Previene il Packet loss
- Riordina I pacchetti ricevuti fuori ordine
- Consente multiple conversazioni (anche con stesso host)
- Flow Control 53.2.1 Three Way Handshake
Questo è il modo in cui ogni connessione TCP deve iniziare. A differenza dell'UDP, la connessione deve essere accettata dal server che manderà un SYN-ACK nel caso sia disponibile che verra confermato dall'ultimo ACK. I due valori iniziali del SYN sono randomici per evitare che un intruso possa "azzeccare" lo stesso numero o per lo meno sapere quale è il prossimo e mandare
sarà un pacchetto con: seq 1 ack 100sarà:seq 1ack 100data 0Il prossimo Pacchetto del client sarà quindi:seq 100ack 1data xDa notare come nel seq del server rimane 1 perché il server non ha mandato alcun byte di dati.73.2.3 Perdita di un pacchetto Nel caso di perdita di un pacchetto, grazie al Sequence Number sequenziale (Seq += n_bytes)si può ricominciare a trasmettere il messaggio da dove non è stato ricevuto.Gli ACK avranno sempre il numero del Seq + n_bytes (quindi quello del Seq successivo) 83.2.4 Fine connessionePer terminare la connessione è chiudere il socket si fanno i passi sopra elencati. 93.2.5 Flow ControlTCP implementa Flow Control grazie all'uso dell'opzione nell'header Window size (e il windowmultiplier nelle opzioni)La Window Size indica la quantità massima di bytes che l'altra macchina può inviare prima di dover per forza aspettare un ACK che conterrà informazioni aggiornate sulla Window Size.Siccome il ricevente mandaun ACK per ogni pacchetto ricevuto, chi manda può aggiornare la quantità di byte che può mandare.
La window size viene comparata con la quantità di byte inviati totalmente tenendo traccia dei byte inviati grazie al sequence number in questa maniera:
Finto codice per comprensione
if (window_size + ultimo_ack_number < seq_number)
invia();
else
aspetta_un_ack_con_window_size_sufficiente();
Quando il ricevente arriva a una window size di 0, invia all'altro host un pacchetto chiamato zero-window packet per comunicare la mancanza di spazio.
A questo punto l'host che sta aspettando di inviare continua a mandare pacchetti vuoti chiamati keep-alive per mantenere la connessione e continuare a controllare la window size.
104. Layer 5: Protocolli di livello Applicativo
4.1 DNS (Domain Name System)
Porta: UDP/53
I server DNS sono strutturati in una gerarchia ad Albero con in cima il server root, al quale gli utenti possono mandare richieste di risoluzione di
Il testo formattato con i tag HTML è il seguente:domini.Nel caso di DNS ricorsivi, il server root risponde con l'indirizzo del Name Server successivo (adesempio quello .org) al quale il client che ha effettuato la richiesta andrà a chiedere di nuovo la risoluzione fino a trovare l'indirizzo desiderato. La risoluzione si legge da destra a sinistra.
Esempio:
1. root
2. .org
3. wikipedia.org
Figura 1.1 Struttura server DNS
Figura 1.2 Risoluzione del nome www.wikipedia.org
4.1 Tipi di Record DNS
- A (Host address)
- AAAA (IPv6 host address)
- ALIAS (Auto resolved alias)
- CNAME (Canonical name for an alias)
- MX (Mail eXchange)
- NS (Name Server)
- PTR (Pointer)
- SOA (Start Of Authority)
- SRV (location of service)
- TXT (Descriptive text)
4.2 NTP (Network Time Protocol)
Porta: UDP/123
Il tempo corretto viene calcolato includendo in ogni fase della richiesta un timestamp di quando il pacchetto è partito/arrivato. Quindi si hanno:
- Timestamp di partenza dal Client
- Timestamp di arrivo dal...
Server- Timestamp di partenza dal Server- Timestamp di arrivo al client
Quindi con abbiamo il tempo di percorrenza, al quale sottraiamo il tempo di elaborazione del server e possiamo quindi calcolare il RTT (round trip time) cont − t2 1δ = (t − t ) − (t − t )3 0 2 1
Ogni macchina nel protocollo NTP fa sia da client che da server allo stesso tempo 13
Ogni macchina ha uno Status (Stratificazione) corrispondente alla precisione del suo orologio rispetto a uno di partenza. Quando una macchina prende il tempo da un'altra, questa prende lo Status + 1 della macchina dalla quale ha preso l'ora.
I livelli sono:
0 Orologio Atomico➝1 Macchina collegata direttamente all'orologio atomico➝2 Macchina che si collega alla macchina di livello 1➝...
4.3 SMTP (Simple Mail Transfer Protocol)
Porta: TCP/25
4.3.1 Invio di una mail
SMTP viene usato solo per inviare email. Per ricevere emails si usano i protocolli listati nella sezione 4.3.2
Ricezione mail da mailserver
Trasmette messaggi in codifica ASCII (7 bit)
Strategia Best Effort:
- Affidabile grazie al TCP
- se non posso inviare ora, riprova fino al timeout (di solito giorni)
Asynchronous: 14
La connessione e comunicazione di una email avviene nel seguente modo:
Dopo al Three way handshake, i seguenti messaggi devono essere inviati:
Dopo Data c'è sempre una riga vuota: \r\n
La mail finisce sempre con un \r\n.\r\n
Max caratteri per riga: 72 15
MIME
Permette l'estensione del protocollo all'uso di altri set di caratteri oltre ad ASCII 7 bit.
Permette inoltre di aggiungere allegati alle mail tramite l'uso di encoding base64 o altri metodi di encoding,
Esempio di Mime:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=frontier
This is a message with multiple parts in MIME format.
--frontier
Content-Type: text/plain
This is the body of the message.
--frontier
Content-Type: application/octet-stream
Content-Transfer-Encoding:
Ricezione mail da mailserver
Per ricevere le email da un mail server, i client (Mail User Agent: MUA) possono usare 2 protocolli:
- POP3
- IMAP
POP3 Riceve e scarica le email localmente sulla macchina del ricevente.
IMAP Legge le email direttamente dal server.
Entrambi usano poi SMTP per inviare email.
FTP (File Transfer Protocol)
Porta: TCP/21
RFC: 114 1971765 1980959 1985
Richiede un login Client Server
USER username
PASS password
200 OK
Alcuni comandi:
- LIST
- CD
- PORT
- LCD
- RETR
- STOR
- DELE
RFC 1579 1994 Introduce la modalità passiva (e il relativo comando PASV) per evitare i problemi del NAT
FTP Anonimo
Client Server
USER anonymous
PASS email
200 OK
FTP Sicuro
Usa la porta della SSH (22) (SSH FTP)
HTTP (HyperText Transfer Protocol)
Porta: TCP/80
Protocollo di tipo
domanda-risposta
Serve per mettere in comunicazione un client e un server
RFC: 2068 1997 HTTP/1.1
HTTP/1.1: 2616 1999
HTTP/2.0: 7540 2015
HTTP/2.0: 7540 2015
4.5.1 Methods
- GET <path> HTTP/1.1 - richiesta risorsa
- HEAD <path> HTTP/1.1 - chiede solo header file
- POST <path> HTTP/1.1 - usa il body nella richiesta (invio dati)
- PUT <path> HTTP/1.1 - upload file (NON USATO)
4.5.2 Format