Вы находитесь на странице: 1из 61

Captulo 13

Servicio de Transporte de Flujo Fiable TCP

13.1 Introduccin

UDP da el servicio de paquetes sin conexin no


fiable.

TCP Tansmission Control Protocol da el 2do. servicio ms


importante, el envo de flujo fiable.

TCP es mucho ms funcional que UDP.

Pero su implementacin es mucho ms compleja.

TCP se usa sobre una red muy simple como


Ethernet, o sobre una red muy compleja como
2 Internet.

13.2 Necesidad de entrega de flujo

En niveles ms bajos las redes dan un servicio no fiable.

Paquetes se pueden perder, destruir, duplicar, desordenar o


delay.

Hay aplicaciones que necesitan enviar grandes volmenes


de informacin.

Hacerlo con un sistema sin conexin no fiable es difcil.

Las aplicaciones tendran que incluir mdulos de deteccin


y recuperacin de errores.

Por eso la existencia de TCP.


3

13.3 Cinco propiedades del servicio de entrega fiable

1- Idea de flujo. Los datos se envan en forma de flujo de


bytes, que llega al destino en el mismo orden que fue
enviado.

2- Conexin de circuito virtual. Transferir flujo es como


una llamada telefnica: la aplicacin fuente llama al
destino.

TCP da un servicio orientado a la conexin end-to-end.

Luego de establecer la conexin lgica se inicia la


transferencia.

4 El

sw de protocolo en los dos lados verifica que los datos

Si falla la conexin, TCP reporta a la aplicacin.

Es circuito virtual porque las aplicaciones ven la


conexin como un circuito de hw dedicado.

Pero es una ilusin producida por el servicio que da


TCP.

3- Transferencia buffered. Las aplicaciones envan


un flujo de octetos por un circuito virtual TCP.

En el receptor TCP entrega octetos en el mismo


5 orden.

TCP agrupa el flujo de octetos en paquetes lo


suficientemente grandes para minimizar el trfico.

Si la aplicacin genera bloques de datos muy


grandes, TCP los divide en pedazos ms pequeos.

TCP da el mecanismo push para forzar la


transferencia aunque no se haya llenado el buffer.

As se disminuyen los retardos.


6

4- Flujo no estructurado. TCP no distingue flujos de


datos estructurados de las aplicaciones.

Ejemplo: registros de un rol de pagos de empleados.

Aplicaciones acuerdan un formato de datos a priori.

5Conexin
full-duplex.
TCP/IP
permite
transferencia simultanea en ambos sentidos.

Una aplicacin puede terminar el flujo en un sentido


y seguir con el otro.
Full dplex permite a TCP enviar informacin de
control a la fuente, reduciendo el trfico piggybacking.

13.4 Confiabilidad

Envo confiable: sin errores, prdida y duplicacin.

Cmo lograrlo si IP ofrece un servicio no fiable?

Se logra con la tcnica: acuso de recibo con


retransmisin.

El receptor enva a la fuente ACKs.

El emisor registra cada paquete enviado y espera la


confirmacin antes de enviar el siguiente paquete.
9

El emisor inicia un temporizador con cada paquete


enviado.
Si el temporizador expira antes de recibir ACK
retransmite el paquete.

10

11

12

Duplicacin de paquetes

El paquete enviado llega satisfactoriamente a su


destino.

ste devuelve ACK al emisor, que en el camino se


pierde.

El temporizador del emisor expira y retransmite.

El receptor recibe dos paquetes iguales.

Este problema se soluciona numerando cada


paquete.
13

As, el emisor sabe qu ACK corresponde a qu


paquete enviado.

Con esta numeracin el receptor sabe si algn


paquete lleg duplicado y lo descarta.

14

13.5 Mtodo de ventanas deslizantes

Hacen ms eficiente la transmisin de flujo.

En la figura 13.1 los datos slo fluyen en un solo


sentido, aunque la red sea capaz de trasmitir en
ambos.

La red est muerta cuando los sistemas procesan


informacin.

Significa desperdicio de ancho de banda pues en los


tiempos para recibir el acuso, no se envan ms
paquetes.
15

Una ventana deslizante es ms compleja que un


simple acuso de recibo.

Una ventana deslizante usa mejor el ancho de


banda.

El emisor puede enviar mltiples paquetes antes de


esperar el acuso de recibo.

16

17

El protocolo usa una ventana de tamao fijo sobre la


secuencia de paquetes a transmitir.

Se transmite todos los paquetes que estn dentro de


la ventana.

Si la ventana es de ocho paquetes, el emisor


transmite los ocho paquetes antes de recibir un ack.

Cuando el emisor recibe ack para el 1er. paquete, la


ventana se desliza y enva el siguiente paquete.
18

El desempeo de los protocolos de ventana


deslizante depende del tamao de la ventana y del
ancho de banda.

Para un ptimo desempeo, el tamao de la


ventana no debe ser ni muy grande ni muy pequeo.

El protocolo recuerda cules paquetes han recibido


ack.

Se mantiene un temporizador para cada paquete


enviado.
19

El receptor mantiene una ventana


aceptando paquetes y acusando recibos.

Se reconocen tres conjuntos de paquetes:

anloga,

Los que estn a la izquierda de la ventana han sido


enviados y confirmados.

Los que estn dentro de la ventana han sido transmitidos.

Los que estn a la derecha de la ventana los que aun no


han sido transmitidos.

20

21

13.6 Protocolo de control de transmisin TCP

TCP es un protocolo, no un programa.

Protocolo: estndar que luego se implementa en sw.

TCP especifica: formato de datos y acks que los


extremos intercambian para lograr envo confiable.

Envo confiable: sin prdida, duplicacin y dao de


paquetes

22

TCP especifica las operaciones que se deben


realizar.

Flexibilidad: No especifica la interfaz con las


aplicaciones.

La interfaces las da el SO y son utilizadas por los


programadores.

Las interfaces son los sockets.

TCP es implementado en mltiples SOs.


23

13.7 Puertos, conexiones y extremos

Mltiples
aplicaciones
concurrentemente.

Multiplexa-demultiplexa
aplicaciones.

Nmero de
aplicacin.

Circuito virtual es la abstraccin fundamental, no el


puerto de protocolo.

24CV

puerto

de

se

comunican

trfico

desde-hacia

protocolo

identifica

es la conexin entre dos extremos.

la

Aparentemente un endpont es una aplicacin de


red.

Pero no, endpoint es un par de enteros: host, puerto.

Host es la direccin IP.

Puerto es un puerto TCP.

Ejemplo: 192.188.48.2, 25

25

Ejemplo de conexin, 2 conexiones a un mismo


host.

192.188.48.2, 25 y 128.10.2.3, 1069

128.9.0.32, 1184 y 128.10.2.3, 53

La abstraccin de conexin permite a mltiples


conexiones compartir un endpoint.

128.9.0.32, 1184

128.2.254.139, 1184

y 128.10.2.3, 53
y 128.10.2.3, 53

Se usan los dos extremos para identificar una


26
conexin.

Un servidor de red permite mltiples conexiones


simultneas con un solo nmero de puerto local.

Ejemplos:
Protocolo

27

puerto

FTP

21

TELNET

23

SMTP

25

DNS

53

HTTP

80

28

13.8 Aberturas activas y pasivas de conexiones

Previamente los extremos acuerdan una conexin


TCP.

El solicitante realiza un active open al SO pidiendo


una conexin.

El solicitado realiza una passive open al SO quien


asigna un puerto TCP.

Los dos mdulos TCP se comunican para crear la


conexin.

Ahora las aplicaciones pueden intercambiar datos.


29

13.9 Segmentos, flujos y nmeros de secuencia

TCP recibe de la aplicacin un flujo de bytes que los


agrupa en segmentos para la transmisin.

Un segmento se encapsula en un datagrama IP.

La ventana deslizante permite: transmisin eficiente


y control de flujo extremo a extremo.

Eficiencia: se aprovecha mejor el BW.

Control de flujo: tamao de la ventana.

Se puede enviar varios segmentos antes de recibir


un ack.
30

Se aumenta el throughput al mantener la red ocupada.

La ventana opera a nivel de byte, no de segmento.

Los octetos de datos se numeran secuencialmente a


partir de ISN (Initial Sequence Number).

El primer byte de datos a enviar tiene el nmero ISN + 1

Sequence Number en la cabecera de un segmento de


datos indica la posicin secuencial en el flujo del 1er.
byte de datos.

El emisor usa tres punteros para cada conexin.


31

32

El puntero izquierdo separa los octetos envidos y


confirmados de los enviados y no confirmados.

El puntero derecho marca los octetos que sern


enviados luego de recibir confirmacin de los
anteriores.

El puntero central separa los octetos enviados de los


no enviados.

Los octetos dentro de la ventana se envan sin


33retardo.

As, el puntero central se mueve de izq. a der. sin


retardo.

El receptor tambin tiene una ventana similar.

La conexiones TCP son full duplex.

TCP en cada extremo mantiene dos ventanas por


conexin: uno para envo y otro para la recepcin.

34

13.10 Tamao variable de la ventana y control de flujo

TCP puede variar el tamao de la ventana en el


tiempo.

Ack especifica los octetos que el receptor ha


recibido.

Adems indica los octetos que puede recibir:


anuncio de ventana.

ste indica el nuevo tamao de ventana del


receptor.

35Segn

el caso, el emisor aumenta o disminuye el

Anuncio de ventana = 0, el emisor deja de enviar


octetos.

Dos controles de flujo independientes:

extremo a extremo
entre sistemas intermedios.

Congestionamiento:
sobrecargados.

Para ello se aplican controles de congestin.


36

sistemas

intermedios

TCP no tiene un mecanismo explcito para controlar


la congestin.

Pero una buena implementacin ayuda a detectar y


recuperarse de una congestin.

Un buen esquema de retransmisin evita la


congestin, una mala implementacin la provoca y
agrava.

37

13.11 Formato del segmento TCP

Segmento: unidad de datos entre dos mquinas a nivel


de TCP.

Se usan segmentos para:

establecer conexiones,

transferir datos,

enviar ACKs,

anunciar tamaos de ventana,

cerrar conexiones.

TCP usa piggybacking: Un segmento puede llevar desde


A a B un ack y tambin transportar datos de usuario.
38

39

La cabecera contiene identificacin e informacin de


control.

Source port y destination port: programas de aplicacin


en los extremos de la conexin.

Sequence number: nmero de byte en el flujo de datos


del primer byte de datos del segmento.

Acknowledgement number: nmero de byte que el


destino espera recibir de la fuente.

Sequience number se refiere al flujo en la misma


direccin del segmento y ack se refiere al flujo en
40
direccin contraria.

Hlen indica la longitud de la cabecera del segmento


medido en mltiplos de 32 bits.

Reserved es para usos futuros.

Code bits, indica si el segmento transporta datos,


acks, establecimiento o cierre de conexin.

Window, El receptor controla el flujo variando el


tamao de la ventana, indicando el nmero de bytes
a aceptar.
41

El segmento de acuse de recibo le permite


destino:

al

Informar a la fuente la recepcin exitosa de loa datos.


Controlar el flujo a travs del campo window.

El estndar no requiere un acuse de recibo


individual para cada segmento.

42

Fuente
S.N.

ACK

20

21

Destino
S.N.
ACK
window
400

21

401

24

10

401

22
23

TCP mantiene un registro de los bytes enviados y recibidos


43

Ejemplo:

44

ISN = 0

El primer byte de datos es 1.

El receptor ha recibido datos y enviado un ack de 2000 bytes (ack number =


2001).

Tambin avisa que tiene un buffer de entrada de 6000 bytes (window =


6000).

El emisor est enviando un segmento de 1000 bytes desde sequence


number=4001.

Pero no ha recibido a cuse de recibo de los bytes desde el 2001 pero


contina enviado bytes dentro de la ventana.

Si el servidor llena la ventana y no recibe ack, volver a enviar desde el byte


2001.

45

13.13 Tamao de segmento mximo

No todos los segmentos son del mismo tamao.


Pero los extremos necesitan acordar un tamao.
Se lo hace a travs del campo OPTIONS.

Una forma es especificar MSS maximum segment

size.
Un PC que tiene un buffer pequeo se conecta a
un super computador, pueden negociar un MSS.

Es importante para computadores conectados en


LANs de alta velocidad para hacer un buen uso del
46bandwidth.

Si los extremos estn en la misma red fsica, TCP


calcula un tamao de segmento tal que los
datagramas IP sean iguales al MTU de la red.
Se los extremos no estn en la misma red, pueden
intentar descubrir el mnimo MTU a lo largo del
camino entre ellos, o.
Elegir un tamao mximo de segmento de 536 que
es igual al tamao por omisin de un datagrama IP
menos el tamao de las cabeceras de IP y TCP.
47

Elegir un buen MSS es difcil pues el desempeo


puede ser pobre por segmentos muy grandes o muy
pequeos.
Con pequeos segmentos el uso de la red es
pequea.

48

El tamao mnimo de las cabeceras TCP e IP es 20


octetos c/u sumando 40 bytes.
Si el datagrama IP lleva slo un byte de datos de usuario
alcanza un rendimiento o throughput de slo 1/41.
No se toma en cuenta el tamao de la cabecera de la
trama y los espacios entre tramas.

Segmentos grandes dan lugar a datagramas


grandes.
Si los datagramas atraviesan redes con MTU
pequeo, IP tiene que fragmentarlos.
Si un fragmento IP se pierde, todos los fragmentos
tienen que retransmitirse.
Incrementar el tamao del segmento sobre el umbral
de fragmentacin merma que el datagrama llegue al
destino.
As se decrementa el throughput rendimiento.
49

El tamao ptimo del segmento es cuando sus


datagramas IP no tienen que fragmentarse.
Encontrar el tamao ptimo del segmento es difcil:
1.

2.

3.

50

Muchas
implementaciones
TCP
no
incluyen
mecanismos para hacerlo.
Los ruteadores pueden cambiar de rutas dinmicamente
y los datagramas podran tener que fragmentarse.
El tamao depende de las cabeceras de los protocolos
de bajo nivel.

13.14 Clculo del Checksum TCP

Este campo cuida la integridad de la cabecera y


datos.
El emisor procede idntico al checksum de UDP.
TCP antepone una pseudo-cabecera al segmento,
rellena con 0s para hacerlo mltiplo de 16 bits.
Luego realiza la suma de verificacin complemento
a 1de 16 bits.
TCP no toma en cuenta la pseudo-cabecera y el
relleno en la longitud del segmento ni lo transmite.
Antes de la suma el campo checksum est en cero.

51

52

13.15 Acuses de recibo y retransmisin

TCP enva datos en segmentos de longitud variable.


Los segmentos retransmitidos pueden incluir ms
datos que el original.
Los acks no se pueden referir fcilmente a
datagramas IP o segmentos TCP.
Ms bien los acks se refieren a posicin en el flujo
usando nmeros de secuencia de flujo.
El receptor rene los bytes de datos de los
segmentos recibidos y reconstruye una copia exacta
del flujo enviado
53

Ya
que
datagramas
pueden
perderse
o
desordenarse, el receptor usa los SN para reordenar
los segmentos.
Un ack TCP especifica el nmero de secuencia del
siguiente byte que el receptor espera recibir.
EL esquema de ack TCP se llama acumulativo
porque ste reporta cunto del flujo se ha
acumulado.
Este esquema tiene una ventaja y una desventaja.
La ventaja es que es fcil de implementar y no es
54
ambiguo

Desventaja: si se transmite, por ejemplo 6


segmentos y slo el primero no lleg, hay dos
alternativas:
1. Se retransmite todo de nuevo aunque los dems
segmentos
hayan
llegaron
exitosamente:
ineficiente.
2. Slo se retransmite el primer segmento y se
espera a que llegue el ack pidiendo continuar con
la transmisin desde el sptimo segmento:
ineficiente.

55

13.16 Timeout y retransmisin

Cada vez que el emisor enva un segmento, TCP


inicia un temporizador timer y espera por un ack.

Si el timer espira TCP asume que el segmento se


da o se perdi, entonces lo retransmite.

TCP se dise para ser usado en un ambiente


internet.

Para llegar al destino un segmento puede a travesar


una red LAN de alta velocidad, o muchas redes
intermedias.
56

As es imposible saber a priori cunto tardar en


llegar al emisor un ack.
Ms an, el retardo en cada ruteador depende del
trfico.
El retardo ida y vuelta round trip del ack puede
variar mucho de un instante a otro.

57

58

TCP monitorea el desempeo de cada conexin y


deduce los valores de espera timeouts.
A medida que cambia el desempeo de la conexin
TCP recalcula el valor del timeout.
TCP obtiene una muestra de round trip time en base
al tiempo en el que se enva un paquete y el tiempo
en que se recibe el ack.
Cuando se obtiene una nueva muestra, TCP ajusta
el promedio de round trip time para esa conexin.
59

TCP almacena el round trip time - RTT estimado


como un promedio ponderado y usa las nuevas
muestras round trip para cambiar el promedio.
Ejemplo:

RTT = a*RTT_anterior + ((1 a)*round_trip_sample)

0 <= a <= 1
Para valores de a cercanos a 1, RTT responde
lentamente.
Para valores de a cercanos a 0, RTT responde
rpido.
60

Cuando se enva un paquete, TCP calcula el tiempo


de espera timeout en funcin de RTT.

Timeout = b*RTT

b>1
b cerca a 1 detecta rpido paquetes perdidos y
mejora el throughput. TCP no espera mucho para
retransmitir.
b = 1 cualquier pequeo retardo causar
retransmisin y gasta ancho de banda bw.
Iniciales especificaciones recomendaron b = 2.
61

Вам также может понравиться