Anda di halaman 1dari 41

Capa de transporte en

Internet

Protocolos TCP y UDP


Tipos de servicios ofrecidos
TCP (Transmission Control Protocol)
 Orientado a conexión
 Confiable
UDP (User Datagram Protocol)
 No orientado a conexión
 No confiable

2
TCP: Transmission Control
Protocol
Objetivo: Flujo confiable de bytes sobre una
red no confiable
 Debe funcionar sobre IP (que no da garantías)
 Diferentes tecnologías de red en el medio
 Robusto frente a problemas de la red
Recibe flujo de la capa superior y lo divide en
bloques que envía en segmentos
independientes (uno en cada paquete IP)
El receptor lo re-ensambla

3
Modelo de servicio de TCP
Conexión entre 2 “sockets”
 Servicio full-duplex y punto a punto
Identificación de los sockets formada por:
 dirección de capa de red (dirección IP)
 puerto (equivalente a TSAP)
Las conexiones se identifican con las
direcciones de los sockets de ambos
extremos:
 IP origen
 puerto de origen
 IP destino
 puerto destino
4
Mensajes y bytes
TCP no mantiene las fronteras entre los
bloques recibidos de la capa de aplicación, ni
los recibidos de la red
Ejemplo: Un mensaje (ABCD) es enviado en 4
paquetes de capa 3 separados, pero devuelto
a la aplicación destino como un conjunto de
bytes ABCD

5
Protocolo TCP
Unidad de datos (TPDU) = Segmento
Número de secuencia de 32 bits
Se numeran los bytes, no los segmentos
Encabezado de 20 bytes (+ opciones)
Tamaño máximo del segmento
 carga del paquete IP: máximo 64 Kbytes
 MTU (maximun transfer unit) de la red, típico
1500 bytes. TCP trata de evitar fragmentación
en capas inferiores
Usa protocolo de ventanas deslizantes de
tamaño de ventana variable
6
Formato del segmento TCP
Puerto de origen Puerto de destino

Número de secuencia

Número de reconocimiento

Largo U A P R S F Tamaño de ventana


encab.
Suma comprobación Puntero de urgente

Opciones (opcional)

Datos (opcional)

32 bits

7
Asignación de puertos
16 bits o sea 0 a 65535
Puertos 0 - 1023: puertos bien conocidos
(definidos en la RFC 1700)
Puertos 1024 al 65535: se pueden usar
libremente

8
Detección de errores
Simple suma de comprobación (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

9
Pseudo encabezado para
suma de comprobación
Se utiliza en el cálculo del checksum de
TCP
 Checksum se hace sobre pseudoencabezado + todo
el contenido del segmento (incluyendo datos)
Viola la independencia de capas
Se modifica al cambiar de versión de IP!
Dirección IP de origen

Dirección IP de destino

00000000 Protocolo Largo del segmento (encabezado+datos)

32 bits
10
Banderas
S - Syn (sincronización inicial de números de
secuencia en el establecimiento de conexión)
F - Fin (solicitud de fin de conexión)
R - Reset (cierre abrupto de conexión)
A - Campo de reconocimiento válido
U - datos urgentes (prácticamente en desuso)
P - Push (se pide celeridad para enviar los
datos a la capa de aplicación, prácticamente
en desuso)

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 tamaño máximo de
paquete que podemos mandar (dado por las
capas inferiores), y descontamos los
encabezados. Se envía en primer segmento
 Por ejemplo, en ethernet el máximo 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
Pérdidas de segmentos por rutas
congestionadas, enlaces caídos o errores
Segmentos que llegan fuera de orden
Segmentos que se duplican por retardos que
obligan a la retransmisión o por problemas en
las capas inferiores

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

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

Confirmación
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
conexión conexión
15
Corte de conexiónIndicación
en TCP de corte de A
Host A Host B Bandera FIN = 1
Bandera ACK = 1
Datos (sec=z) Secuencia = w
Reconocimiento = z + 1
Confirmación de corte
Bandera FIN = 0
Bandera ACK = 1
Secuencia = z + 1
Reconocimiento = w + 1
Más datos!
+datos B puede seguir enviando
Indicación datos
de corte de B
Bandera FIN = 1
ACK Bandera ACK = 1
Secuencia = t
Reconocimiento = w + 1
Confirmación 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 conexión da por cortada la conexión
(él no va a enviar más datos) (él no va a enviar más datos)16
Corte abrupto de conexión
Indicación de corte de A
Host A Host B Bandera FIN = 1
Bandera ACK = 1
Datos (sec=z) Secuencia = w
Reconocimiento = z + 1
Confirmación de corte
Bandera FIN = 0
Bandera ACK = 1
Secuencia = z + 1
Reconocimiento = w + 1
+datos
RST

Reset de conexión
Bandera FIN = 0
Bandera ACK = 1
La aplicación en el host A cierra Bandera RST = 1
Secuencia = w+1
la conexión y deja de escuchar Reconocimiento = z+1
(por ejemplo termina)!!
17
Corte abrupto de conexión
Los datos enviados luego de la confirmación
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
Manejo de los números de
secuencia y reconocimiento
En TCP se numeran los bytes, no los
segmentos
 Un segmento sin datos no incrementa el
número de secuencia
El establecimiento y fin de conexión
consumen un (1) número de secuencia
En el reconocimiento se indica el próximo nº
de secuencia esperado

19
Ejemplo: establecimiento
Flags: SYN=1
, ACK=0
Seq=11, Ack=
?, 0 bytes carg
a útil

Y N=1, ACK=1
Flags: S
, 0 by t es carga útil
=12
Seq=32, Ack

Flags: SYN=0
, ACK=1
Seq=12, Ack=
33, 0 bytes ca
rga útil

20
Ejemplo: transmisión de
datos
Seq=12, Ack=
33, 15 bytes
carga útil

0 by t es ca rga útil
=27,
Seq=33, Ack

Seq=27, Ack=
33, 1000 byte
s carga útil
Seq=1027, A
ck=33, 10 by
tes carga útil

4 b y t es c arga útil
=1037,
Seq=33, Ack
Seq=1037, A
ck=37, 0 byte
s carga útil

21
Ejemplo: FIN simétrico
Flags: FIN=1,
ACK=1
Seq=1037, A
ck=37, 0 byte
s carga útil

, ACK=1
Flags: FIN=0 8, 0 b yt e s carga útil
=103
Seq=37, Ack
B podría
, ACK=1 enviar
Flags: FIN=1 8, 0 b yt e s carga útil datos
=103
Seq=37, Ack

Flags: FIN=0,
ACK=1
Seq=1038, A
ck=38, 0 byte
s carga útil

22
Estados de la conexión
Punteado:
camino del
servidor
Continuo:
camino del
cliente

23
Significado de los estados

24
Control de Flujo
Control de flujo: adaptar la velocidad de envío
a la capacidad del receptor
El que recibe informa sobre el tamaño de la
ventana (tamaño de buffer disponible)
 Campo "Tamaño de ventana” en encabezado TCP

De esta manera, el receptor controla la


cantidad máxima de datos que el transmisor
puede enviarle en cada momento
Si la aplicación no lee los datos
suficientemente rápido, la ventana del
receptor decrecerá
 Puede llegar a “0” si se llena todo el buffer
25
Posible bloqueo por anuncio
de ventana de tamaño 0
Problema:
 El receptor anuncia ventana = 0
 Más tarde cuando tiene ventana disponible
anuncia el nuevo valor de ventana
 Este nuevo anuncio se pierde
 Se produce un bloqueo
Solución:
 El emisor enviará un segmento que fuerce una
respuesta del receptor y así obtener un nuevo
anuncio de ventana:
 Enviar un segmento con número de secuencia menor al
actual (y sin datos)
 O enviar el próximo byte (que podría ser descartado) 26
Manejo de ventana en TCP

27
Problemas de performance
Si se envían segmentos con pocos datos de
usuario, el peso de los encabezados es alto y
por tanto la performance baja
Cómo evitar enviar muchos segmentos
“chicos”?
 Piggybacking
 Algoritmo de Nagle
 Síndrome de ventana tonta y solución de Clark

28
Piggybacking
Evitar enviar segmentos que solamente
tengan reconocimientos
Se permite a TCP la posibilidad de retardar el
envío de reconocimiento (hasta 500 ms) para
esperar a tener datos para transmitir

29
Algoritmo de Nagle
Se aplica en el transmisor
La idea es que en tránsito no haya más de un
segmento “chico”
Se envía el primer segmento y se espera el ACK
Mientras tanto se acumulan los datos de la
capa superior de modo que el próximo
segmento vaya más lleno
Se puede enviar también cuando se llena media
ventana o el tamaño máximo del segmento
(MSS)
Malo en aplicaciones interactivas remotas
(mouse) 30
Síndrome de la ventana
tonta: Solución de Clark
Si el receptor anuncia 1 byte o un tamaño de
ventana muy pequeño, está obligando al
transmisor a enviar segmentos “chicos”
La Solución de Clark es No avisar
disponibilidad de ventana hasta tener libre un
segmento de tamaño máximo (MSS) o la
mitad del buffer

31
Síndrome de Ventana tonta

32
Control de congestión
No mandar más 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: Cómo conocer B

33
Control de congestión en
TCP
Hipótesis: las pérdidas de paquetes son por
congestión (los enlaces son buenos)
 Problema en enlaces inalámbricos con muchas
pérdidas
El transmisor maneja una ventana de
congestión, que actualiza dinámicamente de
acuerdo a las condiciones de la red
 Mantiene también un valor "Umbral"
El transmisor no permite que haya en tránsito
más bytes que los que indica la ventana de
congestión
34
Ventana de congestión
El tamaño de la Ventana comienza en 1 MSS
(hay variantes) y 64 Kbytes como umbral
Fase “Slow start”: agrega 1 byte a la ventana
por cada byte reconocido

Al reconocerse toda la ventana enviada, esta se duplica
A partir del umbral sigue linealmente
 Se aumenta 1 segmento por cada ventana completa
reconocida
Si hay pérdidas (timeout):
 Se fija el umbral a la mitad del valor de la
ventana actual (NO a la mitad del umbral
actual), y baja la ventana a 1 segmento
35
Ventana de congestión

36
Variantes modernas
Fast retransmit/fast recovery
 Si me doy cuenta que se perdió un solo
segmento (recibo SACK o recibo ACKs
duplicados), retransmito y bajo umbral, pero la
ventana la pongo en el valor del umbral
 La suposición es que se perdió por un evento aislado,
o que la congestión es “leve”
Se están investigando nuevas maneras de
realizar el control de congestión
 Eficiencia
 Equidad en el reparto de recursos

37
Otras opciones "modernas"
Window Scale: ventana máxima de 64 KB
“quedó chica”
 Calcular la velocidad máxima de transmisión
en un enlace de 1Gbps y 100ms de RTT con
una ventana de receptor de 64 KB
 La "escala de ventana" indica cuantos bits "0"
agregar a la derecha
SACK (Reconocimiento selectivo)
 Permite indicar qué segmentos se recibieron
correctamente posteriores al indicado en el
campo ACK del segmento

38
Reuso de los números de
secuencia
Enlace de 56 Kbps -> los números de
secuencia se reutilizan en 3.6 días
1 Gbps -> se reutilizan en 17 segundos!!
 Tiempo de vida máximo asumido por TCP de un
paquete en la red: 120 Segundos!
Solución: Se utiliza el número de secuencia
junto con una opción Timestamp para
detectar duplicados viejos
 Receptor debe verificar que el valor de timestamp sea
monótono creciente, descartando segmentos antiguos
 Timestamp también sirve para mejorar el cálculo del RTT

39
Gestión de temporizadores
TCP maneja varios temporizadores, el más
importante es el de retransmisión
Jacobson:
 RTT[n] = a RTT[n-1] + (1-a) M[n] a = 7/8
 D[n] = b D[n] + (1-b) |RTT[n] – M[n]| b = 3/4
 Timeout = RTT + 4 * D
Karn:
 No calcular sobre retransmisiones
 Se duplica el timeout a cada pérdida

Moderno: se utiliza la opción Timestamp para


mejorar el cálculo del RTT
40
UDP: User Datagram Protocol
Servicio de datagramas, no orientado a
conexión
Básicamente es un paquete IP con un
encabezado mínimo de capa de transporte

Puerto de origen Puerto de destino

Largo del segmento Checksum

Datos (opcional)

32 bits
41

Anda mungkin juga menyukai