Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Capa de transporte
3-1
Capa de transporte
3-2
La capa de transporte
Principios detrs de los
servicios de la capa de
transporte:
multiplexado/demultiplex
ado
Transferencia de datos
fiable
Control de flujo
Control de
congestionamiento
Los protocolos de
transporte en Internet:
Capa de transporte
3-3
Capa de transporte
3-4
comunicacin lgica
entre hosts
Capa de transporte:
Comunicacin lgica
entre procesos
Procesos = nios
Mensajes de aplicacin = cartas
en sobres
Hosts = casas
Protocolo de transporte = Ana y
Bill
Protocolo de la capa de red =
servicio postal
Capa de transporte
3-5
Nmero de puerto
Un puerto es una interfaz lgica asociada a una
aplicacin de red.
Se define mediante un entero de 16 bits.
Capa de transporte
3-6
Nmero de puerto
Los nmeros de puerto son administrados por ICANN (Internet
Capa de transporte
3-7
Capa de transporte
3-8
SOCKET
Es un extremo en una comunicacin interprocesos a
Capa de transporte
3-9
Encapsulamiento y desencapsulamiento
Capa de transporte
3-10
TCP
rt
po
ns
a
tr
orden: UDP
network
data link
physicalnetwork
network
data link
physical
en
den
network
data link
physical
l
ca
Control de congestionamiento
Control de flujo
Configuracin de conexin
gi
lo
application
transport
network
data link
physical
network
data link
physical
Servicios no disponibles:
Garantas de retardo
Garantas de ancho de banda
Capa de transporte
data link
physical
network
data link
physical
application
transport
network
data link
physical
3-11
Capa de transporte
3-12
Capa de transporte
3-13
Multiplexado y
demultiplexado
Capa de transporte
3-14
Multiplexado y demultiplexado
Capa de transporte
3-15
Multiplexado/demultiplexado
Demultiplexado en el host receptor:
Entregar los segmentos recibidos
al socket correcto
Capa de transporte
3-16
Capa de transporte
3-17
nmeros de puerto:
DatagramSocket mySocket1 =
new DatagramSocket(12534);
DatagramSocket mySocket2 =
new DatagramSocket(12535);
Un socket UDP se
segmento UDP:
Capa de transporte
3-18
SP: 6428
DP: 9157
IP de
Cliente: A
P1
P1
P3
SP: 9157
DP: 6428
SP: 6428
DP: 5775
IP de Servidor: C
SP: 5775
DP: 6428
IP de
Cliente:B
3-19
Direccin IP de origen
Nmero de puerto origen
Direccin IP de destino
Nmero de puerto destino
Capa de transporte
3-20
Capa de transporte
3-21
P2
P4
P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
IP de
Cliente: A
SP: 9157
DP: 80
S-IP: A
D-IP:C
IP de
Servidor: C
SP: 9157
DP: 80
S-IP: B
D-IP:C
Capa de transporte
IP de
Cliente:B
3-22
Capa de transporte
3-24
3-25
UDP
Comnmente utilizado para
aplicaciones de difusin
multimedia
Tolerante a prdidas
Sensibles a la velocidad
Otros usos para UDP
DNS
SNMP
Transferencia fiable sobre UDP:
agregar fiabilidad en la capa de
aplicacin
Recuperacin de errores
especfica de cada
aplicacin
32 bits
# puerto origen
# puerto dest.
Longitud
checksum
Datos de aplicacin
(mensaje)
3-26
Checksum UDP
Objetivo: Detectar errores en segmentos transmitidos
Emisor:
Procesa un segmento como una secuencia de enteros de 16 bits
Checksum: suma (complemento a 1) de los contenidos del
Capa de transporte
3-27
Checksum UDP
Ejemplo
El campo checksum tiene un valor inicial de cero.
Despus de calcular la suma de verificacin, el pseudoencabezado
Capa de transporte
3-28
Checksum UDP
Receptor:
Calcula la suma de verificacin del segmento recibido +
pseudoencabezado
Verifica si la suma calculada es igual al valor del campo checksum:
NO error detectado
SI no se detectaron errores.
Capa de transporte
3-29
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
Capa de transporte
3-30
Principios de transferencia
de datos fiable
Capa de transporte
3-31
3-32
3-33
3-34
Lado
emisor
Lado
receptor
3-35
estado: estando en
este estado, el
siguiente estado
se determina
univocamente
por el siguiente
evento
estado
1
estado
2
evento
accin
Capa de transporte
3-36
Espera
llamada
de arriba
rdt_send(data)
packet = make_pkt(data)
udt_send(packet)
emisor
Espera
llamada
de abajo
rdt_rcv(packet)
extract (packet,data)
deliver_data(data)
receptor
Capa de transporte
3-37
paquete
Deteccin de errores
Retroalimentacin del receptor: mensajes de control (ACK,
NAK) del receptor al emisor
Capa de transporte
3-38
emisor
receptor
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)
Espera
llamada de
abajo
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Capa de transporte
3-39
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)
Espera
llamada de
abajo
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Capa de transporte
3-40
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
udt_send(NAK)
Espera
llamada de
abajo
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
Capa de transporte
3-41
Manejar duplicados:
El emisor retransmite el
3-42
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
Espera
llamada 0
de arriba
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
udt_send(sndpkt)
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
udt_send(sndpkt)
Espera
ACK o
NAK 0
Espera
ACK o
NAK 1
Espera
llamada 1
de arriba
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
Capa de transporte
3-43
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
Espera
1 de
abajo
rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) &&
has_seq0(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
Capa de transporte
3-44
rdt2.1: Discusin
Emisor:
#sec agregado al
paquete
Dos #sec (0,1) sern
suficientes. Porqu?
Debe verificar si el
ACK/NAK recibido esta
daado
Dos veces mas estados
Receptor:
Debe verificar si el
paquete recibido es
duplicado
El estado indica si el
#sec esperado es 0 o 1
nota: el receptor no
puede saber si su
ltimo ACK/NAK fu
recibido correctamente
en el emisor
Capa de transporte
3-45
Capa de transporte
3-46
rdt_rcv(rcvpkt) &&
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
Wait for
0 from
below
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
udt_send(sndpkt)
Wait for
ACK
0
sender FSM
fragment
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
receiver FSM
fragment
3-47
Suma de verificacin,
#sec, ACKs y
retransmisiones son de
ayuda, pero no
suficientes
Capa de transporte
3-48
rdt3.0 emisor
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt)
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,1)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,0) )
timeout
udt_send(sndpkt)
start_timer
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt)
&& isACK(rcvpkt,0)
stop_timer
stop_timer
timeout
udt_send(sndpkt)
start_timer
Wait
for
ACK0
Wait for
call 0from
above
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
Wait
for
ACK1
Wait for
call 1 from
above
rdt_rcv(rcvpkt)
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
start_timer
Capa de transporte
3-49
rdt3.0 en accin
Capa de transporte
3-50
rdt3.0 en accin
Capa de transporte
3-51
Desempeo de rdt3.0
rdt3.0 funciona, pero el desempeo es bajo
Ejemplo:
3-52
receptor
RTT
repeticin selectiva
3-54
receiver
RTT
Incrementa la utilizacin
en un factor de 3!
3-55
Protocolos encauzados
Regresar a N:
Repeticin selectiva:
Si el temporizador expira,
retransmite todos los paquetes
no confirmados
Cuando expira el
temporizador, retransmite
solo el paquete no
confirmado
3-56
Regresar a N
Emisor:
#sec de k bits en encabezado de paquete
Ventana de hasta N, paquetes consecutivos sin confirmar permitidos
3-57
base=1
nextseqnum=1
Esperar
rdt_rcv(rcvpkt) && corrupt(rcvpkt)
timeout
start_timer
udt_send(sndpkt[base])
udt_send(sndpkt[base+1])
udt_send(sndpkt[nextseqnum1])
3-58
Wait
expectedseqnum=1
sndpkt = make_pkt(0,ACK,chksum)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(expectedseqnum,ACK,chksum)
udt_send(sndpkt)
expectedseqnum++
Regresar a N en accin
3-60
Repeticin selectiva
El receptor confirma individualmente todos los
se recibi un ACK
3-61
3-62
Repeticin selectiva
Emisor
Datos desde arriba :
Timeout(n):
Receptor
Paquete n en [rcvbase, rcvbase+N-1]
enviar ACK(n)
Fuera de orden: buffer
En orden: entregar (tambin
entregar paquetes ordenados
en buffer), avanzar la ventana al
siguiente paquete por recibir
ACK(n) en [sendbase,sendbase+N]:
Paquete n en [rcvbase-N,rcvbase-1]
En otro caso:
Ignorar paquete
3-63
3-64
Repeticin selectiva:
dilema
Ejemplo:
#s sec: 0, 1, 2, 3
Tamao de ventana=3
El receptor no ve ninguna
diferencia en los dos escenarios!
Erroneamente pasa datos
duplicados como nuevos en (a)
3-65
TCP
Transmission Control Protocol
3-66
TCP: Revisin
Punto a punto:
Un emisor, un receptor
Fiable, flujo de bytes en orden:
No existe delimitacin de
mensajes
Encauzado:
Control de congestionamiento y
flujo.
TCP determina el tamao de la
ventana
Buffers de envo y recepcin
socket
door
a p p l ic a t io n
w r ite s d a ta
a p p l ic a t io n
re a d s d a ta
TCP
s e n d b u ffe r
TCP
r e c e iv e b u f f e r
segm ent
socket
door
3-67
#puerto origen
#puerto dest.
Nro de secuencia
Nro confirmacin (ACK#)
head no
UA P RS F
len usado
Receive window
checksum
Datos de aplicacin
(longitud variable)
# bytes que el
Receptor desea
aceptar
Suma de
verificacin
(como en UDP)
3-68
nmero de byte en el
flujo del primer byte
en el segmento de
datos
Usuario
escribe
C
ACKs:
Nmero de secuencia
del siguiente byte
esperado del otro lado
ACK acumulativos
P: Cmo maneja el
receptor los segmentos
fuera de orden?
R: TCP deja esto al
implementador
Host B
Host A
Seq=4
2, AC
K=7
9, dat
a
= C
= C
a
t
a
d
=43,
K
C
A
79,
Seq=
host ACKs
La recepcin
del C
reenviado
Seq=4
3, ACK
host confirma
La recepcin
deC.
Devuelve C
=80
tiempo
ESCENARIO SIMPLE DE TELNET
3-69
Retransmisiones
innecesarias
Muy largo: reaccin lenta
ante la prdida de
segmentos
3-70
3-71
3-72
EstimatedRTT:
3-73
TCP
Transporte orientado a la conexin: TCP
Estructura de segmento
Transferencia de datos fiable
Control de flujo
Gestin de conexin
Principios de control de congestionamiento
Control de congestionamiento TCP
3-74
Las retransmisiones
ocurren cuando:
Ocurre un timeout
Se recibe acks duplicados
Considere inicialmente un
3-75
timeout:
Retransmitir el segmento que
ocasion el timeout
Reiniciar timer
ACK recibido:
Si confirma segmentos
previamente no confirmados
3-76
3-77
La prdida de un
ACK obliga una
retransmisin
SendBase =
100
ACK PERDIDO
3-78
Sendbase =
100
SendBase =
120
SendBase =
120
El segmento 100 no
se retransmite
TIMEOUT PREMATURO
3-79
SendBase =
120
El ack acumulativo
evita la retransmisin
del primer segmento
ACK ACUMULATIVO
3-80
Evento en el Receptor
3-81
Retransmisin rpida
Periodo de Timeout suele
Deteccin de segmentos
Si el emisor recibe 3
Retransmisin rpida:
reenviar segmento
antes que el timer
expire
3-82
Retransmisin rpida
Reenvio de un segmento despus de un ACK duplicado TRES veces
Capa de transporte
3-83
Un ACK duplicado
para un segmento ya
confirmado
Retransmisin rpida
3-84
3-85
Capa de transporte
3-86
un buffer de recepcin
El emisor no desbordar el
buffer del receptor
transmitiendo demasiado a
excesiva velocidad
El control de flujo es un
El proceso de la aplicacin
servicio de conciliacin de
velocidad:
Conciliar la tasa de
transmisin con la tasa de
recuperacin de la
aplicacin receptora
Capa de transporte
3-87
3-88
Capa de transporte
3-89
Socket("hostname","port number");
Capa de transporte
3-90
3-91
Cierre de conexin:
Cliente cierra socket:
clientSocket.close();
close
FIN
ACK
close
FIN
timed wait
server
ACK
closed
Capa de transporte
3-92
client
closing
server
FIN
ACK
closing
timed wait
FIN
ACK
closed
closed
Capa de transporte
3-93
Capa de transporte
3-94
Capa de transporte
3-95
Principios de control de
congestionamiento
Capa de transporte
3-96
3-97
receptores
Un enrutador, buffer
infinito
Sin retransmisin
Host B
in : datos originales
out
Buffers de enlace de
salida compartidos infinito
Retardos largos
cuando
congestionado
Rendimiento
mximo alcanzable
Capa de transporte
3-98
Host A
out
in : datos originales
'in : datos originales , mas
datos retransmitidos
Host B
Buffers de enlace de
salida compartidos finito
Capa de transporte
3-99
= out
Siempre:
(goodput)
in > out
R/2
R/2
R/4
in
a.
R/2
out
out
out
R/3
in
R/2
in
R/2
c.
b.
Costos de congestion:
Mas trabajo (retransmisiones) para dado goodput
Retransmisiones innecesarias: el enlace transporta multiples copias de un paquete
Capa de transporte
3-100
Host A
in : datos originales
out
Host B
Capa de transporte
3-101
o
u
t
H
o
s
t
B
Capa de transporte
3-102
Control de congestionamiento
asistido por la red:
No hay retroalimentacin
explicita de la red
El congestionamiento se infiere
de las prdidas y retardos
observados por el sistema final
Es el enfoque tomado por TCP
Capa de transporte
3-103
Control de congestionamiento
TCP
Capa de transporte
3-104
LastByteSent LastByteAcked
CongWin
Aproximadamente,
Tasa =
CongWin
Bytes/sec
RTT
duplicados
Emisor TCP reduce tasa
(CongWin) despues de loss
event
Tres mecanismos:
AIMD: Adittive Increment,
Multiplicative Decrement
slow start
conservative after timeout
events
Capa de transporte
3-105
Comportamiento de diente
de sierra: verificando
ancho de banda
1 6 K b y te s
8 K b y te s
tim e
Capa de transporte
3-106
conexin, se establece
CongWin = 1 MSS
comienza, incrementar la
tasa exponencialmente
hasta que ocurra la primera
prdida
Es deseable escalar
rpidamente a una tasa
respetable
Capa de transporte
3-107
RTT
comienza, incrementar la
tasa exponencialmente
hasta que ocurra la primera
prdida:
Host A
Host B
one segm
en
two segm
ents
four segm
ents
time
Capa de transporte
3-108
CongWin se reduce a la
mitad
Luego la ventana crece
linealmente
Pero despus de un timeout:
CongWin se establece en 1
MSS;
Luego la ventana crece
exponencialmente hasta un
umbral, luego crece
linealmente
Filosofia:
3 ACKs duplicados indican
Capa de transporte
3-109
Refinamiento
P: Cuando, debe el
crecimiento exponencial
pasar a ser lineal?
R: cuando CongWin sea
igual a de su valor
antes de un timeout.
Implementacin:
Umbral(Threshold ) variable
Ante una prdida, el umbral se iguala a de CongWin justo antes de
la prdida
Capa de transporte
3-110
Capa de transporte
3-111
Evento
Comentario
Slow Start
(SS)
Congestio
n
Avoidance
(CA)
CongWin = CongWin+MSS *
(MSS/CongWin)
SS o CA
Prdida detectada
por tres ACKs
duplicados
Threshold = CongWin/2,
CongWin = Threshold,
pasar a estado Congestion
Avoidance
Recuperacin rpida.
Decremento multiplicativo:
CongWin no se reduce por
debajo de 1MSS
SS o CA
Timeout
Threshold = CongWin/2,
CongWin = 1 MSS,
pasar a estadoSlow Start
Slow start
SS o CA
ACK duplicado
CongWin y Threshold no
cambian
Capa de transporte
3-112
3-113
Rendimiento TCP
Cual es el rendimiento promedio de TCP en funcin
Capa de transporte
3-114
Con:
Capa de transporte
3-115
Equidad de TCP
Objetivo de equidad: si K sesiones TCP comparten el mismo
enlace con ancho de banda R, cada uno debe tener una tasa
promedio de R/K
Conexin TCP 1
Conexin TCP 2
Router con
capacidad R
Capa de transporte
3-116
Rendimiento de Conexin 2
Rendimiento de Conexin 1
R
Capa de transporte
3-117
Equidad
Equidad y UDP
Las aplicaciones
multimedia generalmente
no usan TCP
No desean ahogar la
tasa por el control de
congestionamiento
Bombean audio/video a
tasa constante, toleran
prdida de paquetes
Capa de transporte
3-118