PDF de programación - Transporte fiable

Imágen de pdf Transporte fiable

Transporte fiablegráfica de visualizaciones

Publicado el 2 de Junio del 2017
135 visualizaciones desde el 2 de Junio del 2017
894,2 KB
36 paginas
ARQUITECTURA DE REDES, SISTEMAS Y SERVICIOS
Área de Ingeniería Telemática

Transporte fiable

Area de Ingeniería Telemática

http://www.tlm.unavarra.es

Arquitectura de Redes, Sistemas y Servicios

3º Ingeniería de Telecomunicación

a
c
i
t

Temario

,

I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I

I



l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

Introducción

Introducción a las tecnologías de red

1.
2. Arquitecturas de conmutación y protocolos
3.
4. Control de acceso al medio
5. Conmutación de circuitos
6. Transporte fiable
7. Encaminamiento
8. Programación para redes y servicios

2

a
c
i
t

Temario

,

I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I

I



l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

Introducción

Introducción a las tecnologías de red

1.
2. Arquitecturas de conmutación y protocolos
3.
4. Control de acceso al medio
5. Conmutación de circuitos
6. Transporte fiable
7. Encaminamiento
8. Programación para redes y servicios

3

Material

Del Capitulo 3 de
Kurose & Ross,
“Computer Networking a top-down approach

featuring the Internet”

Addison Wesley

,

I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I

I



a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

4

El problema del transporte fiable
• Enviar datos y asegurarme de que llegan

,



I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I



I

a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

correctamente
– No se pierde ninguno
– No se cambia ninguno
– No se generan más (no hay duplicados)
– Llegan en el mismo orden

• ¿Qué velocidades se consiguen? ¿Qué

limitaciones tiene?

5

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

7 noviembre 2007

Transporte-1

6

Funciones del nivel de transporte

‣ Comunicación lógica entre

aplicaciones

‣ Puede haber más de una

aplicación en cada dirección IP
> multiplexar aplicaciones

Transporte

Red

Enlace

‣ Las aplicaciones quieren que todo

lo que envían llegue
> Transporte fiable

Red

Enlace

‣ Las aplicaciones ¿envían mensajes

o establecen llamadas?
> varios protocolos con interfaz

de conexiones o mensajes

Red

Enlace

‣ No queremos saturar al receptor

ni a la red
> control de flujo y control de

congestión

Canal lógico

Red

Enlace

Red

Enlace

Transporte

Red

Enlace

7 noviembre 2007

Transporte-1

7

Transporte fiable

a
c
i
t

,



I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I

I



l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

• Si hubiera un “Top ten” problemas de

redes el transporte fiable sería un buen
candidato para el primer puesto

Kurose

8

Transporte fiable

a
c
i
t

,



I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I

I



l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á



• ¿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

,

I



I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I



I

a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

Pensando en protocolos

• Descripción protocolo (=programa)


con máquinas de estados finitos
– Eventos que pueden ocurrir
– Acciones como resultado de esos eventos
– El protocolo son las funciones para responder a eventos

• Emisor y receptor son diferentes programas y están en general

en distinto estado (normalmente ni siquiera su conjunto de
estados es el mismo)

10

,

I



I

S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I



I

a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
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

,



I

I

S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I



I

a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

Ejemplo

• Todo lo que envío llega
• La red/el canal puede
retrasar los paquetes
pero acaba
entregándolos todos
• Si la red es compleja

puede que algunos
tarden más que otros
• Algún problema si los
entrega siempre pero
en desorden??
– Si queremos

entrega en orden el
protocolo debe
construirlo

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

Errores de bit

,

I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I

I



l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

• 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 o CRC

información redundante que depende los datos (por ejemplo bits de paridad)
si cambian bits es improbable que se siga cumpliendo la condición
detecto en recepción que el paquete no es el mismo que se envió

– 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 correctamente
– Reenvío de paquetes

• El protocolo de transporte fiable debe retransmitir

automaticamente los errores
Esto se conoce tipicamente como ARQ (Automatic Repeat
reQuest)

13

,



I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I

I

a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


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
– El emisor tiene dos estados: esta esperando datos de la

aplicación o bien está esperando una confirmación
• EL protocolo es conocido como Stop-and-Wait

Emisor

Receptor

a Stop-and-wait

,



I

I

S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I



I

c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

• 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

• De hecho esto puede

considerarse también control
de flujo (el emisor envía
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)

ack

r_recv(paq0)
r_send(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 Problemas con stop-and-wait

,



I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I

I



c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

• ¿Qué pasa si hay un error en

la transmisión del ACK o
NACK?

• Soluciones complican el

protocolo
– Detección de errores para

ACK y NACK?

• y que pasa si se pierden

las confirmaciones del
ACK/NACK

– Checksums que permitan no

solo detectar sino corregir
errores?

• Mucha información

– Reenviar los datos si no

entiendo el ACK/NACK ??
• Nuevo problema: paquetes

duplicados

Emisor

Receptor

r_send(paq0)

paq0

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

Solución

,

I

I



S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I



I

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

• Los protocolos más usados utilizan contra esto numeros de

secuencia del paquete

• El paquete va etiquetado con un numero de secuencia que

permite confirmarlo/rechazarlo indicando cual
estos datos tienen el
numero de secuencia 5
datos
seq=5

cab. red

eth

checksum

cabecera
transporte

• 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 números de secuencia en rangos limitados

17

,



I

I

S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I

I



a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


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

,



I

I

S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S



I

I

a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

Protocolo con número de secuencia
• Estados del emisor

19

,

I



I

S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A

S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S

I



I



a
c
i
t

l



á
m
e
e
T
a
í
r
e
n
e
g
n

i

I


e
d



a
e
r
Á

Ejemplo

• El receptor solo entrega a

la ap
  • Links de descarga
http://lwp-l.com/pdf3904

Comentarios de: Transporte fiable (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad