Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capa4 Parte1
Capa4 Parte1
Ubicación en el modelo
protocolos
Aplicación Aplicación
mensajes
Transporte Transporte
segmentos
medios físicos
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
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)
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
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
27
Eficiencia del protocolo
simple
Velocidad efectiva de transmisión:
5000/0.5 = 10000 bps = 10 kbps
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
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
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
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