TCP (Transmission Control Protocol)

Vicente González Ruiz

December 15, 2014

Contents

1 TCP (Transmission Control Protocol) [5]
2 Servicios proporcionados
3 El contexto de trabajo
4 Transmisin de datos
 4.1 El segmento TCP
 4.2 EL proceso de desmultiplexacin
 4.3 Establecimiento de la conexin
 4.4 Transmisin de datos urgentes
 4.5 Cierre de la conexin
 4.6 El diagrama de estados
5 Control de flujo y de errores
 5.1 El tamao de las ventanas
 5.2 El tamao de los nmeros de secuencia
 5.3 Retransmisin rpida
 5.4 El sndrome de la ventana tonta
6 Control de la congestin
 6.1 El tamao de los time-outs
  6.1.1 El algoritmo original
  6.1.2 El Algoritmo de Karn/Partridge
  6.1.3 El Algoritmo de Jacobson/Karels

1 TCP (Transmission Control Protocol) [5]

struct TCP_header {  
  uint16 Source_Port;  
  uint16 Destination_Port;  
  uint32 Sequence_Number;        /* Byte offset in the stream. */  
  uint32 Acknowledgement_Number; /* Next expected byte. */  
  uint4  Header_Length;          /* In 32-bit words. */  
  bit[3] Reserved = 0;  
  bit    NS;                     /* ECN-nonce concealment protection. */  
  bit    CWR;                    /* Congestion Window Reduced. */  
  bit    ECE;                    /* ECN-Echo. */  
  bit    URG;                    /* The Urgent_Pointer field is significant. */  
  bit    ACK;                    /* The Ack..._number field is significant. */  
  bit    PSH;                    /* Push received data to the application. */  
  bit    RST;                    /* Reset the connection. */  
  bit    SYN;                    /* Synchronize sequence numbers. */  
  bit    FIN;                    /* No more sending data. */  
  uint16 Receiver_Window_Size;   /* Number of expected bytes to receive. */  
  uint16 Packet_Checksum;        /* Inluding the pseudo-header. */  
  uint16 Urgent_Pointer;         /* The last urgent data byte. */  
  int32* Options;  
}

2 Servicios proporcionados

3 El contexto de trabajo

4 Transmisin de datos

4.1 El segmento TCP

PIC

SrcPort Puerto del proceso emisor.
DstPort Puerto del proceso receptor.
Seq Indice del primer byte de datos del segmento
dentro del flujo de datos.
Ack Siguiente byte esperado.
Window Tamao de la ventana de recepcin del emisor del segmento
(nm. de bytes que puede recibir sin enviar un nuevo ACK).
HdrLen Longitud de la cabecera en palabras de 32 bits.
Flags 6 bits que pueden representar:
SYN = Sincronizacin de nm. de secuencia.
FIN = Fin de la transmisin.
RESET = Fin anmalo de la transmisin.
PUSH = Segmento enviado mediante un push.
URG = Datos urgentes (no ignorar en receptor).
ACK = Segmento contiene Ack.
Checksum De la cabecera, pseudo-cabecera y datos. Obligatorio.
UgrPtr Punto donde se finalizan los datos urgentes.
Options MSS, marca temporal y factor de escala.
Data Datos transmitidos.

4.2 EL proceso de desmultiplexacin

4.3 Establecimiento de la conexin

Se utiliza el Algoritmo Three-Way Handshake:

PIC

4.4 Transmisin de datos urgentes

4.5 Cierre de la conexin

PIC

4.6 El diagrama de estados

PIC

5 Control de flujo y de errores

5.1 El tamao de las ventanas

5.2 El tamao de los nmeros de secuencia

5.3 Retransmisin rpida

Ejercicio 1: Imagine un caso en el que el TCP se comporte como un protocolo ARQ con retroceso a N y otro caso en el que el TCP se comporta como un protocolo ARQ con repeticin selectiva. Disee ambos ejemplos bajo las siguientes premisas: (1) slo se pierde un segmento con datos y (2) los segmentos con Ack’s nunca se pierden, aunque pueden retrasarse tanto como sea necesario.

El TCP en general se va a comportar como un SR (Selective  
Repeat) si los Ack’s no se pierden o retrasan:  
 
                Ejemplo GBN                    Ejemplo SR  
                -----------                    ----------  
 
              Emisor   Receptor             Emisor   Receptor  
                |          |                  |          |  
                |----A0--->|                  |----A0--->|  
                |<--Ack0---|                  |<--Ack0---|  
                |          |                  |          |  
                |----B1--X |                  |----B1--X |  
                |          |                  |          |  
                |----C2--->|                  |----C2--->|  
                |<--Ack0---|                  |<--Ack0---|  
                |          |                  |          |  
                |----D3--->|                  |----D3--->|  
     Triple Ack |<--Ack0---|       Triple Ack |<--Ack0---|  
     Reenvo B1 |----B1--->|       Reenvo B1 |----B1--->|  
                |   Ack3---| Envo Ack3       |<--Ack3---| Envo Ack3  
     Reenvo C2 |----C2--->|  
                |   Ack3---| Envo Ack3  
     Reenvo D3 |----D3--->|  
                |   Ack3---| Envo Ack3  
 Llega 1er Ack3 |<--Ack3   |

5.4 El sndrome de la ventana tonta

6 Control de la congestin

PIC

Ejercicio 2: Considere la siguiente grfica que muestra el tamao de una ventana de congestin del TCP a lo largo del tiempo:

PIC

Responda a las siguientes cuestiones (explicando dedidamente el por qu de su respuesta):

  1. Identifique los intervalos de tiempo en los que el modo de arranque lento del TCP est funcionando.

    [1,6] y [23,26].

  2. Identifique los intervalos de tiempo en los que el modo de prevencin de congestin del TCP est operando.

    [6,16] y [17,22].

  3. Tras la ronda de transmisin 16, ¿la prdida del segmento se detecta por un triple ACK o por un time-out?

    Tras el RTT 16 se detecta un triple ACK. Si hubiera sido un time-out hubisemos hecho CongestionWindowSize ¡- 1, como ocurre en el instante de tiempo 23.

  4. Tras la ronda de transmisin 22, ¿la prdida del segmento se detecta por un triple ACK o por un time-out?

    Por un time-out.

  5. ¿Cul fue el valor inicial de la variable Threshold en la primera ronda de transmisin? Se recuerda que esta variable contiene el valor mitad de la ventana de emisin que produjo la anterior de congestin.

    32.

  6. ¿Cul es el valor de Threshold en la ronda de transmisin 18?

    El Threshold se calcula como la mita de CongestionWindowSize cuando se detecta la prdida de un paquete. Cuando dicha prdida se detecta en el instante 16, CongestionWindowSize = 42. Por tanto, Threshold = 21 en el instante 17.

  7. ¿Cul es el valor de Threshold en la ronda de transmisin 24?

    En el instante 24 Threshold ¡- 13 porque se detecta la prdida de un paquete mediante un time-out.

  8. ¿Durante qu ronda de transmisin se enva el segmento nmero 70?

    Transmission Round  Segment #  
    -----------------------------  
    1.......................1 (1)  
    2.....................2-3 (2)  
    3.....................4-7 (4)  
    4....................8-15 (8)  
    5...................16-31 (16)  
    6...................32-63 (32)  
    7...................64-97 (33) -> en la ronda 7

  9. Asumiendo que se detecta una prdida de paquete tras la ronda 26 por la recepci’n de un triple ACK, ¿cul ser el valor del tamao de la venta de congestin y el valor de Threshold?

    El tamao de la ventana de emisin durante la donda 26 es de 8. El Threshold se calcula como la mitad de este tamao cuando se produce la congestin. Por tanto, Threshold ¡- 8/2 = 4. CongestionWindowSize, por tanto, es igual a 4.

6.1 El tamao de los time-outs

6.1.1 El algoritmo original

Estima el RTT como

EstimatedRTT α × EstimatedRTT + (1 α) × SampleRTT,

donde:

EstimatedRTT
es la estimacin del RTT,
SampleRTT
es la medida del ltimo RTT (medido como la diferencia en tiempo entre el instante en que se enva el segmento hasta que se recibe su confirmacin) y
α
es un nmero entre 0 y 1 de tal forma que si α 0 entonces tiene mayor peso la ltima medida del RTT, y si α 1 entonces EstimatedRTT es menos dependiente de SampleRTT. La especificacin original del TCP recomienda que 0.8 α 0.9.

Finalmente, la estimacin para el time-out es

TimeOut 2 × EstimatedRTT.

6.1.2 El Algoritmo de Karn/Partridge

El algoritmo original no funciona correctamente cuando ocurre una retransmisin. En esta situacin, el emisor no puede saber si el ACK recibido se corresponde con la primera o la segunda transmisin (problema de la ambigüedad del ACK). Si supone que es con la primera y no ocurre as, el SampleRTT medido sera demasiado largo. Si supone que es con la segunda y esto no es cierto, el clculo es demasiado corto. Grficamente:

PIC

Ambos errores son perjudiciales para el clculo del TimeOut:

La solucin:

Ignorar los RTT’s de los segmentos retransmitidos para computar el time-out.

Estimar el RTT slo para los segmentos que no son retransmitidos acarrea un nuevo problema. Supongamos que debido a un aumento en la carga de la red o de la congestin, el RTT aumenta por encima del time-out, lo que provoca una retransmisin. Como el TCP va a ignorar el RTT de los segmentos retransmitidos, nunca va a actualizar la estimacin para el RTT mientras las latencias sigan siendo altas y el ciclo continuar. Por este motivo, adems:

Cada vez que se retransmite se dobla el time-out, hasta alcanzar 2×MSL [1].

El motivo de este aumento exponencial del time-out obedece a que normalmente un aumento en las latencias se debe a problemas de congestin y ante esta situacin lo mejor es disminuir rpidamente la frecuencia de las retransmisiones.

6.1.3 El Algoritmo de Jacobson/Karels

Ejercicio 3: Un host A desea enviar a un host B 200 bytes de datos y el host B al host A 100 bytes de datos, utilizando el TCP. Por simplicidad, supngase que las transmisiones slo se producen al comienzo de unos tics de reloj de periodo constante y que ningn segmento tarda ms de un tic en llegar al otro extremo. Supngase adems que el MSS = 50 bytes para ambas estaciones, que el tamao de las ventanas receptoras queda determinado durante el establecimiento de la conexin (50 bytes para A y 150 bytes para B), que los segmentos enviados entre el cuarto y noveno tic de reloj son corrompidos por el ruido, y que nunca se retrasan los ACK’s ms de un tic. Dibujar el time-line asociado suponiendo que el nmero de secuencia inicial utilizado por A es 1.000 y por B es 2.000. Finalmente supngase un TimeOut de 5 tics.

PIC

PIC

References

[1]   Douglas E. Comer. Internetworking with TCP/IP. Principles, Protocols, and Architectures (4th Edition), volume 1. Prentice Hall, 2000.

[2]   Defense Advanced Research Projects Agency (DARPA), http://www.rfc-editor.org/rfc/rfc793.txt. RFC 793. The Transmission Control Protocol (TCP), 1981.

[3]   James F. Kurose and Keith W. Ross. Computer Networking: A Top-Down Approach Featuring the Internet (2nd Edition). Addison Wesley, 2003.

[4]   James F. Kurose and Keith W. Ross. Computer Networking: A Top-Down Approach Featuring the Internet (3rd Edition). Addison Wesley, 2005. http://www.cp.eng.chula.ac.th/~fyta/663/Curose-Ross%20-%20Computer_Networking_-_A_Top-down_Approach_Featuring_the_Internet__Third_Edition.pdf.

[5]   James F. Kurose and Keith W. Ross. Computer Networking: A Top-Down Approach Featuring the Interne, 6th Edition. Addison Wesley, 2013.

[6]   Network Working Group, AT&T Research, http://www.rfc-editor.org/rfc/rfc793.txt. Defending Against Sequence Number Attacks, 1996.

[7]   Larry L. Petterson and Bruce S. Davie. Computer Networks: A System Approach (2nd Edition). Morgan Kaufmann, 2000.

[8]   Gary R. Wright and W. Richard Stevens. TCP/IP Illustrated. Addison-Wesley, 1995.