TCP

Testata TCP

Tcphead

  • 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

TCP Handshake

Tcphand

  • 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

Stealthscan

Impersonazioni

Impers

Tipi di Trasferimento

Trasferimento Mass Transfer

Trmass

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

Gobackn

Viene richiesta la ritrasmissione dall'ultimo byte ricevuto correttamente.

Questa era la modalità di recupero della versione originale di TCP.

Selective Retransmission

Selretr

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

Trinter

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

Tcpinter

Tutte le porte dei servizi ben noti, assegnate dallo IANA, sono configurate in Linux nel file /etc/services,