Sunteți pe pagina 1din 52

Capa de transporte en Internet

Protocolos TCP y UDP


Transmission Control Protocol
(TCP)
Objetivo: Flujo confiable de bytes sobre
una red no confiable
Debe funcionar sobre IP (no da garantas)
Diferentes tecnologas de red en el medio
Robusto frente a problemas de la red
Recibe flujo de la capa superior y lo divide
en bloques que enva en segmentos
independientes (uno en cada paquete IP)
El receptor lo reensambla
2
Modelo de servicio de TCP
Conexin entre 2 sockets
Servicio full-duplex y punto a punto
Identificacin de los sockets formada por
direccin de capa de red (direccin IP) +
puerto (puerto equivalente a TSAP)
Las conexiones se identifican con las
direcciones de los sockets de ambos
extremos
Puertos 0 - 1023: puertos bien conocidos
(RFC 1700)
3
TCP
Las conexiones TCP son un flujo de bytes, no de
mensajes (no mantiene las fronteras de los
mensajes de capas superiores)
Emisor puede retrasar envo segn su poltica de
buffer
Existe push, una forma de indicar "urgencia" en el
envo. Emisor enviar inmediatamente y setear flag
Tambin se permite indicar que hay datos
urgentes (Por ejemplo, si queremos cortar una
tarea en un terminal remoto, ^C)
Tanto push como los datos urgentes estn casi
en desuso

4
Mensajes y bytes
TCP no mantiene las fronteras entre los
bloques recibidos de la capa de aplicacin,
ni los recibidos de la red
Ejemplo: Un mensaje (ABCD) es enviado
en 4 paquetes de capa 3 separados, pero
devuelto a la aplicacin destino como un
conjunto de bytes ABCD

5
Protocolo TCP
Unidad de datos (TPDU) = Segmento
Nmero de secuencia de 32 bits
Se numeran los bytes, no los segmentos
Reconocimientos cumulativos
Encabezado de 20 bytes (+ opciones)
Tamao mximo del segmento
carga del paquete IP: mximo 64 Kbytes
TCP trata de evitar fragmentacin en capas inferiores.
Por ello se autolimita a la MTU (maximun transfer
unit) de la red, tpico 1500 bytes.
Usa protocolo de ventanas deslizantes de
tamao de ventana variable
6
Formato del segmento TCP
Puerto de origen Puerto de destino

Nmero de secuencia

Nmero de reconocimiento

Largo UA P RS F Tamao de ventana


encab.
Suma comprobacin Puntero de urgente

Opciones (opcional)

Datos (opcional)

32 bits

7
Deteccin de errores
Simple suma de comprobacin (16 bits)
El mensaje se divide en palabras de 16 bits, y
se hace la suma en complemento a 1
Se hace el complemento a 1 (invertir 1s y 0s)
Se hace sobre los datos, el encabezado, y
un "pseudoencabezado" de capa 3

8
Pseudo encabezado para
suma de comprobacin
Se utiliza en el clculo del checksum de TCP
Checksum se hace sobre pseudoencabezado +
segmento
Viola la independencia de capas
Se modifica al cambiar de versin de IP!

Direccin IP de origen

Direccin IP de destino

00000000 Protocolo Largo del segmento (encabezado+datos)

32 bits
9
Recuperacin de errores y
prdidas
El transmisor inicia un temporizador al
transmitir segmento
Si no llega reconocimiento antes de expiracin
del temporizador, se retransmite
Si recibo 3 reconocimientos del mismo n
secuencia, asumo prdida
Se asume que siguen llegando segmentos,
faltando uno en el medio
Problema si la red reordena muchos
segmentos

10
Banderas
U - hay datos urgentes
A - Campo de reconocimiento vlido
P - Push (se pide celeridad para enviar los
datos a la capa de aplicacin)
R - Reset (cierre abrupto de conexin)
S - Syn (sincronizacin inicial de nmeros
de secuencia. Establecimiento)
F - Fin (solicitud de fin de conexin)
11
Opciones
El campo de Opciones permite
intercambiar datos no obligatorios
Se han ido agregando nuevas opciones
Maximum Segment Size (MSS)
Escala de la ventana (WSCALE)
Asentimiento selectivo (SACK)
Timestamp
Asentimiento negativo (NAK)
Otras
12
Opciones (cont.)
MSS: observamos el tamao mximo de
paquete que podemos mandar (dado por
las capas inferiores), y descontamos los
encabezados. Se enva en primer
segmento
Por ejemplo, en ethernet el mximo es 1500
bytes, por lo que MSS es 1460
NACK: avisar que no recib un
determinado segmento (no se usa)
Otras: veremos luego
13
Problemas con los segmentos
Prdidas de segmentos por rutas
congestionadas, enlaces cados, o errores
Segmentos llegan fuera de orden
Segmentos se duplican por retardos que
obligan a la retransmisin o por problemas
en las capas inferiores

14
Establecimiento de conexin
en TCP
Originador Destinatario
Solicitud de conexin
Bandera SYN = 1
Bandera ACK = 0
Secuencia = x

Respuesta
Bandera SYN = 1
Bandera ACK = 1
Secuencia = y
Reconocimiento = x + 1

Confirmacin
Bandera SYN = 0
Bandera ACK = 1
Secuencia = x + 1
Reconocimiento = y + 1

En este punto el originador En este punto el destinatario


da por establecida la da por establecida la
conexin conexin
15
Corte de conexin enIndicacin
TCPde corte de A
Host A Host B Bandera FIN = 1
Bandera ACK = 1
Datos (sec=z) Secuencia = w
Reconocimiento = z + 1
Confirmacin de corte
Bandera FIN = 0
Bandera ACK = 1
Secuencia = z + 1
Reconocimiento = w + 1
Ms datos!
+datos B puede seguir enviando
Indicacin datos
de corte de B
Bandera FIN = 1
ACK Bandera ACK = 1
Secuencia = t
Reconocimiento = w + 1
Confirmacin de corte
Bandera FIN = 0
Bandera ACK = 1
Secuencia = w + 1
En este punto el host A Reconocimiento
En = t + B1
este punto el host
da por cortada la conexin da por cortada la conexin
(l no va a enviar ms datos) 16
(l no va a enviar ms datos)
Corte abrupto de conexin
Indicacin de corte de A
Host A Host B Bandera FIN = 1
Bandera ACK = 1
Datos (sec=z) Secuencia = w
Reconocimiento = z + 1
Confirmacin de corte
Bandera FIN = 0
Bandera ACK = 1
Secuencia = z + 1
Reconocimiento = w + 1
+datos
Ms datos o FIN
RST

Reset de conexin
Bandera FIN = 0
Bandera ACK = 1
Bandera RST = 1
La aplicacin en el host A cierra la Secuencia = w+1
conexin y deja de escuchar (por Reconocimiento = z+1
ejemplo termina)
17
Corte abrupto de conexin
Los datos enviados luego de la
confirmacin de corte de B hacia A se
pierden
Los ltimos datos enviados por B y
reconocidos son hasta el byte z,
cualquier otro dato posterior debe
asumirse que se perdi (a menos que
recibamos ACK)

18
Colisin de conexiones

Caso Normal Colisin de conexiones


19
Manejo de los nmeros de
secuencia y reconocimiento
En TCP se numeran los bytes, no los segmentos
Un segmento sin datos no incrementa el
nmero de secuencia
El establecimiento y fin consumen 1 nmero de
secuencia
En el reconocimiento se indica el prximo n de
secuencia esperado
Los reconocimientos son acumulativos ACK(x)
=> reconozco hasta el x-1 y el siguiente que
espero ver es el x
20
Ejemplo: establecimiento

21
Ejemplo: transmisin de datos

22
Ejemplo: FIN simtrico

B podra
enviar datos

23
Estados de la conexin

24
Significado de los estados

25
Control de Flujo.
Poltica de transmisin en TCP
El objetivo del control de flujo es adaptar la
velocidad de envo a la capacidad del receptor
El receptor informa sobre el tamao de la
ventana (tamao de buffer disponible) en cada
segmento
Campo "Tamao de ventana en encabezado TCP
El transmisor no puede tener en trnsito ms
que RWIN bytes a partir del ltimo byte
reconocido
De esta manera, el receptor controla la cantidad
mxima de datos que el transmisor puede
enviarle en cada momento

26
Manejo de ventana del receptor
Podra destinarse buffer fijo en el receptor
La aplicacin puede solicitarlo
Muchos sistemas operativos adaptan
automticamente el tamao del buffer
Un buffer muy chico puede limitar la tasa de
transmisin (cmo?)
Si la aplicacin no lee los datos suficientemente
rpido, la ventana del receptor decrecer
Puede llegar a 0 si se llena todo el buffer

27
Posible bloqueo ante anuncio de
ventana de tamao 0
Problema: Se anuncia ventana 0, y
siguiente anuncio se pierde
Debe evitarse el bloqueo
Para ello, el emisor enviar un segmento que
fuerce una respuesta del receptor (prueba
para forzar re-anuncio de ventana):
Enviar un segmento con nmero de secuencia
menor al actual (y sin datos)
O enviar el prximo byte (que podra ser
descartado)

28
Manejo de ventana en TCP

29
Problemas de performance
Objetivo: evitar muchos segmentos chicos
Posibilidad de retardar el envo de reconocimiento
(hasta 500 ms) para esperar a tener datos para
transmitir (piggybacking)
Algoritmo de Nagle (en transmisor)
esperar el ack del primer segmento y mientras bufferear
se puede enviar tambin cuando se llena media ventana o el
tamao mximo del segmento
Malo en aplicaciones interactivas remotas (mouse)
Sndrome de la ventana tonta (solucin de Clark)
Aviso de ventana de 1 byte (o muy pequea)
Clark: No avisar disponibilidad de ventana hasta tener libre
segmento mximo o mitad del buffer
30
Sndrome de Ventana tonta

31
Congestin en la red
La congestin se da cuando se sobrepasa
la capacidad de algn elemento en la red
Tpicamente algn enlace o la CPU de algn
enrutador
Los efectos observados incluyen aumento
de retardo y prdidas
Si no se controla, lleva a un uso muy
ineficiente de la red

32
Ejemplo
lin
timeout
copy l'in lout

Host B

33
Congestin
R/2

No todos los

retardo
paquetes llegan. Y
lout

algunos son
duplicados!

lin R/2 lin R/2

El retardo crece
Se presentan prdidas
Se retransmiten segmentos innecesariamente
(por timeout debido al retardo)
34
Control de congestin
No mandar ms datos que los que la red
puede aceptar
Complementario al control de flujo
Idea: Entubado
Si tenemos disponible un ancho de banda B, y
el retardo de ida y vuelta es 2T, queremos
mandar:
V = B*2T
Problema: Cmo conocer B
35
Control de congestin en TCP
Hiptesis: las prdidas de paquetes son
por congestin (los enlaces son buenos)
Problema en enlaces inalmbricos con muchas
prdidas
El transmisor maneja una ventana de
congestin, que actualiza dinmicamente
de acuerdo a las condiciones de la red
Mantiene tambin un valor "Umbral"
El transmisor no permite que haya en
trnsito ms bytes que los que indica la
ventana de congestin 36
Manejo de la Ventana de
congestin
Llamamos cwnd al tamao de la ventana
Se define tambin un tamao de umbral
(ssthresh)
Iremos variando el tamao cwnd
Se identifican 2 perodos bien definidos:
Slow start: al comienzo, al no conocer la capacidad
disponible, se comienza con una ventana chica pero
se hace crecer rpidamente
Congestion Avoidance: al (posiblemente) acercarnos
a la congestin, hacemos crecer despacio la ventana
Ante prdidas, bajamos drsticamente la tasa de
transmisin (disminuyendo la ventana)

37
Slow start
Valor inicial de cwnd = 1 MSS
Versiones modernas suelen comenzar con un tamao
un poco ms grande
Por cada byte reconocido, agrega 1 byte a la
ventana (a cwnd)
Al reconocerse toda la ventana enviada, esta se
duplica
Si tenemos prdidas, bajamos el valor de cwnd
Comportamiento se mantiene hasta que cwnd
llega al valor del umbral (ssthresh)
38
Ventana de congestin (slow start)
cwnd[n] = cwnd [n-1] + [Nmero de bytes ACK]

Todos los segmentos de la ventana ....

cwnd [n] = 2 x cwnd[n-1]

39
Congestion Avoidance
A partir del umbral se asume que
podemos estar ms cerca de la congestin
se incrementa cwnd de forma lineal
Se aumenta en 1 segmento por cada ventana
completa reconocida
Si no hay prdidas, podramos crecer
indefinidamente
Usualmente nos termina limitando la ventana
del receptor
40
Ventana de congestin
(congestion avoidance)
cwnd [n] = cwnd [n-1] + (MSS/cwnd[n-1]) x
[Nmero de bytes ACK]

Todos los segmentos de la ventana ....

cwnd [n] = cwnd[n-1] + MSS

41
Comportamiento ante prdidas
Timeout:
fijar umbral (ssthresh) a la mitad del valor de
la ventana actual (NO a la mitad del umbral
actual)
Bajar la ventana (cwnd) a 1 segmento
Retomar en fase slow start

42
Ventana de congestin (timeout)
cwnd = 1 MSS
ssthresh[n] = cnwd [ n-1] /2 (la ltima ventana)

fase = slow start

43
Comportamiento ante prdidas
Reconocimientos repetidos:
fijar umbral a la mitad del valor de la ventana
actual
Bajar cwnd al valor del umbral (TCP Reno)
Se siguen recibiendo segmentos, as que se asume
que la congestin no es tan importante

44
Ventana de congestin (prdidas)

45
Ventana de Congestin
Todo los segmentos de forma
instantnea (idealizacin cuando el tiempo
de serializacin es mucho menor que el
valor de RTT).
Observar que el comportamiento esta
basado en RTT, que vara dinmicamente.
Cmo elijo el valor de los
temporizadores para los timeout?

46
Variantes modernas
Opcionalmente se agrega el uso de
reconocimientos selectivos
Permite retransmitir solo lo que se perdi
Se estn investigando nuevas maneras de
realizar el control de congestin
Eficiencia
Equidad en el reparto de recursos
Problemas para capacidades elevadas en la
red
47
Otras opciones "modernas"
Window Scale: ventana mxima de 64 KB
(representada en 16 bits) qued chica
Calculen la velocidad mxima de transmisin en
un enlace de 1Gbps y 100ms de RTT con una
ventana de receptor de 64 KB
Opcin "escala de ventana: indica cuantos bits
"0" agregar a la derecha del valor de buffer
SACK (Reconocimiento selectivo)
Permite indicar qu segmentos se recibieron
correctamente posteriores al indicado en el
campo ACK del segmento 48
Re-uso de los nmeros de
secuencia
Enlace de 56 Kbps -> los nmeros de secuencia
se reutilizan en 3.6 das
1 Gbps -> se reutilizan en 17 segundos!!
Tiempo de vida mximo asumido por TCP de un
paquete en la red: 120 Segundos!
Solucin: Se utiliza el nmero de secuencia junto
con una opcin Timestamp para detectar
duplicados viejos
Receptor debe verificar que el valor de timestamp sea
montono creciente, descartando segmentos antiguos
Timestamp tambin sirve para mejorar el clculo del
RTT
49
Gestin de temporizadores
Varios temporizadores
el ms importante es el de retransmisin
Jacobson:
RTT[n] = a RTT[n-1] + ( 1 - a ) M[n] a = 7/8
D[n] = b D[n-1] + (1 b) |RTT[n-1] M[n]| b = 3/4
Timeout = RTT + 4 * D
Variantes agregadas por Karn:
No calcular sobre retransmisiones
Se duplica el timeout a cada prdida
Moderno: se utiliza la opcin Timestamp para
mejorar el clculo del RTT
Maneja varios temporizadores ms
50
UDP
Servicio de datagramas
No orientado a conexin
Solo se agrega:
Suma de comprobacin
Puertos de origen y destino, para multiplexar
diversas aplicaciones

51
Formato del segmento UDP
Brinda servicios no orientados a conexin
Bsicamente es un paquete IP con un
encabezado mnimo de capa de transporte

Puerto de origen Puerto de destino

Largo del segmento Checksum

Datos (opcional)

32 bits

52

S-ar putea să vă placă și