27
Bloque III: El nivel de transporte Tema 7: Intercambio de datos TCP

Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

Bloque III: El nivel de transporte

Tema 7: Intercambio de datos TCP

Page 2: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

2RC - Bloque III - Tema 7

Índice• Bloque III: El nivel de transporte

– Tema 7: Intercambio de datos TCP• Flujo de datos interactivo

– ACKs retardados– Algoritmo de Nagle– Modo de urgencia

• Flujo de datos no interactivo– Control de flujo– Control de congestión

• Referencias– Capítulo 3 de “Redes de Computadores: Un enfoque

descendente basdado en Internet”. James F. Kurose, Keith W. Ross. Addison Wesley, 2ª edición. 2003.

– Capítulos 19 y 20 de “TCP/IP Illustrated, Volume 1: The Protocols”, W. Richard Stevens, Addison Wesley, 1994.

Page 3: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

3RC - Bloque III - Tema 7

TCP: Intercambio de datos• En TCP se consideran dos tipos de tráfico de datos:

– Interactivo: gran número de segmentos de pequeño tamaño (menos de 10 bytes). Por ejemplo: telnet, rlogin.

– No Interactivo: segmentos de gran tamaño, normalmente el máximo permitido por las limitaciones de la red. Por ejemplo: FTP,e-mail.

Aplicaciónorigen

TCP receptorTCP emisor

Aplicacióndestino

Buffer Buffer

Escribir

Enviar

Leer2048 bytes1024 bytes

1024 bytes

512 512512 512

Page 4: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

4RC - Bloque III - Tema 7

Flujo de datos interactivo• Funcionamiento del telnet o rlogin:

– Envío de la tecla pulsada por el cliente– ACK de la tecla pulsada por el cliente– Eco de la tecla desde el servidor– ACK del eco

Cliente Servidor

Dato (tecla pulsada)

ACK del dato

ACK del eco del dato

Pulsar tecla

Nivel de aplicación

eco del dato

Pantalla

eco

Page 5: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

5RC - Bloque III - Tema 7

Flujo de datos interactivo• ACKs retardados:

– Objetivo: enviar el ACK + eco en un único datagrama.• TCP no envía el ACK inmediatamente al recibir el dato, sino

que retarda la salida del ACK esperando un tiempo para ver si hay datos para enviarlos con el propio ACK.

• El tiempo de espera es de 200 mseg:– No en valor absoluto, sino que se utiliza un reloj que da ticks

cada 200 mseg.• Tanto en el cliente como en el servidor se utilizan los acks

retardados.200 msegs

ACK listo para ser enviadoACK retardado hasta el siguiente tick de reloj

Page 6: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

6RC - Bloque III - Tema 7

ACKs retardadosCliente:1111 Servidor:rlogin

PSH 0:1(1), ACK 1 (d)

PSH 1:2 (1), ACK 1 (eco d)1

2

ACK 2PSH 1:2(1), ACK 2 (a)

PSH 2:3 (1), ACK 2 (eco a)

ACK 3PSH 2:3(1), ACK 3 (t)

PSH 3:4 (1), ACK 3 (eco t)

ACK 4

5

8

3

4

6

7

9

0.0

0.139955 ACK retardado

0.539943 ACK retardado

0.940112 ACK retardado

Page 7: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

7RC - Bloque III - Tema 7

ACKs retardadosCliente:1111 Servidor:rlogin

PSH 3:4(1), ACK 4 (e)

PSH 4:5 (1), ACK 4 (eco e)10

11

ACK 5PSH 4:5(1), ACK 5 (Enter)

PSH 5:7 (2), ACK 5 (CR, LF)

ACK 7

14

12

13

15

1.339994 ACK retardado

1.739974 ACK retardado

1.940176 ACK retardado

PSH 7:37 (30), ACK 5 (Wed Jan 26 …)

ACK 37

PSH 37:44 (7), ACK 37 (orca % )

ACK 44

17

19

16

18

2.140110 ACK retardado

Page 8: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

8RC - Bloque III - Tema 7

Flujo de datos interactivo• El tráfico interactivo genera gran cantidad de paquetes de

tamaño muy pequeño (1 byte datos + 20 cab. TCP + 20 cab. IP = 41 bytes) = tinygrams.– En las redes de área local no presenta ningún problema– En las WAN supone una gran sobrecarga para la red.

• Algoritmo de Nagle:– Pretende resolver este problema, y se aplica en una

conexión TCP de tráfico interactivo en una red de área extensa.

– Enunciado: “Una conexión TCP puede tener un único segmento pequeño que no haya sido confirmado. No se pueden enviar otros segmentos hasta recibir un ACK. En cambio, esos datos se almacenan y son enviados por TCP al llegar el ACK.”

– Es auto-ajustable: cuanto más rápido lleguen los ACKsmás rápido se enviarán los datos.

Page 9: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

9RC - Bloque III - Tema 7

Algoritmo de NagleCliente:1111 Servidor:rlogin

PSH 5:6(1) ACK 47, win 4096

PSH 47:48 (1) ACK 6, win 81921

2

PSH 6:7 (1) ACK 48, win 4096

PSH 48:49 (1) ACK 7, win 8192 4

3

0.0

0.232457

PSH 7:9(2) ACK 49, win 4095

PSH 49:51 (2) ACK 9, win 81925

6

PSH 9:10 (1) ACK 51, win 4094

PSH 51:52 (1) ACK 10, win 8192 8

7

PSH 10:12 (2) ACK 52, win 40959

0.197694

0.4642570.437593

0.7077090.677658

0.9458620.917762

Page 10: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

10RC - Bloque III - Tema 7

Algoritmo de NagleCliente:1111 Servidor:rlogin

PSH 52:54 (2) ACK 12, win 8192 10

PSH 12:14 (2) ACK 54, win 4094

PSH 54:56 (2) ACK 14, win 8192 13

111.187501

PSH 14:17(3) ACK 54, win 4096

PSH 56:59 (3) ACK 18, win 8191

14

16

PSH 18:21 (3) ACK 59, win 4093

PSH 59:60 (1) ACK 21, win 8189 18

17

1.157640

1.4280251.427852

1.762913

1.727608

1.997900

ACK 14, win 8190 12

PSH 17:18(1) ACK 56, win 4096151.4784291.457191

Page 11: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

11RC - Bloque III - Tema 7

Algoritmo de Nagle• Se usan 9 segmentos para enviar 16 bytes de datos.• Segmentos 14 y 15 consecutivos, ¿cumplen el algoritmo de

Nagle?– Si, se corresponden con los ACKs 12 y 13, respectivamente,

que se han recibido casi en el mismo instante (0.2 msegs de diferencia).

• Segmento 12 es un ACK retardado (servidor cliente).• ACK = TCP (nivel de transporte)• Win = nivel de aplicación

• En algunos casos no interesa el algoritmo de Nagle.– Por ejemplo, al utilizar las XWindows es necesario enviar

mensajes pequeños (movimientos del ratón) sin retardos para conseguir una interacción real.

– En este caso, el algoritmo de Nagle puede introducir retardos adicionales al ejecutar una aplicación interactiva a través de una WAN, al generar eventos (pulsaciones, movimientos ratón, …) que producen datos multi-byte.

Page 12: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

12RC - Bloque III - Tema 7

Flag URG• Modo de urgencia: permite a un extremo indicar que

se han introducido datos urgentes en el flujo normal de datos.– Se activa el flag de Urgencia (URG)– Puntero de urgencia: offset a sumar al número de

secuencia de la cabecera TCP para obtener el número de secuencia del último byte de los datos urgentes.

• Se utiliza en aplicaciones como telnet y rlogin cuando se pulsa la tecla de interrupción. O en el FTP cuando se aborta la transferencia de un fichero.

Page 13: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

13RC - Bloque III - Tema 7

Flujo de datos no interactivo• También llamado flujo de datos en masa (bulk data flow).• En este tipo de tráfico se generan pocos segmentos, pero de

gran tamaño.• El principal problema a resolver en este tipo de tráfico es el

control de flujo:– Evitar que un emisor rápido sature a un receptor lento.

• TCP utiliza una ventana deslizante: permite al emisor enviar múltiples paquetes antes de parar y esperar por el ACK, lo que da una mayor rapidez a este tipo de tráfico.

• Con un protocolo de ventana deslizante no es necesario confirmar todos los paquetes recibidos, sino que se pueden confirmar varios paquetes simultáneamente.

Page 14: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

14RC - Bloque III - Tema 7

Control de flujoCliente:1111 Servidor:8888

PSH 1:1025 (1024) ACK 1, win 4096

ACK 2049, win 4096

1

2

7

SYN 13281:13281(0)win 4096, <MSS 1024>

SYN 45827:45827(0)

ACK 1, win 4096, <MSS 1024>

ACK 1, win 4096

PSH 1025:2049 (1024) ACK 1, win 4096

4

PSH 2049:3073 (1024) ACK 1, win 4096

5

3

6

ACK 3073, win 3072 8

PSH 3073:4097 (1024) ACK 1, win 40969

ACK 4097, win 4096 10

Page 15: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

15RC - Bloque III - Tema 7

Control de flujoCliente:1111 Servidor:8888

PSH 4097:5121 (1024) ACK 1, win 4096

ACK 6145, win 4096 14

PSH 5121:6145 (1024) ACK 1, win 4096

11

PSH 6145:7169 (1024) ACK 1, win 4096

1213

PSH 7169:8193 (1024) ACK 1, win 409615

ACK 8193, win 4096 16

FIN 8193:8193 (0) ACK 1, win 409617

FIN 1:1 (0) ACK 8194, win 4096 18

ACK 2, win 409619

Page 16: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

16RC - Bloque III - Tema 7

Control de flujo• El envío de los mensajes no es determinista, depende de

múltiples factores: la carga de la red, la carga del receptor y emisor, …

• TCP utiliza ACKs acumulativos:– ACK 2049: confirma que se ha recibido correctamente hasta

el 2048, y que el siguiente byte que se espera recibir es el 2049.

– Segmentos 7, 14 y 16 son ACKs acumulativos.• Flag PSH (PUSH): notificación del emisor al receptor para

enviar todos los datos recibidos a la aplicación.– Datos recibidos en el segmento PSH + datos almacenados

en el buffer– Permite al emisor notificar al receptor que puede pasar los

datos al receptor, que no es necesario esperar por más datos.

– No se puede especificar a nivel de aplicación. Es incluido automáticamente por TCP en cada grupo de datos transmitido.

Page 17: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

17RC - Bloque III - Tema 7

Control de flujo• Emisor rápido, receptor lento

Cliente:1111 Servidor:8888

PSH 1:1025 (1024) ACK 1, win 4096

ACK 4097, win 0

1

2

8

SYN 13281:13281(0)win 4096, <MSS 1024>

SYN 45827:45827(0)

ACK 1, win 4096, <MSS 1024>

ACK 1, win 4096

PSH 1025:2049 (1024) ACK 1, win 4096

4

PSH 2049:3073 (1024) ACK 1, win 4096

5

3

6

ACK 4097, win 4096 9

PSH 3073:4097 (1024) ACK 1, win 40967

Segmento de actualización

de ventana

Page 18: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

18RC - Bloque III - Tema 7

Control de flujo• Emisor rápido, receptor lento (continuación)

Cliente:1111 Servidor:8888

PSH 4097:5121 (1024) ACK 1, win 4096

ACK 8194, win 0 14

PSH 5121:6145 (1024) ACK 1, win 4096

10

PSH 6145:7169 (1024) ACK 1, win 4096

1112

FIN, PSH 7169:8193 (1024) ACK 1, win 409613

FIN 1:1 (0) ACK 8194, win 4096 16

ACK 2, win 409617

ACK 8194, win 4096 15

Segmento de actualización

de ventana

Page 19: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

19RC - Bloque III - Tema 7

Control de flujo• Ventana deslizante

– Funcionamiento:

– Ventana ofrecida (receptor): número de bytes que indica el receptor que puede recibir, en el momento de enviar el paquete.

– Ventana utilizable (emisor): número de bytes que se pueden enviar inmediatamente.

1 2 3 4 5 6 7 8 9 10 11 …

Enviado y ACK

Enviado y no ACK

Puede enviar

Imposible enviar

Ventana ofrecida (receptor)Ventana utilizable

(emisor)

Page 20: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

20RC - Bloque III - Tema 7

Control de flujo• Movimientos de la ventana:

– Cierre (el eje izquierdo se desplaza a la derecha): se envían y se agradecen datos.

– Apertura (el eje derecho se desplaza a la derecha): el proceso receptor lee los datos agradecidos, y libera espacio en el buffer.

– Reducción (el eje derecho se desplaza a la izquierda): no se produce en TCP.

Ventana

Cierre Reducción Apertura

Page 21: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

21RC - Bloque III - Tema 7

Control de flujo• Movimientos de ventana sobre el ejemplo de control

de flujo:1024 2048 3072 4096 5120 6144 7168 8192

Segmento 2 win 4096

Segmentos 4, 5, 6 Datos

Segmento 7ACK 2049 Segmento 7 win 4096

Seg. 8ACK 3073 Segmento 8 win 3072

Seg. 9Datos

Seg. 10ACK 4097 Segmento 10 win 4096

Segmentos 11, 12, 13 Datos

Segmento 14ACK 6145 Segmento 14 win 4096

Seg. 15Datos

Segmento 16ACK 8193

Page 22: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

22RC - Bloque III - Tema 7

Control de flujo• Conclusiones sobre el ejemplo de ventana

deslizante:– El emisor no tiene por que enviar una ventana

completa de datos.– Cada ACK recibido desplaza la ventana hacia la

derecha (el tamaño de ventana es relativo al ACK recibido).

– El tamaño de ventana puede descender, pero el extremo de la derecha no debe desplazarse a la izquierda.

– El receptor no tiene que esperar a que se llene la ventana para enviar un ACK.

Page 23: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

23RC - Bloque III - Tema 7

Flujo de datos no interactivo• El control de flujo evita que el emisor llegue a saturar

al receptor.• Esto es correcto en una LAN, sin embargo en un

entorno con routers intermedios el control de flujo no es suficiente.– Los routers intermedios también se puede saturar.

• Solución: Control de congestión (algoritmo de inicio lento)

Buffer de B

Buffer del router

Page 24: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

24RC - Bloque III - Tema 7

Algoritmo de inicio lento• Algoritmo de inicio lento: “La velocidad a la que se inyectan

paquetes nuevos a la red es la velocidad a la que se reciben ACKs del otro extremo”.

• Para la implementación del algoritmo de inicio lento se trabaja con otra ventana, la ventana de congestión (cwnd), controlada únicamente por el emisor.

• El funcionamiento del algoritmo del inicio lento es muy simple:– Inicialmente, en el establecimiento de conexión, la ventana

de congestión se inicializa a 1 segmento.– Cada vez que se recibe un ACK se incrementa en 1 el valor

de la ventana de congestión.– El emisor puede enviar el mínimo entre la ventana ofrecida

por el receptor y la ventana de congestión.

Page 25: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

25RC - Bloque III - Tema 7

Algoritmo de inicio lentoCliente:1111 Servidor:discard

1:513 (512) ACK 1, win 4096

ACK 1025, win 8192 5

513:1025 (512) ACK 1, win 4096

1

1025:1537 (512) ACK 1, win 4096

34

ACK 513, win 8192 2

ACK 1537, win 8192 8

1537:2049 (512) ACK 1, win 40962049:2561 (512) ACK 1, win 4096

67

2561:3073 (512) ACK 1, win 40963073:3585 (512) ACK 1, win 4096

910

cwnd = 1

cwnd = 2

cwnd = 3

cwnd = 4

Page 26: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

26RC - Bloque III - Tema 7

Algoritmo de inicio lentoCliente:1111 Servidor:discard

FIN, PSH 3585:4097 (512) ACK 1, win 409613

ACK 2049, win 8192 11cwnd = 5

ACK 2561, win 8192 12cwnd = 6

ACK 3073, win 8192 14

ACK 3585, win 8192 15

ACK 4098, win 8192 16

FIN 1:1 (0) ACK 4098, win 8192 17

ACK 2, win 409618

Page 27: Tema 7 - Intercambio de datos TCP - QueGrande.orgquegrande.org/apuntes/EI/3/RC/teoria/07-08/tema_7.pdf · RC - Bloque III - Tema 7 4 Flujo de datos interactivo • Funcionamiento

27RC - Bloque III - Tema 7

Algoritmo de inicio lento• Segmentos de 512 bytes.• Al recibir el segmento 2 el emisor cwnd = 2

Envía dos segmentos más.• Al recibir el segmento 5 cwnd = 3 ¿Por qué no

envía tres segmentos más?– Segmento 5: ACK 1025– Siguiente segmento a enviar: 1537:2049 Bytes

enviados y pendientes de ACK: 1537-1025: 512 bytes (1 segmento)

– Segmentos a enviar: 3 (cwnd) – 1 (enviados y pendientes ACK) = 2 segmentos