Servizi TCP
Mul.plexing/Demul.plexing applica.vo: consegna processo a processo
Orientato alla connessione: è necessario un setup
Trasporto affidabile tra processo miAente e ricevente
Controllo di flusso: impedisce che il miAente sovraccarichi il ricevente
Controllo della conges.one: riduce la velocità di invio quando la rete è sovraccarica
Non fornisce garanzie di ritardo minimo o di banda minima
Flusso di byte: la connessione è vista come un flusso con.nuo di byte, senza confini esplici. di messaggi
TCP Transmission Control Protocol
• Mul.plexing/demul.plexing: consegna processo-a-processo
• Connec.on-oriented: è richiesto il setup
• Trasporto affidabile tra processo miAente e ricevente
• Controllo di flusso: il miAente non sovraccarica il ricevente
• Controllo di conges.one: limita il miAente quando la rete è sovraccarica
• Non fornisce: garanzie di ritardo, garanzie di banda minima
• Byte stream: la connessione è semplicemente un flusso di byte
Connessione TCP
TCP è bidirezionale (entrambi i la. possono inviare e ricevere). È sempre fra due soli partecipan1 (non mul.cast).
Prima di iniziare a scambiare da. fa il famoso three-way handshake (SYN, SYN-ACK, ACK).
Ogni lato prepara buffer per ges.re i da. in arrivo e in uscita. Inoltre, viene fissata una dimensione massima dei
segmen. (MSS), per adaAarsi alla rete fisica ed evitare la frammentazione a livello IP.
TCP: formato delle PDU
• Source port + Des1na1on port (16 bit): usa. per mul.plexing/demul.plexing
• Sequence number (32 bit): numero di sequenza per ordinare i byte invia.
• Acknowledgement number (32 bit): numero che indica il prossimo byte aAeso, serve per l’affidabilità
• Data offset (4 bit): lunghezza dell’header in parole da 32 bit
• Reserved (6 bit): riservato per usi futuri
• Flag (6 bit):
- URG: valido se campo urgent pointer è usato
- ACK: valido se il campo acknowledgement è significa.vo
- PSH: da. di .po PUSH (consegna rapida all’applicazione)
- RST, SYN, FIN: ges.one della connessione
• Window (16 bit): per il flow control (quan. byte il ricevitore è pronto ad acceAare)
• Checksum (16 bit): codice per rilevare errori, calcolato su header + da. + pseudoheader IP
• Urgent pointer (16 bit): punta all’ul.mo byte di da. urgen.
Il campo Op1ons nel TCP aggiunge funzionalità extra:
• MSS (Maximum Segment Size): quanto può essere grande un segmento di da..
• Window scale: permeAe di avere finestre più grandi (oltre 64 KB), u.le su connessioni veloci.
• Timestamp: serve a misurare il tempo di andata e ritorno (RTT) e a ges.re meglio ritrasmissioni.
• SACK: permeAe di confermare solo i pacched ricevu. bene, anche se altri si sono persi, evitando di dover
ritrasmeAere tuAo.
Il servizio del TCP è byte stream, il TCP vede i da. come un flusso ordinato di byte. Numera ciascun byte di da. nello
stream.
Sequence number (32 bit): indica il numero di sequenza del primo byte di da. nel segmento
Esempio: invio di un segmento con seq#=1000, 800 byte di da.→ seq# del successivo segmento = 1800
Se il bit SYN è acceso indica l’Ini.al Sequence Number (ISN) e il primo byte di da. avrà seq# pari a ISN+1
Send policy: il TCP è libero di decidere la dimensione dei segmen.:
- Trasmissioni poco frequen. con mol. da. basso overhead
→
- Trasmissioni frequen. con pochi da. tempi di risposta ridod
→
Acknowledgement number (32 bit): numero di sequenza del prossimo byte aAeso (cumula1ve ACK)
• U.l