Beruflich Dokumente
Kultur Dokumente
Captulo 3
La capa de transporte
Redes de
computadoras: Un
enfoque descendente,
5
a
edicin.
Jim Kurose, Keith Ross
Pearson Educacin,
2010.
A note on the use of these ppt slides:
Were making these slides freely available to all (faculty, students, readers).
Theyre in PowerPoint form so you can add, modify, and delete slides
(including this one) and slide content to suit your needs. They obviously
represent a lot of work on our part. In return for use, we only ask the
following:
If you use these slides (e.g., in a class) in substantially unaltered form, that
you mention their source (after all, wed like people to use our book!)
If you post any slides in substantially unaltered form on a www site, that
you note that they are adapted from (or perhaps identical to) our slides, and
note our copyright of this material.
Thanks and enjoy! JFK/KWR
All material copyright 1996-2010
J.F Kurose and K.W. Ross, All Rights Reserved
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-2
Captulo 3: La capa de transporte
Objetivos:
comprender los
principios que estn
tras los servicios de
la capa de transporte
multiplexar/des-
multiplexar
transferencia de
datos fiable
control de flujo
control de congestin
conocer los protocolos de
transporte de Internet:
UDP: transporte sin
conexin
TCP: transporte orientado a
conexin
control de flujo TCP
control de congestin TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-3
Captulo 3: ndice
3.1 Servicios de la capa
de transporte
3.2 Multiplexacin y
desmultiplexacin
3.3 Transporte sin
conexin: UDP
3.4 Principios de
transferencia de datos
fiable
3.5 Transporte orientado a
conexin: TCP
estructura de segmento
gestin de conexin
transferencia de datos
fiable
control de flujo
estimacin de RTT y
temporizacin
3.6 Principios de control de
congestin
3.7 Control de congestin
TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-4
servicios y protocolos de transporte
proporcionar comunicacin
lgica entre procesos en
ejecucin en diferentes hosts
los protocolos de transporte
corren en sistemas terminales
emisor: divide mensajes
en segmentos, los pasa a la
capa de red
receptor: reensambla
segmentos en mensajes,
los pasa a la capa de
aplicacin
ms de un protocolo
disponible para las
aplicaciones
Internet: TCP y UDP
aplicacin
transporte
red
enlace
fsica
aplicacin
transporte
red
enlace
fsica
t
r
a
n
s
p
o
r
t
e
l
g
i
c
o
e
x
t
r
.-
e
x
t
r
.
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-5
capa de transporte / capa de red
capa de red:
comunicacin lgica
entre hosts
capa de transporte:
comunicacin lgica
entre procesos
se basa en, y ampla, los
servicios de la capa de
red
analoga domstica:
12 chicos envan cartas a 12
chicos
procesos = chicos
mensajes = cartas en
sobres
hosts = casas
protocolo de transporte =
Ana y Juan, que reparten
a sus hermanos
respectivos
protocolo de red =
Correos
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-6
protocolos de capa de transporte
de Internet
distribucin fiable en
orden (TCP)
control de congestin
control de flujo
establecimiento de
conexin
distribucin no fiable,
fuera de orden: UDP
extensin sin virgueras
de IP haz lo que puedas
servicios no disponibles:
garanta de retardo
mnimo
garanta de ancho de
banda mnimo
aplicacin
transporte
red
enlace
fsica
red
enlace
fsica
red
enlace
fsica
red
enlace
fsica
red
enlace
fsica
red
enlace
fsica
red
enlace
fsica
aplicacin
transporte
red
enlace
fsica
t
r
a
n
s
p
o
r
t
e
l
g
i
c
o
e
x
t
r
.-
e
x
t
r
.
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-7
Captulo 3: ndice
3.1 Servicios de la capa
de transporte
3.2 Multiplexacin y
desmultiplexacin
3.3 Transporte sin
conexin: UDP
3.4 Principios de
transferencia de datos
fiable
3.5 Transporte orientado a
conexin: TCP
estructura de segmento
gestin de conexin
transferencia de datos
fiable
control de flujo
estimacin de RTT y
temporizacin
3.6 Principios de control de
congestin
3.7 Control de congestin
TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-8
Multiplexacin/desmultiplexacin
aplicacin
transporte
red
enlace
fsica
P1 aplicacin
transporte
red
enlace
fsica
aplicacin
transporte
red
enlace
fsica
P2 P3
P4
P1
host 1 host 2
host 3
= proceso = socket
entregar segmentos recibidos
al socket correcto
Desmultiplexacin en el destino:
reunir datos de mltiples
sockets, empaquetarlos con
el encabezado (usado luego
para desmultiplexar)
Multiplexacin en el emisor:
Ral Durn, NachoPrez v1.3 Capa de Transporte
Protocolo de red IP
El protocolo de Internet para la capa de
red se llama IP.
Se encarga de dar una conexin lgica
entre hosts.
Entrega datagramas de un host a otro, pero
sin garantas.
Cada host se identifica con una direccin
de red, que llamamos direccin IP.
3-10
Cmo funciona la desmultiplexacin
el host recibe
datagramas IP
cada datagrama tiene IP
de origen e IP de destino
cada datagrama lleva un
segmento de la capa de
transporte
cada segmento tiene n de
puerto de origen y de
destino
el host usa IP y n de
puerto para dirigir el
segmento al socket
apropiado
n puerto org n puerto dest
32 bits
datos de la aplicacin
(mensaje)
otros campos encabezado
formato de segmento TCP/UDP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-11
desmultiplexacin sin conexin
recordatorio: crear sockets
con nmeros de puerto
locales:
Dat agr amSocket mySocket 1 = new
Dat agr amSocket ( 12534) ;
Dat agr amSocket mySocket 2 = new
Dat agr amSocket ( 12535) ;
recordatorio: al crear un
datagrama para enviar por
un socket UDP, hay que
especificar
(IP dest ,n puerto dest)
cuando un host recibe un
segmento UDP
comprueba el n de puerto
destino del segmento
redirige el segmento UDP
al socket con ese n de
puerto
datagramas IP con
diferente IP origen y/o
n puerto origen se
dirigen al mismo socket
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-12
desmultiplexacin sin conexin (cont)
Dat agr amSocket ser ver Socket = new Dat agr amSocket ( 6428) ;
IP
cliente: B
P2
IP
cliente: A
P1 P1
P3
IP
servidor: C
PO: 6428
PD: 9157
PO: 9157
PD: 6428
PO: 6428
PD: 5775
PO: 5775
PD: 6428
PO proporciona direccin de retorno
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-13
Desmultiplexacin orientada a
conexin
un socket TCP se
identifica por una 4-
upla:
IP origen
n puerto origen
IP destino
n puerto destino
el receptor usa los 4
valores para redirigir el
segmento al socket
adecuado
el host servidor debe
soportar varios sockets
TCP simultneos
cada socket identificado
por su propia 4-upla
los servidores web
tienen sockets
diferentes para cada
cliente que se conecta
HTTP no persistente
tendr un socket para
cada solicitud
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-14
Desmultiplexacin orientada a
conexin (cont)
IP
cliente:B
P1
IP
cliente: A
P1 P2 P4
IP
servidor: C
P5 P6 P3
PO: 9157
PD: 80
IP-O: A
IP-D:C
PO: 9157
PD: 80
IP-D:C
IP-O: B
PO: 5775
PD: 80
IP-D:C
IP-O: B
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-15
desmultiplexacin orientada a
conexin: Web Server con hebras
IP
cliente:B
P1
IP
cliente: A
P1 P2
IP
servidor: C
SP: 9157
DP: 80
SP: 9157
DP: 80
P4 P3
D-IP:C
S-IP: A
D-IP:C
S-IP: B
SP: 5775
DP: 80
D-IP:C
S-IP: B
PO: 9157
PD: 80
IP-O: A
IP-D:C
PO: 5775
PD: 80
IP-D:C
IP-O: B
PO: 9157
PD: 80
IP-D:C
IP-O: B
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-16
Captulo 3: ndice
3.1 Servicios de la capa
de transporte
3.2 Multiplexacin y
desmultiplexacin
3.3 Transporte sin
conexin: UDP
3.4 Principios de
transferencia de datos
fiable
3.5 Transporte orientado a
conexin: TCP
estructura de segmento
gestin de conexin
transferencia de datos
fiable
control de flujo
estimacin de RTT y
temporizacin
3.6 Principios de control de
congestin
3.7 Control de congestin
TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-17
UDP: User Datagram Protocol [RFC 768]
protocolo de transporte de
Internet sin adornos, con lo
puesto
al ser un servicio de haz lo que
puedas, los segmentos UDP
pueden:
perderse
ser entregados fuera de
orden a la aplicacin
sin conexin:
sin establecimiento de
conexin entre el emisor y
el receptor UDP
cada segmento UDP se
trata de forma
independiente de los otros
Por qu existe UDP?
no hay establecimiento de la
conexin (que puede aadir
retardo)
sencillo: no hay estado ni en el
emisor ni en el receptor
encabezado pequeo
no hay control de congestin:
UDP puede disparar todo lo
rpido que se quiera
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-18
UDP: ms
a menudo usado para
aplicaciones de streaming
multimedia
tolerante a prdidas
sensible a la velocidad
otros usos de UDP
DNS
SNMP
transferencia fiable sobre
UDP: aadir fiabilidad en la
capa de aplicacin
recuperacin de errores
especfica para la
aplicacin
n puerto org n puerto dest
32 bits
datos de la aplicacin
(mensaje)
formato de segmento UDP
long checksum
Longitud, en
bytes, del
segmento
UDP, incluido
encabezado
Ral Durn, NachoPrez v1.3 Capa de Transporte
0 31 16 15
3-19
UDP: checksum
Emisor:
trata contenidos del
segmento como secuencia
de enteros de 16 bits
checksum: suma (en compl.
a 1) del contenido del
segmento
el emisor pone el
checksum en el campo
UDP correspondiente
Receptor:
calcula el checksum del
segmento recibido
comprueba si el valor
calculado = campo checksum
NO - error detectado
S error no detectado
Puede haber errores aun
as? Lo veremos ms
adelante
Objetivo: detectar errores (p.ej.: bits alterados) en
el segmento transmitido
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-20
Ejemplo de Checksum Internet
Nota: suma en complemento a 1!
Ejemplo: sumar dos enteros de 16 bits
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
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
acarreo
suma
checksum
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-21
Captulo 3: ndice
3.1 Servicios de la capa
de transporte
3.2 Multiplexacin y
desmultiplexacin
3.3 Transporte sin
conexin: UDP
3.4 Principios de
transferencia de datos
fiable
3.5 Transporte orientado a
conexin: TCP
estructura de segmento
gestin de conexin
transferencia de datos
fiable
control de flujo
estimacin de RTT y
temporizacin
3.6 Principios de control de
congestin
3.7 Control de congestin
TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-22
Principios de transferencia de
datos fiable
es importante en las capas de aplicacin, transporte y enlace
en el top-10 de las cuestiones importantes en redes!
las caractersticas del canal no fiable determinarn la
complejidad del protocolo de transferencia de datos fiable
(rdt: reliable data transfer protocol)
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-23
Principios de transferencia de
datos fiable
es importante en las capas de aplicacin, transporte y enlace
en el top-10 de las cuestiones importantes en redes!
las caractersticas del canal no fiable determinarn la
complejidad del protocolo de transferencia de datos fiable
(rdt: reliable data transfer protocol)
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-24
Principios de transferencia de
datos fiable
es importante en las capas de aplicacin, transporte y enlace
en el top-10 de las cuestiones importantes en redes!
las caractersticas del canal no fiable determinarn la
complejidad del protocolo de transferencia de datos fiable
(rdt: reliable data transfer protocol)
Ral Durn, NachoPrez v1.3 Capa de Transporte
rdt_send(): llamada desde
arriba, (p.ej.: por la apl.). Se le
pasan los datos a entregar al nivel
superior del receptor
3-25
transferencia de datos fiable:
preliminares
lado
emisin
lado
recepcin
udt_send(): llamado por rdt
para transferir paquete por
canal no fiable al receptor
rdt_rcv(): llamado cuando el
paquete llegue al extremo de
recepcin del canal
deliver_data(): llamada
por rdt para entregar datos
al nivel superior
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-26
transferencia de datos fiable: preliminares
Vamos a:
desarrollar el emisor y el receptor de un protocolo
de transf. de datos fiable (rdt) paso a paso
considerar slo transferencia de datos unidireccional
pero el control se transmitir en ambas direcciones!
usar mquinas de estados finitos (MEFs) para definir
emisor y receptor
estado
1
estado
2
evento que causa la transicin
accin tomada en la transicin
estado: desde este
estado, el siguiente
se determina
nicamente por el
siguiente evento
evento
acciones
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-27
Rdt1.0: transferencia fiable en canal fiable
canal subyacente perfectamente fiable
no hay errores de bit
no hay prdida de paquetes
MEF diferente para emisor y receptor
el emisor enva dato al canal subyacente
el emisor lee datos del canal subyacente
esperar
llamada
de arriba
packet = make_pkt(data)
udt_send(packet)
rdt_send(data)
extract (packet,data)
deliver_data(data)
esperar
llamada
de abajo
rdt_rcv(packet)
emisor
receptor
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-28
Rdt2.0: canal con errores de bit
el canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bit
la cuestin: cmo recuperarse de errores?
reconocimientos(acknowledgements, ACKs): el receptor
indica explcitamente que la recepcin fue buena
reconocimientos negativos (NAKs): el receptor indica
explcitamente que el paquete tena errores
el emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt2.0 (sobre rdt1.0):
deteccin de errores
realimentacin del receptor:mensajes de control
(ACK,NAK) del receptor al emisor
Cmo se recuperan los humanos de errores
durante la conversacin?
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-29
Rdt2.0: canal con errores de bit
el canal subyacente puede alterar bits del paquete
usar el checksum para detectar errores de bit
la cuestin: cmo recuperarse de errores?
reconocimientos(acknowledgements, ACKs): el receptor
indica explcitamente que la recepcin fue buena
reconocimientos negativos (NAKs): el receptor indica
explcitamente que el paquete tena errores
el emisor retransmite el paquete si recibe un NAK
nuevos mecanismos en rdt2.0 (sobre rdt1.0):
deteccin de errores
realimentacin del receptor:mensajes de control
(ACK,NAK) del receptor al emisor
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-30
rdt2.0: especificacin de la MEF
esperar
llamada de
arriba
sndpkt = make_pkt(data, checksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
esperar
ACK o
NAK
esperar
llamada de
abajo
emisor
receptor
rdt_send(data)
rdt_rcv(rcvpkt)
udt_send(sndpkt[nextseqnum-1])
timeout
rdt_send(data)
if (nextseqnum < base+N) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
udt_send(sndpkt[nextseqnum])
if (base == nextseqnum)
start_timer
nextseqnum++
}
else
refuse_data(data)
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
stop_timer
else
start_timer
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base=1
nextseqnum=1
rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)
o
d
e
l
a
v
e
n
t
a
n
a
c
o
n
c
o
n
g
e
s
t
i
n
diente de sierra:
sondeo del ancho
de banda
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-93
Control de congestin TCP: detalles
el emisor limita la transmisin:
LastByteSent-LastByteAcked
cwnd
grosso modo,
cwnd es dinmica, funcin de la
congestin de la red percibida
Cmo percibe el emisor
la congestin?
evento de prdida =
expiracin o 3 ACKs
duplicados
el emisor reduce la
tasa (cwnd) tras un
evento de prdida
3 mecanismos:
AIMD
arranque lento
conservador tras
eventos de expiracin
tasa =
cwnd
RTT
Bytes/s
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-94
TCP: Arranque lento
cuando se inicia la
conexin, la tasa se
incrementa
exponencialmente hasta
la primera prdida:
inicialmente cwnd = 1 MSS
cwnd se dobla cada RTT
se incrementa cwnd con
cada ACK recibido
resumen: la tasa inicial
es baja, pero crece
exponencialmente rpido
Host A
un segmento
R
T
T
Host B
tiempo
2 segmentos
4 segmentos
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-95
Refinado: deduccin de prdidas
tras 3 ACKs duplicados
cwnd se divide por 2
la ventana ya crece
linealmente
pero tras una expiracin:
cwnd en cambio se pone
a 1 MSS;
la ventana entonces
crece exponencialmente
hasta un umbral, luego
linealmente
3 ACKs duplicados
indica que la red es capaz
de entregar algunos
segmentos
expiracin indica una
situacin de congestin
ms alarmante
Filosofa:
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-96
Refinado
P: cundo debera
pasarse de
incremento
exponencial a lineal?
R: cuando cwnd llegue a
1/2 de su valor
antes de la
expiracin
Implementacin:
variable ssthresh
con una prdida, ssthresh
se pone a 1/2 de cwnd
justo antes de la prdida
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-97
Resumen: Control de congestin TCP
expiracin
ssthresh = cwnd/2
cwnd = 1 MSS
dupACKcount = 0
retransmitir segmento que falta
cwnd = 1 MSS
ssthresh = 64 KB
dupACKcount = 0
New
ACK!
New
ACK!
New
ACK!
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-98
eficiencia de TCP
cul es la tasa media de TCP en funcin del
tamao de ventana y RTT?
ignorar el arranque rpido
sea W el tamao de la ventana cuando
ocurre una prdida
cuando la ventana es W, la tasa es W/RTT
justo tras la prdida, la ventana pasa a W/2, y
la tasa a W/2RTT
la tasa media es: 0,75 W/RTT
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-99
Futuros de TCP: TCP sobre tubos largos y
gruesos
ejemplo: segmentos de 1500 bytes, RTT 100ms, se
quiere tasa de 10 Gbps
requiere tamao de ventana W = 83.333 segmentos
en trnsito
tasa de transferencia en funcin de la tasa de
prdidas:
L = 210
-10
una tasa de prdidas muy baja!!
nuevas versiones de TCP para alta velocidad
L RTT
MSS 22 , 1
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-100
objetivo de equidad: si K sesiones TCP comparten el
mismo enlace cuello de botella de ancho de banda
R, cada uno debera tener una tasa media de R/K
conexin TCP 1
router cuello
de botella
capacidad R
conexin
TCP 2
Equidad en TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-101
Por qu es equitativoTCP?
2 sesiones que compiten:
el incremento aditivo da una pendiente de 1 en los incrementos
el decremento multiplicativo decrementa la tasa
proporcionalmente
R
R
reparto equitativo del ancho de banda
tasa de transferencia
de la conexin 1
t
a
s
a
d
e
t
r
a
n
s
f
e
r
e
n
c
i
a
d
e
l
a
c
o
n
e
x
i
n
2
evitacin de congestin: incremento aditivo
prdida: decrementar ventana en un factor de 2
evitacin de congestin: incremento aditivo
prdida: decrementar ventana en un factor de 2
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-102
Equidad (ms)
Equidad y UDP
las aplicaciones
multimedia a menudo
no usan TCP
no quieren que la tasa
de transf. se limite por
el control de congestin
por eso usan UDP:
envan audio/video a
tasa constante, toleran
prdida de paquetes
Equidad y conexiones TCP
paralelas
nada impide a una
aplicacin abrir conexiones
paralelas entre 2 hosts
los navegadores lo hacen
ejemplo: enlace de tasa R
permite 9 conexiones
una aplicacin pide 1 TCP,
obtiene tasa R/10
una aplicacin pide 11 TCPs,
obtiene tasa R/2!!
Ral Durn, NachoPrez v1.3 Capa de Transporte
3-103
Captulo 3: Resumen
principios detrs de los
servicios de la capa de
transporte
multiplexin, demultiplexin
transferencia de datos
fiable
control de flujo
control de congestin
instanciacin e implementacin
en Internet
UDP
TCP
Ral Durn, NachoPrez v1.3 Capa de Transporte