1. Introducción a las redes
2. Tecnologías para redes de área local
3. Conmutación de circuitos
4. Tecnologías para redes de área extensa y última milla
5. Encaminamiento
6. Arquitectura de conmutadores de paquetes
7. Control de acceso al medio
8. Transporte extremo a extremo
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Objetivos
• ¿Qué es el nivel de transporte?
• ¿Qué problemas resuelve?
– Multiplexación << bien conocido ya
– Transporte fiable
– Control de flujo
– Control de congestion
• ¿Qué velocidades consigue?
¿Qué limitaciones tiene?
• Nivel de transporte en Internet
– Protocolos TCP y UDP
– UDP << fácil de entender y bien conocido
– Cómo funciona TCP
3
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Red y transporte
• Nivel de red: Comunicación lógica entre hosts
Envía este paquete al nivel de transporte de la dirección IP a.b.c.d
He recibido este paquete de la dirección IP x.y.z.t
No garantiza que todos los paquetes acaben llegando
• Nivel de transporte: Comunicación lógica entre procesos
App 1
Transporte
App 1
Transporte
Red
Red
Red
Red
Red
Enlace
Enlace
Enlace
Enlace
Enlace
4
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Funciones del nivel de transporte
lógica
• Comunicación
entre aplicaciones
– Puede haber más de una
aplicación en cada dirección
IP
– Las aplicaciones quieren
que todo lo que envían
llegue
– Las aplicaciones ¿envían
mensajes o establecen
llamadas?
• H a y 2 n i v e l e s d e
transporte en Internet con
diferentes servicios/
funciones
Transporte
Red
Enlace
Red
Enlace
Red
Enlace
Canal lógico
Red
Enlace
Red
Enlace
Transporte
Red
Enlace
5
Transporte en Internet
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
• Entrega fiable y en orden
(TCP)
– Garantiza que los datos llegan y llegan
en orden
– Control de flujo
– Control de congestión
– Las aplicaciónes ven conexiones/
• Entrega no fiable, sin
llamadas/sesiones
garantias de orden (UDP)
– Las aplicaciones envían mensajes
– No se garantiza que lleguen
• En los dos casos
– No se garantiza tiempo de llegada
– No se garantiza ancho de banda
Transporte
Red
Enlace
Red
Enlace
Red
Enlace
Red
Enlace
Red
Enlace
Transporte
Red
Enlace
6
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Funciones TCP/UDP
• Función común
Multiplexación/demultiplexación de aplicaciones
• Funciones sólo UDP
– Envio no orientado a conexión
• Funciones sólo TCP
– Manejo de conexiones
– Transporte fiable de datos
– Control de flujo
– Control de congestión
7
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Transporte fiable
• Si hubiera un “Top ten” problemas de
redes el transporte fiable sería un buen
candidato para el primer puesto
Kurose
8
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Transporte fiable
• ¿Se puede conseguir un transporte fiable sobre un nivel
de datagramas de entrega no fiable?
t_envia(datos)
Nivel de
Transporte
Protocolo de
transporte fiable
r_envia(datos)
Nivel de Red
t_recibe(datos)
Protocolo de
transporte fiable
r_recibe(datos)
Entrega no garantizada
se pueden perder datos
9
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Protocolo de transporte fiable
• Descripción protocolo (=programa)
con máquinas de estados finitos
– Eventos que pueden ocurrir
– Acciones como resultado de esos eventos
• Emisor y receptor son diferentes programas y estan en general en
distinto estado (normalmente ni siquiera su conjunto de estados es el
mismo)
10
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Protocolo de transporte fiable
• Ejemplo: protocolo de transporte sobre
un nivel de red fiable
• Diagrama de estados de emisor y
receptor
Emisor
Receptor
red fiable:
r_envia(p) siempre causa un r_recibe(p)
11
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Ejemplo
• Todo lo que envío
llega
• La red puede retrasar
los paquetes pero
acaba entregandolos
todos
• Algún problema si los
entrega siempre pero
en desorden??
Emisor
Receptor
r_send(paq0)
paq0
r_send(paq1)
r_send(paq2)
r_send(paq3)
paq1
paq2
paq3
r_recv(paq0)
r_recv(paq1)
r_recv(paq2)
r_recv(paq3)
Operación normal
12
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Errores de bit
• Pero... el nivel de red puede cambiar bits (probabilidad de error)
• Cambios necesarios en el protocolo de transporte
– Detección de errores
• Uso de checksum
– Comunicación de fallos al emisor
• ACK (acknowledgement): avisar al emisor de los paquetes que recibimos.
• NACK (negative acknowledgement): avisar al emisor de los paquetes que no
recibimos
– Reenvío de paquetes
• El protocolo de transporte fiable debe retransmitir automaticamente los
errores. Esto se conoce tipicamente como ARQ (Automatic Repeat
reQuest)
13
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Protocolo de transporte fiable
• Para un canal con errores de bits
– Usamos detección de errores con checksum/CRC
– Informamos al emisor de si llegan o no
Emisor
Receptor
14
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Stop-and-wait
• El emisor controlado por el
receptor
– ACK (recibido OK manda
otro)
– NACK (recibido mal manda
otra vez el mismo)
– Mientras no me dice nada
no envío
• D e h e c h o e s t o p u e d e
considerarse también control
de
flujo (el emisor envia
cuando el receptor
le da
permiso) = regulación de flujo
por el receptor
Emisor
Receptor
r_send(paq0)
paq0
r_recv(ack)
r_send(paq1)
r_recv(nack)
r_send(paq1)
r_recv(nack)
r_send(paq1)
r_recv(nack)
r_send(paq2)
r_recv(paq0)
r_send(ack)
ack
paq1 corrompido
nack
r_recv(paq1 err)
r_send(nack)
paq1 corrompido
nack
paq1
ack
paq2
ack
r_recv(paq1 err)
r_send(nack)
r_recv(paq1)
r_send(ack)
r_recv(paq2)
r_send(ack)
15
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Problemas con stop-and-wait
• ¿Qué pasa si hay un error en la
transmisión del ACK o NACK?
Emisor
Receptor
r_send(paq0)
paq0
• S o l u c i o n e s c o m p l i c a n e l
protocolo
– Detección de errores para
ACK y NACK?
– Checksums que permitan
no solo detectar sino
corregir errores?
– Reenviar los datos si no
entiendo el ACK/NACK ??
• Nuevo problema: paquetes
duplicados
r_recv(ack)
r_send(paq1)
r_recv(no se)
r_send(paq1)
r_recv(ack)
r_send(paq2)
r_recv(no se)
r_send(paq2)
Ok 0
ack
Paq1 corrompido
Mal 1
nack
nack corrompido
Ok 1
Ok 2
ack
paq2
ack
paq2
ack corrompido
ack
Paq 2
recibido 2 veces
16
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Solución
• Los protocolos más usados utilizan contra esto
numeros de secuencia del paquete
• El paquete va etiquetado con un numero de
secuencia que permite confirmralo/rechazarlo
indicando cual
• El numero de secuencia es un campo del
paquete por lo que podrá tener una serie finita de
valores
• Aunque es fácil asignar bits para que el numero
de secuencia pueda crecer mucho antes de dar
la vuelta, veamos primero las bases con
numeros de secuencia en rangos limitados
17
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Protocolo con número de secuencia
• 1 bit para número de secuencia
Cada paquete de datos es secuencia 0 o 1
– Si llega el que esperamos mandamos ACK y lo entregamos
– Si llega el que no esperamos?
mandamos ACK pero no son datos nuevos
18
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Protocolo con número de secuencia
• Estados del emisor
19
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
S
E
D
E
R
e
d
a
e
r
Á
Ejemplo
• El receptor solo entrega a
la aplicación el paquete
correcto
• En lugar de enviar ACK o
NACK podria enviar cual
espero
– A C K + 0 =
esperando el 0
(igual lo llamabais RR0
Ready to receive 0)
– A C K + 1 = e s t o y
e s t o y
esperando el 1
Emisor
Receptor
r_send(paq0)
paq0
r_recv(ack)
r_send(paq1)
r_recv(no se)
r_send(paq1)
r_recv(ack)
r_send(paq0)
r_recv(no se)
r_send(paq0)
Ok 0
ack
Paq1 corrompido
Mal 1
nack
nack corrompido
Ok 1
Ok 0
ack
paq0
ack
paq0
ack corrompido
ack
Esperado 1
Ack pero
ya lo tenia
20
– Stop and wait
– Con numeros de secuencia para no
entregar duplicados
– Con ACK que indica cual es el dato que
• Garantiza fiabilidad sobre un canal con
• Protocolo
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
espero
errores de bits
• Problemas
Hasta ahora
– ¿Y si se pueden perder paquetes?
– Cómo de rápido es el protocolo
21
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Eficiencia
• Cuanto se tardan en transferir s bytes
con un protocolo de este tipo?
– Dividimos en paquetes de tamaño c
s/c paquetes
Emisor
Receptor
Round-trip time
RTT
Cuanto se tarda en enviar un paquete?
Si no hay errores 1 RTT
Si hay errores 2 RTTs?
Y si hay errores en la retransmision?
paq0
ack1
paq1
ack1
paq1
ack0
22
a
c
i
t
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
S
E
D
E
R
Tiempo transmisión de un paquete
• Tiempo para transferir 1 paquete
si la probabilidad de que un paquete se pierda es
Links de descarga
http://lwp-l.com/pdf4002
Comentarios de: Transporte Introducción y transporte fiable (0)
Comentarios de: Transporte Introducción y transporte fiable (0)
No hay comentarios