Académique Documents
Professionnel Documents
Culture Documents
Redes de
Computadores
Captulo 3
Capa de Transporte
Addison-Wesley, July
2007.
All material copyright 1996-2007
J.F Kurose and K.W. Ross, All Rights Reserved
1
Captulo 3: agenda
3.1 Servicios de la 3.5 Transporte
capa de transporte orientado a conexin:
3.2 Multiplexacin y TCP
demultiplexacin estructura del segmento
transferencia de datos
3.3 Transporte no
confiable
orientado a conexin:
control de flujo
UDP
gestin de la conexin
3.4 Principios de la
3.6 Principios del control
transferencia de datos
de congestin
confiable
3.7 Control de
congestin de TCP
Int. Redes de Computadores - Capa de Transporte 3-3
Protocolos y servicios de
transporte application
transport
brinda comunicacin lgica entre network
data link
procesos de Aplicacin corriendo physical
en hosts diferentes
lo
icg
mensajes de la Aplicacin, y
pos
rt
Aplicacin
ms de un protocolo de
transporte disponible para las
aplicaciones
Internet: TCP y UDP
Int. Redes de Computadores - Capa de Transporte 3-4
2
Capa de Transporte vs. Capa de
Red
Capa de red: comunicacin Analoga familiar:
lgica entre hosts 6 nios enviando cartas a 6
nios (primos)
Capa de transporte: procesos = nios
comunicacin lgica entre Mensajes de aplicacin =
procesos ejecutndose en cartas (en sobres)
diferentes mquinas hosts = casas
protocolo de transporte =
Los dispositivos Ana y Guillermo
intermedios (routers por Protocolo de capa de red =
ejemplo), implementan servicio de correo postal
protocolos de capa de
transporte y de capa de
aplicacin?
Int. Redes de Computadores - Capa de Transporte 3-5
Protocolos de la capa de
Transporte de Internet
confiable, entrega en application
transport
network
control de flujo physical
g
data link
ic
a
physical
establecimiento de la
le
nd
conexin
-e
nd
network
no confiable, entrega no
tr
data link
an
physicalnetwork
ordenada: UDP
s
data link
po
physical
rt
servicios no disponibles:
physical
garantas de retardo
garantas de ancho de
banda
Int. Redes de Computadores - Capa de Transporte 3-6
3
Captulo 3: agenda
3.1 Servicios de la 3.5 Transporte
capa de transporte orientado a conexin:
3.2 Multiplexacin y TCP
demultiplexacin estructura del segmento
Transferencia de datos
3.3 Transporte no
confiable
orientado a conexin:
control de flujo
UDP
Gestin de la conexin
3.4 Principios de la
3.6 Principios del control
transferencia de datos
de congestin
confiable
3.7 Control de
congestin de TCP
Int. Redes de Computadores - Capa de Transporte 3-7
Multiplexacin/Demultiplexacin
Demultiplexacin en el host receptor: Multiplexacin en el host transmisor
Recolectando datos de mltiples
Entregando los segmentos
sockets, incorporando headers
recibidos al socket correcto
(despus utilizados en la
demultiplexacin)
= socket = proceso
P3 P1
P1 P2 P4 aplicacin
aplicacin aplicacin
host 2 host 3
host 1
Int. Redes de Computadores - Capa de Transporte 3-8
4
Cmo trabaja la demultiplexacin?
Un host recibe datagramas IP
cada datagrama tiene 32 bits
direccin IP de origen,
direccin IP de destino # puerto origen # puerto destino
cada datagrama lleva 1
segmento de la capa de otros campos
transporte del encabezado
cada segmento tiene
nmero de puertos de
origen y destino datos de
los host utilizan las aplicacin
direcciones IP y los nmeros (mensaje)
de puertos para enviar el
segmento al socket apropiado
5
Demultiplexacin no orientada a
conexin
Crear sockets con nmeros de Cuando el host recibe el
puerto: segmento UDP:
Chequea el nmero de
DatagramSocket elSocket1 = new puerto destino en el
DatagramSocket(); segmento
Dirige el segmento UDP al
Asigna un nro. de puerto libre entre 1024 socket con dicho nmero
y 65535 de puerto
Datagramas IP con
DatagramSocket elSocket2 = new
DatagramSocket(12535);
diferentes direcciones
IP origen y/o nmeros de
puerto origen dirigidos al
UDP socket completamente
mismo socket
identificado por la dupla:
(direccin IP destino, nmero puerto destino)
P2 P1
P1
P3
6
Demux orientada a conexin
Socket TCP El host servidor debera
identificado por una soportar varios sockets
tupla de 4 elementos: TCP simultneos:
cada socket identificado
direccin IP origen
por su propia tupla de 4
nmero puerto origen elementos
direccin IP destino Los servidores Web
nmero puerto destino tienen diferentes
El host destino utiliza sockets para cada
los 4 valores para cliente que se conecta
dirigir el segmento al HTTP no persistente debe
tener diferentes sockets
socket apropiado para cada request
P1 P4 P5 P6 P2 P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
7
Demux orientada a conexin:
Threaded Web Server
P1 P4 P2 P1P3
SP: 5775
DP: 80
S-IP: B
D-IP: C
Port scanning
Es relativamente sencillo conocer qu aplicaciones estn
escuchando en qu puertos en un end system o en un conjunto de
end systems
http://insecure.org/nmap
8
Captulo 3: agenda
3.1 Servicios de la 3.5 Transporte
capa de transporte orientado a conexin:
3.2 Multiplexacin y TCP
demultiplexacin estructura del segmento
Transferencia de datos
3.3 Transporte no
confiable
orientado a conexin:
control de flujo
UDP
Gestin de la conexin
3.4 Principios de la
3.6 Principios del control
transferencia de datos
de congestin
confiable
3.7 Control de
congestin de TCP
Int. Redes de Computadores - Capa de Transporte 3-17
9
UDP: ms
frecuentemente utilizado
para aplicaciones de 32 bits
streaming multimedia source port # dest port #
Longitud, en
tolerante a las
bytes del longitud checksum
prdidas
segmento
sensible a la rate UDP,
otros usos de UDP incluyendo
DNS header
SNMP datos de Aplicacin
NTP (mensaje)
transferencia confiable
sobre UDP: agregar
confiabilidad en la capa de
Aplicacin Formato del segmento UDP
El checksum de UDP
Objetivo: detectar errores (p.e., bits cambiados) en el
segmento transmitido
Sender: Receiver:
trata el contenido de cada calcula el checksum del segmento
segmento como una recibido
secuencia de enteros de Chequea si el checksum calculado
16-bit es igual al valor del campo
checksum:
checksum: complemento a NO error detectado
1 de la suma de los
SI - no se ha detectado
contenidos del segmento error. Pero, no obstante,
El transmisor pone el podran haber errores?
valor del checksum UDP
en el campo checksum
10
Captulo 3: agenda
3.1 Servicios de la 3.5 Transporte
capa de transporte orientado a conexin:
3.2 Multiplexacin y TCP
demultiplexacin estructura del segmento
Transferencia de datos
3.3 Transporte no
confiable
orientado a conexin:
control de flujo
UDP
Gestin de la conexin
3.4 Principios de la
3.6 Principios del control
transferencia de datos
de congestin
confiable
3.7 Control de
congestin de TCP
Int. Redes de Computadores - Capa de Transporte 3-21
Principios de la transferencia de
datos confiable
importante en app., transport, link layers
En la lista de los temas ms importantes del networking !
11
Principios de la transferencia de
datos confiable
importante en app., transport, link layers
En la lista de los 10 temas ms importantes del networking !
Principios de la transferencia de
datos confiable
12
Transferencia de datos confiable:
comenzando
rdt_send(): llamada desde arriba, (p.e., deliver_data(): llamado
por aplic.). Datos pasados para entregar a la por rdt para entregar los
capa superior del receiver datos hacia arriba
send receive
side side
13
rdt1.0: transferencia confiable sobre un canal
confiable
El canal subyacente es perfectamente confiable
Sin errores en bits
Sin prdida de paquetes
sender receiver
Protocolos ARQ
Implica la presencia de reconocimientos positivos
(Correcto) y negativos (Repita, por favor)
14
Protocolos ARQ
Qu capacidades precisan estos protocolos?
Deteccin de errores
Retransmisin
15
rdt2.0: Especificacin FSM
rdt_send(data)
sndpkt = make_pkt(data, checksum) receiver
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
Esperar Esperar isNAK(rcvpkt) rdt_rcv(rcvpkt) &&
llamada de por ACK corrupt(rcvpkt)
arriba o NAK udt_send(sndpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
16
rdt2.0: escenario de error
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Esperar Esperar rdt_rcv(rcvpkt) &&
llamada de por ACK udt_send(sndpkt) corrupt(rcvpkt)
arriba o NAK
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
17
rdt2.1: el emisor maneja ACK/NAKs con
errores (rdt2.1 es rdt2.0 con un parche)
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Esperar Esperar
ACK o
isNAK(rcvpkt) )
llamada 0 udt_send(sndpkt)
NAK 0
de arriba
rdt_rcv(rcvpkt) rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) && notcorrupt(rcvpkt)
&& isACK(rcvpkt) && isACK(rcvpkt)
Esperar
Esperar
ACK o llamada 1 de
arriba
rdt_rcv(rcvpkt) && NAK 1
( corrupt(rcvpkt) ||
isNAK(rcvpkt) ) rdt_send(data)
18
rdt2.1: discusin
Emisor: Receptor:
nmero de secuencia debe chequear si el
agregado al paquete paquete recibido est
dos nmeros de seq. duplicado
(0,1) es suficiente? nota: el receptor no
debe chequear si el puede saber si el
ACK/NAK recibido ltimo ACK/NAK se
est corrupto recibi OK en el
transmisor
19