Publicado el 5 de Julio del 2017
872 visualizaciones desde el 5 de Julio del 2017
614,6 KB
30 paginas
Creado hace 16a (10/11/2008)
Bloque III: El nivel de transporte
Tema 7: Intercambio de datos TCP
Í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.
RC Bloque III Tema 7
2
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,
email.
Aplicación
origen
Escribir
2048 bytes
Aplicación
destino
Leer
1024 bytes
1024 bytes
Buffer
TCP emisor
Enviar
Buffer
TCP receptor
512
512
512
512
RC Bloque III Tema 7
3
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
Pulsar tecla
Dato (tecla pulsada)
A C K d e l d a t o
e c o d e l d a t o
Pantalla
ACK del eco del dato
Servidor
Nivel de aplicación
eco
RC Bloque III Tema 7
4
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 enviado
ACK retardado hasta el
siguiente tick de reloj
RC Bloque III Tema 7
5
ACKs retardados
Cliente:1111
0.0
1
3
0.139955 ACK retardado
4
6
0.539943 ACK retardado
7
9
0.940112 ACK retardado
RC Bloque III Tema 7
PSH 0:1(1), ACK 1 (d)
PSH 1:2 (1), ACK 1 (eco d)
ACK 2
PSH 1:2(1), ACK 2 (a)
PSH 2:3 (1), ACK 2 (eco a)
ACK 3
PSH 2:3(1), ACK 3 (t)
PSH 3:4 (1), ACK 3 (eco t)
ACK 4
Servidor:rlogin
2
5
8
6
ACKs retardados
Cliente:1111
Servidor:rlogin
PSH 3:4(1), ACK 4 (e)
10
PSH 4:5 (1), ACK 4 (eco e)
ACK 5
12
PSH 4:5(1), ACK 5 (Enter)
13
PSH 5:7 (2), ACK 5 (CR, LF)
ACK 7
15
PSH 7:37 (30), ACK 5 (Wed Jan 26 …)
ACK 37
17
PSH 37:44 (7), ACK 37 (orca % )
ACK 44
11
14
16
18
7
1.339994 ACK retardado
1.739974 ACK retardado
1.940176 ACK retardado
2.140110 ACK retardado
19
RC 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 autoajustable: cuanto más rápido lleguen los ACKs
más rápido se enviarán los datos.
RC Bloque III Tema 7
8
Algoritmo de Nagle
Cliente:1111
Servidor:rlogin
0.0
0.197694
0.232457
0.437593
0.464257
0.677658
0.707709
0.917762
0.945862
1
3
5
7
9
PSH 5:6(1) ACK 47, win 4096
PSH 47:48 (1) ACK 6, win 8192
PSH 6:7 (1) ACK 48, win 4096
PSH 48:49 (1) ACK 7, win 8192
PSH 7:9(2) ACK 49, win 4095
PSH 49:51 (2) ACK 9, win 8192
PSH 9:10 (1) ACK 51, win 4094
PSH 51:52 (1) ACK 10, win 8192
PSH 10:12 (2) ACK 52, win 4095
2
4
6
8
RC Bloque III Tema 7
9
Algoritmo de Nagle
Cliente:1111
Servidor:rlogin
1.157640
1.187501
11
1.427852
1.428025
1.457191
1.478429
14
15
1.727608
1.762913
17
1.997900
PSH 52:54 (2) ACK 12, win 8192
PSH 12:14 (2) ACK 54, win 4094
ACK 14, win 8190
PSH 54:56 (2) ACK 14, win 8192
PSH 14:17(3) ACK 54, win 4096
PSH 17:18(1) ACK 56, win 4096
PSH 56:59 (3) ACK 18, win 8191
PSH 18:21 (3) ACK 59, win 4093
PSH 59:60 (1) ACK 21, win 8189
10
12
13
16
18
RC Bloque III Tema 7
10
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 multibyte.
RC Bloque III Tema 7
11
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.
RC Bloque III Tema 7
12
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.
RC Bloque III Tema 7
13
Control de flujo
Cliente:1111
SYN 13281:13281(0)
win 4096, <MSS 1024>
Servidor:8888
1
3
4
5
6
9
S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 , w i n 4 0 9 6 , < M S S 1 0 2 4 >
ACK 1, win 4096
PSH 1:1025 (1024) ACK 1, win 4096
PSH 1025:2049 (1024) ACK 1, win 4096
PSH 2049:3073 (1024) ACK 1, win 4096
ACK 2049, win 4096
ACK 3073, win 3072
PSH 3073:4097 (1024) ACK 1, win 4096
ACK 4097, win 4096
2
7
8
10
RC Bloque III Tema 7
14
Control de flujo
Cliente:1111
Servidor:8888
11
12
13
PSH 4097:5121 (1024) ACK 1, win 4096
PSH 5121:6145 (1024) ACK 1, win 4096
PSH 6145:7169 (1024) ACK 1, win 4096
ACK 6145, win 4096
PSH 7169:8193 (1024) ACK 1, win 4096
ACK 8193, win 4096
FIN 8193:8193 (0) ACK 1, win 4096
FIN 1:1 (0) ACK 8194, win 4096
14
16
18
ACK 2, win 4096
15
17
19
RC Bloque III Tema 7
15
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.
RC Bloque III Tema 7
16
Control de flujo
• Emisor rápido, receptor lento
Cliente:1111
SYN 13281:13281(0)
win 4096, <MSS 1024>
Servidor:8888
1
3
4
5
6
7
Segmento
de
actualizació
n de
ventana
S Y N 4 5 8 2 7 : 4 5 8 2 7 ( 0 )
A C K 1 , w i n 4 0 9 6 , < M S S 1 0 2 4>
ACK 1, win 4096
PSH 1:1025 (1024) ACK 1, win 4096
PSH 1025:2049 (1024) ACK 1, win 4096
PSH 2049:3073 (1024) ACK 1, win 4096
PSH 3073:4097 (1024) ACK 1, win 4096
ACK 4097, win 0
ACK 4097, win 4096
2
8
9
RC Bloque III Tema 7
17
Control de flujo
• Emisor rápido, receptor lento (continuación)
Cliente:1111
Servidor:8888
Segmento
de
actualizació
n de
ventana
10
11
12
13
17
PSH 4097:5121 (1024) ACK 1, win 4096
PSH 5121:6145 (1024) ACK 1, win 4096
PSH 6145:7169 (1024) ACK 1, win 4096
FIN, PSH 7169:8193 (1024) ACK 1, win 4096
14
15
16
ACK 8194, win 0
ACK 8194, win 4096
FIN 1:1 (0) ACK 8194, win 4096
ACK 2, win 4096
RC Bloque III Tema 7
18
Control de flujo
• Ventana deslizante
– Funcionamiento:
Ventana ofrecida (receptor)
Ventana
utilizable
(emisor)
1 2 3 4 5 6 7 8 9 10 11 …
Enviado
y ACK
Enviado
y no
ACK
Puede
enviar
Imposibl
e enviar
– 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.
RC Bloque III Tema 7
19
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
Comentarios de: Tema 7 - Intercambio de datos TCP (0)
No hay comentarios