Está en la página 1de 63

Capa de transporte

Ubicación en el modelo
protocolos
Aplicación Aplicación
mensajes

Transporte Transporte
segmentos

Red Red Red Red


paquetes

Enlace/MAC Enlace/ Enlace/ Enlace/MAC


MAC tramas MAC
Física Física Física Física
Bits y bytes

medios físicos

Máquina A Equipos intermedios Máquina B

2
Interacción con las otras
capas

3
¿Por qué debe existir la
capa de transporte?
La capa de transporte sólo depende de los
usuarios finales (la capa de red no)
La red puede introducir problemas varios:
 Errores
 Pérdida de información
 Duplicación de información
 Retardos variables

La capa de transporte brinda a la capa de


aplicación la calidad de servicio requerida
A la unidad de datos de capa de transporte la
llamamos TPDU (transport protocol data unit)
o segmento
4
Calidad de servicio (QoS)
La capa de Retardo de establecimiento

transporte puede en Probabilidad de falla de


muchos casos establecimiento

mejorar la QoS de la Throughput (velocidad de


datos de usuario)
red Retardo de tránsito
Algunos posibles Variación de retardo
parámetros de QoS:
(ver tabla) Tasa de errores

Negociación de Seguridad de los datos

opciones Prioridad

5
Funciones de la capa de
transporte
Para poder brindar servicios a la capa de
aplicación la capa de transporte debe
generalmente realizar las siguientes
funciones:
 Direccionamiento
 Control de errores
 Secuenciamiento
 Control de flujo
 Control de congestión
 Manejo de buffers de memoria

6
Direccionamiento
Necesidad de conocer la máquina destino
Necesidad de identificar el servicio entre
todos los que la máquina destino puede estar
brindando
Dos esquemas:
 Plano
 Jerárquico

7
Puntos de acceso al servicio
(TSAP)
TSAP = transport service access point
Un “punto de acceso” es un identificador que
se utiliza en la frontera entre capas, para
seleccionar entre distintos posibles servicios
 En general, un número
En capa de transporte, los TSAP son los
identificadores de las distintas aplicaciones
accesibles
 En TCP se les llama “puertos”

8
¿Cómo averiguar en qué
TSAP localizar un servicio?
En general dos opciones:
 Puntos de acceso “bien conocidos”
 En internet, hay puertos reservados para distintas
aplicaciones
 Algunas aplicaciones utilizan puertos sin registrarlos
(“sin pedir permiso”)
 servidores de directorio
 Primeramente debo consultar al servidor de
directorios
 Ejemplo: portmap en UNIX

9
Direccionamiento (cont.)

10
Manejo de errores
Hay diversos tipos de errores que pueden
surgir en la red
 Errores de bit en las TPDU recibidas
 TPDUs perdidas
 TPDUs duplicadas
 TPDUs que llegan en desorden
Si queremos dar un servicio confiable,
debemos ocultar los errores a las capas
superiores

11
Control de errores
Para el manejo de errores de transmisión, hay
2 opciones:
 Detección de errores
 Mediante algún algoritmo se detecta si los datos
recibidos son los esperados
 Si no lo son, se descartan. En caso necesario se deberá
pedir retransmisión
 Corrección de errores
 Al transmitir los datos, se les agrega suficiente
redundancia para poder corregir errores
 Puede evitar retransmisiones (a cambio de mayor
overhead)

En general en capa 4 solo se realiza detección


de errores 12
Control de errores en capa 4
Queremos detectar errores en las TPDUs
recibidas y eventualmente comunicar a la
entidad par la existencia o inexistencia de
errores (reconocimientos positivos o
negativos)
Si se quiere dar un servicio confiable, se
necesitan temporizadores para reenviar las
TPDUs que nunca llegan o que llegan con
demasiados errores como para reconocerlas
(esto puede generar duplicados)
Se necesitan números de secuencia para
detectar duplicados y para detectar
13
información faltante
Detección de errores
En general se recurre a las siguientes
técnicas en la capa de transporte:
 Suma de comprobación
 Códigos de redundancia cíclica (CRC)
Hay otras técnicas pero no suelen ser usadas
en esta capa

14
Suma de comprobación
Se divide el mensaje en palabras de largo fijo
(típicamente 2 o 4 bytes)
Se realiza una suma de todas las palabras
Se envía el resultado junto con el mensaje
En el receptor, se realiza la misma operación
y se verifica el resultado
 En caso de diferencias, se declara que hubo
error y se descarta

15
CRC
Códigos polinómicos o códigos de
redundancia cíclica (CRC)
Se tratan los mensajes de bits como
coeficientes de un polinomio
Si tengo un mensaje de k bits: ck-1..c0 lo puedo
ver como un polinomio de grado k-1
 ck-1xk-1+ck-2xk-2+...+c0x0
Ej: 110001 se representa como x5+x4+x0
La aritmética se hace en módulo 2, no hay
acarreos y tanto la suma como la resta son
idénticas al XOR
16
Idea general de CRC
El transmisor y receptor deben ponerse de
acuerdo en el uso de un polinomio generador
P(x)
Los coeficientes más y menos significativos de
P(x) deben ser 1
El mensaje de m bits se representa como M(x)

17
Idea general de CRC (2)
Agregar una secuencia de bits de
redundancia al final del mensaje de modo tal
que el polinomio representado por el conjunto
sea divisible entre P(x)
El receptor divide lo que recibe entre P(x), si
el resto es 0 asume que no hay errores. Si es
distinto de 0 es porque hubo errores en la
transmisión

18
Algoritmo de CRC
Si r es el grado de P(x), agrego r bits en 0 en la
parte menos significativa del mensaje:
[ ... M(x) ... ] [ 0 ... 0 ]
Tengo entonces la representación de xr M(x)
Divido xr M(x) entre P(x) con aritmética módulo 2
y obtengo un resto R(x) (con menos de r bits)
xr M(x) P(x) => xr M(x) = P(x) q(x) + R(x)
R(x) q(x)
Resto R(x) a xr M(x) y el resultado es lo que se
transmite, G(x), que obviamente es divisible entre
P(x)
Transmito G(x) = xr M(x) – R(x) = P(x) q(x) => divisible entre P(x)
Con la aritmética usada, sumar o restar es lo
mismo
19
Cómo se detectan los
errores?
Si hay errores, el receptor recibe G(x)+E(x)
donde E(x) representa los errores (tiene un 1
en cada bit que se invirtió)
El receptor divide (G(x)+E(x))/P(x) y obtiene el
resto
 Como: Resto[(G(x)+E(x))/P(x)] =
Resto[G(x)/P(x)]+Resto[E(x)/P(x)]
 y: Resto[G(x)/P(x)] = 0
Entonces, el resultado es: Resto[E(x)/P(x)]
Sólo se escapan los errores cuyo patrón de
bits corresponde a un polinomio divisible
entre P(x) 20
Cómo se detectan los
errores?
El problema pasa a ser entonces elegir
adecuadamente el P(x)
Se hace en base a propiedades de los
polinomios, por ejemplo:
 Para detectar cualquier error simple: E(x)=x i (*)
 se necesita que P(x) tenga al menos dos términos
 Para detectar dos errores: E(x)=xi+xj=xj(xi-j+1)
 Si P(x) no es divisible por x (condición *), se necesita
que P(x) no divida a xk+1 para cualquier k<= (largo
del mensaje)
 Detectará todos los errores en ráfaga de
longitud <=r
 Hay más propiedades aplicables
21
Polinomios generadores
Polinomios estandarizados:
 CRC-16 x16+x15+x2+1
 CRC-CCITT x16+x12+x5+1
 IEEE 802 (redes LAN)
 x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1

Los de 16 bits detectan:


 100% simples y dobles
 100% los de número impar de bits
 100% de ráfagas de largo 16 o menos
 99.99% de ráfagas de 17 bits o más bits

22
Recuperación de errores
para servicios confiables
El transmisor debe retransmitir las tramas
que no fueron recibidas
 Porque le avisaron o porque venció un
temporizador sin recibir reconocimiento
Por tanto debe guardarlas hasta que sean
reconocidas (necesidad de buffers)
Debemos poder identificar las tramas (para
saber cuál debemos retransmitir, y para
detectar duplicados/retransmisiones y tramas
en desorden en el receptor)

23
Números de secuencia
Se utilizan para determinar si en un flujo me
faltó alguna TPDU, o recibí un duplicado (o si
llegaron en desorden)
Se numeran las TPDU, y se dispone de un
campo (de largo acotado) en el encabezado
para dicho número de secuencia
Si tengo n bits:
 al pasar de 2n-1, se vuelve a 0

24
Protocolo simple sobre una
red con ruido
Las TPDU se pueden corromper o perder
totalmente
 Se agrega código detector de errores
Sólo se reconocen (ACK) las TPDU que llegan
bien (el receptor envía una TPDU indicando
que la TPDU se recibió correctamente)
Temporizadores para recuperación de errores
si no llega el reconocimiento

25
Protocolo simple sobre una
red con ruido
Problema:
 se pierde ACK, receptor reenvía, y se duplica
una TPDU
Necesidad de números de secuencia
 ¿Cuántos números de secuencia se necesitan?
 En este protocolo solo 2: 0 y 1 pues hasta no recibir
reconocimiento del 0 no intento mandar el 1
 Cuando se espera la TPDU 0 se rechazan las
que no sean 0
 Al recibirse la 0 se pasa a esperar la 1

26
Eficiencia en uso de la red
en nuestro protocolo simple
A este tipo de protocolos se les llama
protocolos de “stop and wait”
 Después de cada segmento tengo que esperar
el reconocimiento
Supongamos que:
 La red tiene un retardo de ida y vuelta de 500ms
 La capacidad del canal es de 500 kbps
 Las TPDUs tienen 5.000 bits

¿Cuál es la eficiencia en el uso de la


capacidad de la red?

27
Eficiencia del protocolo
simple
Velocidad efectiva de transmisión:
5000/0.5 = 10000 bps = 10 kbps

Eficiencia 10 kbps/500 kbps = 2 %

La combinación de alto retardo, gran ancho


de banda y TPDU corta es desastrosa

28
Primer mejora: Piggybacking
Es habitual el uso de la red para transmitir
datos en ambas direcciones
Como el campo ACK es parte del encabezado,
puedo mandar información en la misma TPDU
de ACK
Esto se llama piggybacking
Problema: Si no tengo datos, espero?
¿Cuanto?
 POCO: debo mandar TPDU solo con ACK
 MUCHO: el transmisor retransmite porque
expira un temporizador
29
Mejora del uso de la red
No esperar reconocimiento TPDU a TPDU
Permitir al transmisor enviar varias TPDUs sin
esperar los asentimientos
¿Cuántas TPDU necesitamos enviar para
maximizar el uso de la red?
 Largo de TPDU: L bits
 Capacidad del canal: b bps
 Retardo de ida y vuelta: R segundos
 Cantidad de TPDUs: b*R/L

30
Ejemplo numérico:
cantidad de TPDUs
Capacidad disponible de 1Mbps
Largo de trama 1500 bytes (12000 bits)
Retardo de ida y vuelta 200 ms
Cantidad de tramas:
106 x 0,2 / 12000 ≈ 16,6

31
Ventanas deslizantes
Le permite a la capa de transporte más
libertad en el orden de transmisión y
recepción de las TPDUs
PERO: agrega complejidad
 Si acepta TPDUs en desorden, el receptor debe
guardarlas hasta recibir las faltantes para
entregarlas en orden a la capa superior
 El transmisor debe mantener copia de las
TPDUs enviadas en un buffer para reenviarlas
si no recibe reconocimiento

32
Ventanas deslizantes
Si tenemos n bits para el N° de secuencia:

Números de secuencia de 0 a 2n-1 = MAX_SEQ
Ventana de transmisión (TX)
 números de secuencia de las TPDU que puedo enviar,
o ya han sido enviadas y aún no han sido reconocidas
Ventana de recepción (RX)
 números de secuencia de las TPDU que se pueden
aceptar en un determinado instante
Las ventanas de TX y RX no tienen por que
tener los mismos límites ni el mismo tamaño

33
Ventanas deslizantes
Si no se dispone lugar en la ventana de TX no
se deben aceptar datos de la aplicación
La ventana del receptor son los números de
secuencia que puede aceptar
Si se recibe algo fuera de la ventana se
descarta
 Puede ser necesario enviar un reconocimiento
Si lo recibido coincide con el límite inferior, se
pasa a la capa de aplicación, se manda ACK y
se avanza la ventana

34
Ventanas deslizantes
Dato desde
la capa Una vez que el Tx
superior recibe el ACK corre su
ventana porque sabe
que la TPDU 0 fue
Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 recibida correctamente
y no tendrá que
retransmitirla

Una vez que el Rx envía


el ACK corre su ventana
para no vover a recibir
Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 una repetición de la
TPDU 0
Dato hacia
la capa
superior 35
Ventanas deslizantes
Dato desde
la capa
superior

Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
Dato hacia
la capa
superior 36
Ventanas deslizantes
(cuando los reconocimientos demoran)
Datos desde la capa superior

Este dato no puede


aceptarse porque no
hay espacio en la
Tx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 ventana

A medida que el Tx
comienza a recibir
los ACKs puede
correr su ventana y
Rx 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 aceptar nuevos
datos de la capa
superior

37
Ventanas deslizantes
(cuando hay errores y se pierden datos)
Datos desde la capa superior
Este dato NO lo
puedo pasar a la
capa superior
Tx 0 1 2 3 4 5 6701234567 porque me falta
la TPDU 2.
Acá mando un Cuando me
ACK_1 repetido o llegue la
mando un NACK_2 retransmisión
enviaré un ACK_3
y podré pasar a
la capa superior
Rx 0 1 2 3 4 5 6701234567 el contenido de
las TPDU 2 y 3
Estos datos los puedo pasar a la capa
superior porque están en secuencia 38
Tamaño de ventana de
recepción

39
Importancia de ventana de
recepción mayor a 1
Permite aprovechar mejor el enlace en
casos de pérdida
Permite reordenamientos de TPDUs en la
transmisión
PERO: complica la implementación. Debo
poder guardar TPDUs recibidas en desorden

40
Tamaño máximo de la
ventana de transmisión
Ventana de transmisión TXWin
 Si TXWin = MAX_SEQ + 1 (Ej: MAX_SEQ=7)
 mando 0 a 7 (ventana 8)
 se pierden los reconocimientos
 retransmito 0 a 7
 se interpretan como información nueva

Si el receptor acepta TPDUs en desorden


(ventana de recepción >1),
 TXWin <= (MAX_SEQ+1)/2

Si ventana recepción 1, entonces:


 TXWIN <= MAX_SEQ

Si no uso timeouts, entonces:


 TXWIN <= MAX_SEQ 41
Tamaño máximo de la
ventana de recepción
Ventana de recepción RXWin
 Si RXWin = MAX_SEQ
 TX envía 0 a 3, RX los recibe bien y manda ACKs
 RX avanza la ventana para admitir 4 a 2
 se pierden los ACKs y el TX retransmite el 0
 cae en la ventana del RX, se acepta como nuevo
 Falla: la nueva ventana se superpone con la
vieja
Para evitar eso:
 RXWin <=(MAX_SEQ+1)/2

42
Números de secuencia,
buffers y ventanas
Número de buffers del receptor = ventana de
recepción y no la cantidad de números de
secuencia
O sea que puedo tener un espacio de
números de secuencia grande, e igual
trabajar con equipos con poca capacidad de
memoria

43
Otras mejoras
Uso de reconocimientos negativos (NAK)
 cuando se recibe una TPDU con error
 cuando se recibe una TPDU fuera de secuencia
Reconocimientos “selectivos”
 Si recibí correctamente tramas 1, 2, 4 y 5,
anunciar que recibí bien hasta la 2 y también
la 4 y 5

44
Paquetes desordenados y
duplicados
Si la subred puede generar duplicados que
aparecen en el receptor cientos de
milisegundos después del arribo del paquete
original, podrían tener un número de
secuencia correspondiente a la nueva
ventana
 Si los números de secuencia se reciclaron
Para poder solucionar este problema,
precisaré tener una cota superior del tiempo
de vida en la red

45
Reutilización de los
números de secuencia
Debe haber suficientes números de secuencia
y utilizarse a una velocidad suficientemente
baja como para que al reusarse un número,
todos los duplicados de paquetes anteriores
con dicho número hayan desaparecido
 Precisaré muchos más números que si la red
no pudiera reordenar los paquetes

46
¿Hemos solucionado el
tema de los duplicados?
Lamentablemente NO
Los duplicados retardados hacen posible la
repetición de conexiones
Posible mecanismo sencillo de conexión:
 A envía pedido de establecimiento de conexión
(CR)
 B responde con reconocimiento a ese pedido
 A y B pueden enviar datos
Problema: Cómo distinguir CR de un
duplicado

47
Ejemplo de problema
 A intenta establecer conexión con B. Mensaje
se retarda
 A reintenta, establece la conexión, realiza la
transacción y corta la conexión
 Llega a B el pedido de establecimiento de
conexión “viejo”. B establece la conexión.....
 B mantendrá estado de una conexión que A
nunca utilizará
Peor aún si la red puede generar duplicados
(podría repetir toda la transacción)

48
Solución a los duplicados
retardados
Para solucionar el problema se recurre a una
combinación de dos técnicas ideadas por
Tomlinson:
 Establecimiento de conexión en tres fases (o
vías)
 Elección del número de secuencia inicial a
partir de un reloj de tiempo real

49
Establecimiento en tres
fases

50
Establecimiento de
conexión (Tomlinson)
Al establecer la conexión
 Usar el establecimiento en tres fases con
números de secuencia inicial independientes
para cada extremo
 Usar un reloj de tiempo real en cada máquina
que sigue funcionando aún con la máquina
apagada para elegir el número de secuencia
inicial
 Tener un tiempo T=cota superior del tiempo de
vida de los paquetes (limitado por tamaño de
la subred, controlador de saltos, timestamps, u
otros medios)
51
Zona prohibida
¿Qué problemas puede darnos el reinicio
de un equipo con una conexión
establecida?
 Equipo reinicia y demora menos de T
 Inicia la misma conexión, con n° de secuencia
inicial el indicado por el reloj
 Llega paquete retrasado de la vieja conexión
 Solo nos afectará, si el n° de secuencia entra
en la nueva ventana del receptor
Definiremos una “zona prohibida” de los
números de secuencia que no pueden
utilizarse 52
Números de secuencia
Zona prohibida

53
Zona prohibida
Soluciones:
 Evitar los nº de secuencia de la zona prohibida
 Asegurar que al inicio no se reutilizarán los
números (por ejemplo exigiendo que no se
establezcan conexiones durante un tiempo T)

54
Fin de conexión
Terminar conexión
 Simétrica
 Se intenta asegurar que no haya pérdida de datos,
asegurando que ambos extremos estén de acuerdo
en cerrar la conexión
 se cierran separadamente ambos sentidos
 complicación del problema de los dos ejércitos
 Asimétrica
 Uno de los extremos cierra la conexión
unilateralmente
 No garantiza que no haya pérdida de datos

55
Desconexión con pérdida
de información

56
Problema de los dos
ejércitos

57
Diferentes escenarios de
corte

58
Diferentes escenarios de
corte

59
Control de Flujo
Evitar que un transmisor “rápido” sature a un
receptor “lento” o sobrecargado
Usualmente se basa en limitar la cantidad de
datos que puede enviar el transmisor
Suele estar asociado a la ventana del
receptor
Ejemplo: no enviar reconocimientos hasta
tener buffers libres. Problema: obligo a
retransmisión por timeout

60
Buffers y control de flujo
Las máquinas pueden manejar muchas
conexiones simultáneas, por lo que se
requiere manejo dinámico de buffers
El uso de buffers dinámicos hace conveniente
separar el asentimiento de las PDU de la
señalización del tamaño de la ventana
 Aviso que recibí bien los datos previos pero no
tengo espacio para recibir más datos
 Al tener espacio disponible, actualizo el
tamaño de ventana

61
Cuidados con los anuncios
de ventana...
¿qué pasa si se pierde el mensaje de
actualización de ventana luego de haber
anunciado ventana “0”?
 Posible “deadlock”
 Solución: pedido de actualización de ventana

62
Control de congestión
Evitar sobrecargar "la red"
Puede participar la capa de transporte, la
capa de red, o ambas
Requerimos alguna realimentación sobre el
estado de carga de la red
 Objetivo: enviar exactamente la cantidad de
datos que la red puede transmitir
 Dificultad: no conocemos la capacidad instantánea
disponible
Lo veremos en TCP

63

También podría gustarte