Vous êtes sur la page 1sur 40

Version 26/04/15

Computer Networks II

application

Confiabilidad y control de flujo


transport

network

link en la capa de transporte


physical

Confiabilidad y control de flujo 1


Contenidos
Introduccin
Puertos, direccionamiento de procesos
Protocolo de Control de Transporte (TCP)
Cabecera

Control de flujo: Ventana deslizante


Control de errores
Temporizadores

Confiabilidad y control de flujo 2


Introduccin
La capa de transporte es el
corazn de toda la jerarqua de
protocolos.
capas Usuario
Es la que realmente ofrece superiores del servicio
de transporte
servicios de valor a los usuarios
y aplicaciones. transporte
Proveedor
red del servicio
de transporte
enlace

fsica

[REPASO] Confiabilidad y control de flujo 3


Introduccin
La capa de transporte se encarga de proveer:
Comunicaciones entre procesos.
Mecanismos de control de flujo.
Mecanismos de control de errores.

Establecimiento de conexiones
La capa de transporte en Internet ofrece dos tipos de
servicios a la capa de aplicacin:
No orientados a conexin (con UDP)
Orientados a conexin (con TCP)

[REPASO] Confiabilidad y control de flujo 4


Direccionamiento de procesos
Puertos
La capa de red se encarga de la comunicacin host a host,
mientras que los protocolos de transporte realizan comunicacin
proceso a proceso (multiplexacin)
La IP identifica una interfaz de red de un host.
Un puerto identifica un proceso en la mquina. entidades de transporte
(procesos)
El puerto es un nmero de 16 bits:
P1 P2 P3 P4
0 1.023: Bien conocidos
1.024 49.151: Registrados
transporte
49152 65-535: Dinmicos red
enlace
fsica
Nota
La
La asignacin
asignacin oficial
oficial de
de puertos
puertos est
est disponible
disponible en:
en:
http://www.iana.org/assignments/port-numbers
http://www.iana.org/assignments/port-numbers

[REPASO] Confiabilidad y control de flujo 5


Direccionamiento de procesos
Puertos

Confiabilidad y control de flujo 6


Direccionamiento de procesos
Puertos

Confiabilidad y control de flujo 7


Servicio orientado a conexin
en la capa de transporte

Se ofrece a la aplicacin el interfaz de una conexin


establecida extremo a extremo.
Las aplicaciones disponen de uno a varios circuitos
virtuales en los que la informacin transmitida se maneja
como un flujo continuo de datos.
Lo suelen utilizar aplicaciones que necesitan intercambio
de datos de tamaos indeterminados, sin tener que
preocuparse de subdividirlos en mensajes.

[REPASO] Confiabilidad y control de flujo 8


RFC
TCP RFC
793
Transmission Control Protocol
793
1122
1122

Es un protocolo que ofrece un servicio orientado a conexin.


Garantiza la integridad del flujo de datos.
Se encarga, de forma transparente, de control de flujo y
congestin, prdida, repeticin y orden de paquetes, etc.
Se encarga de la multiplexacin del trfico IP para que pueda
ser manejado por varios aplicaciones concurrentes
El direccionamiento de procesos se realiza por medio de un
identificador de 16 bits llamado puerto TCP.
La unidad de datos se denomina: segmento

[REPASO] Confiabilidad y control de flujo 9


TCP
Las conexiones TCP son full duplex y punto a punto.
TCP no soporta multicast ni difusin.
Cada dato de la carga de un segmento TCP tiene su propio n de
secuencia de 32 bits.
Utiliza un sistema de control de flujo de ventana deslizante
Los mecanismos de confirmacin de recepcin y del control de la
ventana son independientes.
La tasa de salida se controla mediante la ventana congestin, la
ventana de recepcin y el umbral.

[REPASO] Confiabilidad y control de flujo 10


TCP
Cabecera
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

puerto TCP origen puerto TCP destino


nmero de secuencia
nmero de acuse de recibo

URG

SYN
PSH
ACK

RST
offset reservado ventana

FIN
checksum puntero urgente
opciones relleno

cuerpo del mensaje

nmero de secuencia: El nmero de secuencia del primer byte del segmento. Si


SYN est activo, indica el nmero de secuencia inicial (n). Y el primer byte ser n+1
acuse de recibo: Si ACK est activo, indica el nmero de secuencia del siguiente
byte que espera recibir.

[REPASO] Confiabilidad y control de flujo 11


TCP
Cabecera
offset: tamao de la cabecera TCP (en palabras de 4 bytes). Indica donde comienzan la
carga del segmento.
URG: activa el puntero urgente
ACK: activa el acuse de recibo
PSH: indica que los datos entregarse inmediatamente.
RST: sirve para rechazar un intento de conexin o resetear una conexin activa.
SYN: Se usa para el establecimiento de conexiones. Junto al bit ACK sirve para el inicio de
conexin de 3 vas.
FIN: se utiliza para finalizar conexiones. Puede ser unidireccional o bidireccional.
ventana: Se usan en los segmentos ACK, indica cuantos bytes est dispuesto a aceptar el
receptor.
puntero urgente: Si URG est activo, es el puntero al primer byte urgente

[REPASO] Confiabilidad y control de flujo 12


TCP
Opciones
1. Fin de opciones
2. Nop
3. Tamao mximo de segmento. Indicado por el receptor durante la
conexin. Se conoce como MSS (Maximum Segment Size)
4. Escala de ventana. Indica que se va a usar una ventana de 32 bits en
lugar de 16. Se negocia en la conexin
5. SACK permitido. Reconocimiento selectivo activado
6. SACK. Reconocimiento de segmentos concretos
7. Marca de tiempo.

[REPASO] Confiabilidad y control de flujo 13


TCP
Servicio orientado a flujo
En una conexin TCP los datos no se agrupan en
unidades independientes como en UDP.
En TCP el proceso emisor produce el flujo de bytes y el
receptor lo consume.

[REPASO] Confiabilidad y control de flujo 14


TCP
Buffers de envo y recepcin
Dado que el emisor no emite datos a la misma velocidad que el
receptor los consume es necesario utilizar buffers.

Nota
proceso Los
Los datos
datos no
no se
se envan
envan byte
byte aa
emisor byte
byte sino
sino en
en grupos
grupos llamados
llamados
segmentos, que
segmentos, que pueden
pueden ser
ser
buffer de envo
de
de tamao
tamao arbitrario
arbitrario

vaco
por enviar buffer de recepcin

enviado, no confirmado
proceso
recibido, no procesado receptor

[REPASO] Confiabilidad y control de flujo 15


TCP
Numeracin de bytes
Los nmeros de secuencia de TCP identifican cada byte de
la conexin. TCP no numera los segmentos.
sequence number
acknowledgement number
Cada extremo utiliza una numeracin independiente.
El primer nmero de secuencia es aleatorio, no tiene porqu ser
0.
Estos nmeros de secuencia se utilizan en los mecanismos de
control de flujo y errores.

Confiabilidad y control de flujo 16


TCP
Numeracin de bytes
Nmeros de secuencia:
El valor de este campo de la cabecera TCP corresponde al
primer byte de la carga del segmento.
Nmeros de acuse de recibo (reconocimiento):
El valor del campo TCP indica cual es el nmero de
secuencia del siguiente byte que este extremo espera
recibir.

Confiabilidad y control de flujo 17


TCP
Control de flujo
TCP utiliza un protocolo de ventana deslizante.
Ventana de recepcin:
Su tamao indica cuntos bytes caben todava en el buffer de recepcin. Puede
cambiar durante la conexin.
Ventana de envo:
Indica qu bytes del buffer de envo se pueden enviar en cada momento sin
tener que esperar una confirmacin.

Nota
La
La ventana
ventana de
de envo
envo no
no
proceso debe
debe ser
ser mayor
mayor que
que la
la
emisor de
de recepcin
recepcin
ventana de envo
buffer de envo
27 26 25 24 23 22 21 20

Confiabilidad y control de flujo 18


TCP
Deslizamiento de la ventana
Partiendo del estado anterior, se recibe un segmento con los
siguientes datos:
acuse de recibo: 22
tamao de ventana: 6
El buffer de envo queda:

proceso
emisor
ventana de envo
buffer de envo
29 28 27 26 25 24 23 22

Confiabilidad y control de flujo 19


TCP
Aumento de la ventana
Partiendo del estado anterior, el emisor enva 4 bytes [22-25] y recibe
un segmento con los siguientes datos:
acuse de recibo: 24
tamao de ventana: 8
El buffer de envo queda:

proceso
emisor
ventana de envo
buffer de envo
31 30 29 28 27 26 25 24

Confiabilidad y control de flujo 20


TCP
Reduccin de la ventana
Partiendo del estado anterior, el emisor enva 2 bytes [26-27] y recibe
un segmento con los siguientes datos:
acuse de recibo: 28
tamao de ventana: 5
El buffer de envo queda:

proceso
emisor
ventana de envo
buffer de envo
35 34 33 32 31 30 29 28

Confiabilidad y control de flujo 21


TCP
Cierre de la ventana
Se produce cuando el receptor no est dispuesto a aceptar nada de
trfico. Se recibe un segmento con los siguientes datos:
acuse de recibo: 28
tamao de ventana: 0
El buffer de envo queda:

ventana de
proceso envo cerrada
emisor

buffer de envo
35 34 29
33 32 31 30 29 28

Confiabilidad y control de flujo 22


TCP RFC
RFC

Sndrome de la ventana tonta


896
896

Ocurre cuando cada acuse de recibo anuncia una pequea


cantidad de espacio disponible y por tanto cada nuevo
segmento es pequeo, desperdiciando recursos en la red
y en los hosts.
Prevencin:
Cuando el receptor cierra la ventana, debe esperar a
tener una cantidad considerable de espacio antes de
volver a abrirla.
El emisor debe esperar a tener una cantidad
adecuada de datos (clumping) antes de enviar un nuevo
segmento.

Confiabilidad y control de flujo 23


TCP
Sndrome de la ventana tonta
Algoritmo de Nagle
Si se generan nuevos datos pero no se han reconocido los
anteriores, los nuevos se almacenan en el buffer de salida hasta que
alcancen el MSS. Cuando llegue un acuse de recibo se puede enviar el
contenido del buffer.

if hay nuevos datos para enviar:


if el tamao de ventana y los datos disponibles >= MSS:
enviar un segmento completo de tamao de MSS ahora

else:
if hay datos sin confirmar en espera:
encolar los datos en el buffer hasta recibir un ACK
else:
enviar los datos ahora

Confiabilidad y control de flujo 24


TCP
Control de errores
TCP garantiza la entrega de todo el flujo de datos:
manteniendo el orden de los datos
sin errores
sin partes ausentes o duplicadas
El control de errores incluye deteccin de segmentos:
corruptos
fuera de orden
perdidos
duplicados
Tambin incluye los mecanismos de correccin una vez detectados
estos errores.

Confiabilidad y control de flujo 25


TCP
Control de errores
El receptor de un segmento comprueba el checksum:
Si es correcto, enva al emisor un acuse de recibo.
Si es incorrecto, descarta el segmento.
El emisor inicia un temporizador al enviar cada segmento
Si no llega un acuse de recibo antes de que el temporizador
expire, se reenva el segmento correspondiente

Confiabilidad y control de flujo 26


TCP :: Control de errores
segmento corrupto o perdido
emisor receptor

1 seq: 1201
, 200B

timer
2 seq: 1401
, 200B
timer

3 seq: 1601
, 200B
timer

segmento
corrupto
o perdido
0 1
ack: 16

retransmis
timeout 3 in
seq: 1601
, 200B
timer

01
ack: 18

Confiabilidad y control de flujo 27


TCP :: Control de errores
ACK corrupto o perdido
emisor receptor

1 seq: 1201
, 200B

timer
2 seq: 1401
, 200B
timer

3 seq: 1601
, 200B
timer

01
ack: 16

0 1
ack: 18

Confiabilidad y control de flujo 28


TCP :: Control de errores
segmento duplicado
emisor receptor

1 seq: 1201
, 200B

timer
2 seq: 1401
, 200B
timer

3 seq: 1601
, 200B
timer

01
ack: 16

0 1 acuse perdido o llega


ack: 18 despus del timeout

retransmis
timeout 3 in
seq: 1601
, 200B
timer

descartar

01
ack: 18

Confiabilidad y control de flujo 29


TCP :: Control de errores
segmento fuera de orden
emisor receptor

1 seq: 1201
, 200B

timer
2 seq: 1401
, 200B
timer

3 seq: 1601
, 200B
timer

0 1
ack: 14

01
ack: 18

Confiabilidad y control de flujo 30


TCP :: Control de errores
ack duplicado
emisor receptor

1 seq: 1201
, 200B

timer
01
ack: 14

2 seq: 1401
timer

, 200B

3 seq: 1601
, 200B
timer

0 1
ack: 14

Confiabilidad y control de flujo 31


TCP
Temporizadores
TCP utiliza 4 temporizadores:
Retransmisin
Persistencia
Keep alive
Fin de conexin

Confiabilidad y control de flujo 32


TCP
Temporizador de retransmisin
Es el temporizador utilizado para retransmitir segmentos cuando no
llega el acuse de recibo correspondiente.
Este temporizador es diferente en cada conexin y cambia durante
una misma conexin. Se recalcula cada vez que se recibe un acuse
de recibo: 2 x RTT
El RTT se puede calcular con:
la opcin marca de tiempo
enviando un segmento y midiendo el tiempo hasta el acuse
RTT = x RTT previo + (1 - ) x RTT actual
Los acuses de recibo de segmentos retransmitidos no se tienen en
cuenta en este clculo (Algoritmo de Karn).

Confiabilidad y control de flujo 33


TCP
Temporizador de Persistencia
Cuando el emisor recibe un mensaje de cierre de la ventana queda
en espera de un nuevo acuse indicando la apertura.
Si ese acuse se pierde, los dos extremos de la conexin quedan
bloqueados.
Para evitar esto, el emisor inicia un temporizador y cuando expira
enva un segmento especial de prueba para que el receptor le
informe del estado de su ventana.
El valor de este temporizador empieza siendo igual al de
retransmisin pero se duplica cada vez, hasta un mximo de 60s.

Confiabilidad y control de flujo 34


TCP
Temporizador Keep Alive
Este temporizador se utiliza para evitar que una conexin quede
abierta indefinidamente.
El servidor inicia el temporizador con un valor de 2 horas. Cada
vez que recibe un segmento del cliente, reinicia el temporizador
Si el temporizador expira, el servidor enva una prueba al
cliente. Si despus de 10 pruebas enviadas cada 75 s, el cliente
no contesta, el servidor cierra la conexin.

Confiabilidad y control de flujo 35


TCP
Temporizador de fin de conexin
Cuando se cierra una conexin, sta queda en un estado de
limbo durante un periodo de tiempo dado por este
temporizador.
Su valor es normalmente el doble del tiempo de vida de un
segmento.
Cuando el temporizador expira se finaliza realmente la conexin
y se recicla el puerto asignado.

Confiabilidad y control de flujo 36


TCP
establecimiento de conexin
Cada extremo debe obtener permiso del otro extremo antes de comenzar la
transmisin de datos. Un extremo tiene un rol activo (cliente) y el otro pasivo
(servidor).
Triple apretn de manos:
cliente servidor
1. El cliente indica su ISN (Initial
Sequence Number) y otros
SYN parmetros de conexin como el
seq: 1200
, ack: - MSS
2. El servidor confirma, indica su
ACK
SYN +
1 201 ISN y otros datos de conexin
q: 4 8 0 0, ack:
se
3. El cliente confirma y puede
ACK enviar datos en ese segmento
seq: 1201
, ack: 480
1

Confiabilidad y control de flujo 37


TCP
desconexin
Cualquiera de los extremos puede indicar al otro que ya no desea enviar ms datos
en esa conexin.
Cuadruple apretn de manos: 1. A indica a B que ya no le va a
enviar ms datos, pero seguir
recibiendo.
A B
2. B confirma que la comunicacin
FIN
seq: 2500 A->B queda cerrada. B puede
, ack: -
seguir enviando.
A CK
k: 2501
3. Cuando B termine indica a A
0, a c
seq: 70
0
que ya no le va a enviar ms
FIN + A
C K datos.
: 2501
01, ack
seq: 70 4. A confirma la peticin de B
ACK
seq: 2501
, ack: 700
2

Confiabilidad y control de flujo 38


TCP
Conexin/Desconexin
+---------+ ---------\ active OPEN
| CLOSED | \ -----------
+---------+<---------\ \ create TCB
| ^ \ \ snd SYN
passive OPEN | | CLOSE \ \
------------ | | ---------- \ \
create TCB | | delete TCB \ \
V | \ \
+---------+ CLOSE | \
| LISTEN | ---------- | |
+---------+ delete TCB | |
rcv SYN | | SEND | |
----------- | | ------- | V
+---------+ snd SYN,ACK / \ snd SYN +---------+
| |<----------------- ------------------>| |
| SYN | rcv SYN | SYN |
| RCVD |<-----------------------------------------------| SENT |
| | snd ACK | |
| |------------------ -------------------| |
+---------+ rcv ACK of SYN \ / rcv SYN,ACK +---------+
| -------------- | | -----------
| x | | snd ACK
| V V
| CLOSE +---------+
| ------- | ESTAB |
| snd FIN +---------+
| CLOSE | | rcv FIN
V ------- | | -------
+---------+ snd FIN / \ snd ACK +---------+
| FIN |<----------------- ------------------>| CLOSE |
| WAIT-1 |------------------ | WAIT |
+---------+ rcv FIN \ +---------+
| rcv ACK of FIN ------- | CLOSE |
| -------------- snd ACK | ------- |
V x V snd FIN V
+---------+ +---------+ +---------+
|FINWAIT-2| | CLOSING | | LAST-ACK|
+---------+ +---------+ +---------+
| rcv ACK of FIN | rcv ACK of FIN |
| rcv FIN -------------- | Timeout=2MSL -------------- |
| ------- x V ------------ x V
\ snd ACK +---------+delete TCB +---------+
------------------------>|TIME WAIT|------------------>| CLOSED |
+---------+ +---------+

Confiabilidad y control de flujo 39


Referencias
Se recomienda repasar y profundizar el contenido de este tema utilizando (al
menos) la siguiente bibliografa bsica:
A.S. Redes de computadores. Pearson Educacin, Cuarta edicin, 2003.
Captulos 6. Apartados 1 - 5.10
CISCO Systems. Inc. Gua del primer ao. CCNA 1 y 2. Cisco Press, 2003.
Captulos 9 y 19
Material e-learning CISCO CCNA Exploration
Mdulo 4

Vous aimerez peut-être aussi