TCP
Testata TCP
- Porta sorgente
- Assegnata (pseudo)casualmente dal client
- Porta destinazione
- Ben nota sul server (/etc/services) - argomento di bind()
- Numero di sequenza
- Inizia da un numero casuale
- Aumentato del numero di bytes inviati
- Numero di conferma
- Indica l’ultimo numero di sequenza ricevuto correttamente
- Dimensione della finestra
- Quanti bytes sono inviati prima che si attenda conferma
- Flags TCP
- U -
URG
- Urgent- Il campo urgent contiene un valore valido
- All’inizio del payload vi sono dati urgenti (fuori banda)
- Offset dall’inizio di dati non più urgenti
- A -
ACK
- Acknowledge- Il campo acknowledgment contiene un dato valido
- P -
PSH
- Push- Push - non bufferizzare i dati, ma inviare subito
- R -
RST
- Reset *Errore generico: pacchetto invalido per lo stato corrente - S -
SYN
- Inizio della connessione
- F -
FIN
*Chiusura: non trasmetterò altri dati
- U -
TCP Handshake
- NSC - Numero di sequenza del client
- NSS - Numero di sequenza del server
- NAC - Numero di acknowledgement del client
- NAS - Numero di acknowledgement del server
Stealth Scan
Impersonazioni
Tipi di Trasferimento
Trasferimento Mass Transfer
Viene inviata una finestra di molti pacchetti.
- Il campo
Sequence
indica l’ultimo byte inviato - Il campo di
Acknowledgment
indica l’ultimo byte ricevuto correttamente - Simultaneamente si invia la propria finestra
- Le dimensioni delle finestre possono essere diverse
- La dimensione è negoziata dalle opzioni
Mass Transfer è usato quando serve un grosso Throughput, per esempio nei file transfer.
Slow Start
La finestra iniziale è piccola.
- Viene aumentata progressivamente col tempo
- Fino a finestra massima accettabile dall’altro
- In caso di troppi errori la dimensione della finestra è dimezzata
La dimensione iniziale varia da sistema operativo
- Windows: 2 pacchetti
- Altri: 1 pacchetto
Recupero errori
Go-Back-N
Viene richiesta la ritrasmissione dall'ultimo byte ricevuto correttamente.
Questa era la modalità di recupero della versione originale di TCP.
Selective Retransmission
Molto più complessa e richiede bufferizzazione da parte del ricevente.
Viene richiesta la ritrasmissione solo di un range di byte ricevuti male, anche intermedio.
Trasferimento Interactive
Il flag Push indica di non raccogliere i dati ricevuti in un buffer ma di passarli subito all’applicativo.
E’ possibile che l’altro flusso non sia Push, ma è improbabile.
Mass Transfer e Interactive interferiscono tra loro sullo stesso canale trasmissivo: è difficile avere Interactive quando vi è una grossa quantità di byte in transito col metodo Mass Transfer.
Interactive è usato quando serve una bassa latenza, per esempio con programmi per terminale remoto.
Porte TCP Interessanti
Tutte le porte dei servizi ben noti, assegnate dallo IANA, sono configurate in Linux nel file /etc/services
,