Vous êtes sur la page 1sur 19

Introduccin a las

Redes de
Computadores

Captulo 3
Capa de Transporte

Nota acerca de las transparencias del curso: Computer Networking:


A Top Down Approach
Estas transparencias estn basadas en el sitio web que acompaa el libro y 4th edition.
Jim Kurose, Keith Ross
han sido modificadas por los docentes del curso.

Addison-Wesley, July
2007.
All material copyright 1996-2007
J.F Kurose and K.W. Ross, All Rights Reserved

Int. Redes de Computadores - Capa de Transporte 3-1

Captulo 3: Capa de Transporte


Objetivos:
Entender los principios Aprender acerca de los
detrs de los servicios protocolos de la capa de
de la capa de transporte en Internet:
transporte: UDP: transporte no

multiplexacin/demulti- orientado a conexin


plexacin TCP: transporte orientado a
transferencia de datos conexin
confiable control de congestin de
control de flujo TCP
control de congestin

Int. Redes de Computadores - Capa de Transporte 3-2

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

los protocolos de transporte


a
le

corren en los end systems


nd
-e

lado del transmisor: genera


d n
tr

segmentos a partir de los


an

mensajes de la Aplicacin, y
pos
rt

los pasa a la capa de red


lado del receptor: a partir de application
transport
los segmentos, los mensajes network
data link
son pasados a la capa de physical

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

orden: TCP network


data link
physical
control de congestin network
data link
lo

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

En relacin al mejor network


data link
esfuerzo de IP, poco physical network
application
transport
aporta data link
physical
network
data link

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

transporte transporte transporte

red red red

enlace enlace enlace

fsica fsica fsica

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

Formato del segmento TCP/UDP


Nro. de puerto: TSAP
(Transport Service Access
Point) Int. Redes de Computadores - Capa de Transporte 3-9

Un poco ms sobre puertos


IANA (Internet Assigned Numbers Authority)
Se agrupan en 3 rangos
Well-known port numbers: 0 1023
aplicaciones de servidor; en general ejecutados por usuarios
tipo root. Se deberan registrar
53: DNS, 80: www HTTP, 20 y 21: ftp, 22: ssh, 161 y 162:
SNMP, imaps: 993, imap: 143, nntps: 563
Registered ports: 1024 49151
aplicaciones de servidor, usuarios comunes. Se deberan
registrar
1812, 1813: radius
Dynamic and/or Private ports: 49152 65535
Para uso temporario. No se deben registrar
http://www.iana.org/assignments/port-numbers

Int. Redes de Computadores - Capa de Transporte 3-10

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)

Int. Redes de Computadores - Capa de Transporte 3-11

demux no orientada a conexin


(continuacin)
DatagramSocket serverSocket = new DatagramSocket(6428);

P2 P1
P1
P3

SP: 6428 SP: 6428


DP: 9157 DP: 5775

SP: 9157 SP: 5775


client DP: 6428 DP: 6428 client
server
IP: A IP: C IP: B

SP: Source Port SP proporciona direccin de retorno


DP: Destination Port
Int. Redes de Computadores - Capa de Transporte 3-12

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

Int. Redes de Computadores - Capa de Transporte 3-13

Demux orientada a conexin


(continuacin)

P1 P4 P5 P6 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP:C

SP: 9157 SP: 9157


client DP: 80 DP: 80 client
server
IP: A S-IP: A
IP: C S-IP: B IP: B
D-IP: C D-IP: C

Int. Redes de Computadores - Capa de Transporte 3-14

7
Demux orientada a conexin:
Threaded Web Server

P1 P4 P2 P1P3

SP: 5775
DP: 80
S-IP: B
D-IP: C

SP: 9157 SP: 9157


client DP: 80 DP: 80 client
server
IP: A S-IP: A
IP: C S-IP: B IP: B
D-IP: C D-IP: C

Int. Redes de Computadores - Capa de Transporte 3-15

Port scanning
Es relativamente sencillo conocer qu aplicaciones estn
escuchando en qu puertos en un end system o en un conjunto de
end systems

Un programa para ello

Nmap (Network Mapper)

http://insecure.org/nmap

Si detectamos algn host corriendo determinada aplicacin de la


que conocemos alguna vulnerabilidad, esto puede ser el punto de
partida de un ataque

Int. Redes de Computadores - Capa de Transporte 3-16

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

UDP: User Datagram Protocol [RFC 768]


Protocolo de transporte de
Internet esqueltico
Por qu existe UDP?
Servicio best effort; los
segmentos UDP podran: no hay establecimiento de
conexin (lo cual puede
perderse
agregar retardo)
entregarse fuera de orden
a la aplicacin simple: no hay estado de
no orientado a conexin: conexin ni en el sender ni
en el receiver
no hay handshaking UDP
entre el sender y el encabezado del segmento
receiver pequeo
cada segmento UDP es no hay control de
manejado congestin
independientemente de los
otros

Int. Redes de Computadores - Capa de Transporte 3-18

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

Int. Redes de Computadores - Capa de Transporte 3-19

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

Int. Redes de Computadores - Capa de Transporte 3-20

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 !

las caractersticas del canal no confiable determinan la


complejidad del protocolo transferencia de datos confiable
(rdt: reliable data transfer)
Int. Redes de Computadores - Capa de Transporte 3-22

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 !

las caractersticas del canal no confiable determinan la


complejidad del protocolo transferencia de datos confiable
(rdt : reliable data transfer)
Int. Redes de Computadores - Capa de Transporte 3-23

Principios de la transferencia de
datos confiable

udt: unreliable data transfer

Int. Redes de Computadores - Capa de Transporte 3-24

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

udt_send(): llamado por rdt, rdt_rcv(): llamado cuando llega


para transferir el paquete sobre el paquete al lado receptor del
el canal no confiable hasta el canal
receiver Int. Redes de Computadores - Capa de Transporte 3-25

Transferencia de datos confiable:


comenzando
Desarrollo incremental del transmisor y del receptor de un
protocolo de transferencia confiable de datos (rdt)
consideramos solamente transferencia unidireccional de datos
Pero la informacin de control y de datos fluye en ambas
direcciones !
para especificar el emisor y el receptor utilizamos una mquina de
estados finita (FSM)
evento que causa la transicin de estado
acciones tomadas en la transicin de estado
estado: cuando estamos
en este estado, el estado estado
siguiente est 1 evento
2
determinado por el acciones
evento siguiente

Int. Redes de Computadores - Capa de Transporte 3-26

13
rdt1.0: transferencia confiable sobre un canal
confiable
El canal subyacente es perfectamente confiable
Sin errores en bits
Sin prdida de paquetes

FSMs separadas para sender y receiver:


El emisor enva datos dentro del canal subyacente
El receptor lee datos del canal subyacente

Esperar rdt_send(data) Esperar rdt_rcv(packet)


llamada packet = make_pkt(data) llamada extract (packet,data)
de arriba udt_send(packet) de abajo deliver_data(data)

sender receiver

Int. Redes de Computadores - Capa de Transporte 3-27

Protocolos ARQ
Implica la presencia de reconocimientos positivos
(Correcto) y negativos (Repita, por favor)

Los reconocimientos son mensajes de control a


travs de los cuales el receptor realimenta al
emisor respecto a las PDU que recibe.

Los protocolos de transferencia de datos que


implementan sto, se conocen como protocolos ARQ

Automatic Repeat reQuest

Int. Redes de Computadores - Capa de Transporte 3-28

14
Protocolos ARQ
Qu capacidades precisan estos protocolos?

Deteccin de errores

Realimentacin desde el receptor

Retransmisin

Volveremos sobre estos protocolos en las prximas


clases

Int. Redes de Computadores - Capa de Transporte 3-29

rdt2.0: canal con errores en bits


no hay prdida de paquetes
el canal subyacente puede modificar bits en el paquete
checksum para detectar errores en bits
Cmo nos recuperamos de los errores?
ACKnowledgements (ACKs): el receptor explcitamente le
dice al transmisor que el paquete se ha recibido OK
Negative ACKnowledgements (NAKs o NACKs): el receptor
explcitamente le dice al transmisor que el paquete tiene
errores
El transmisor retransmite el paquete ante la recepcin de
un NAK
nuevo mecanismo en rdt2.0 (respecto a rdt1.0):
deteccin de error
realimentacin desde el receptor (receiver -> sender):
mensajes de control (ACK,NAK)

Int. Redes de Computadores - Capa de Transporte 3-30

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) && isACK(rcvpkt)


Esperar
llamada de
sender abajo

rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)

Int. Redes de Computadores - Capa de Transporte 3-31

rdt2.0: operacin sin errores


rdt_send(data)
sndpkt = 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) && isACK(rcvpkt)


Esperar
llamada de
abajo

rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)

Int. Redes de Computadores - Capa de Transporte 3-32

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) && isACK(rcvpkt)


Esperar
llamada de
abajo

rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)

Int. Redes de Computadores - Capa de Transporte 3-33

rdt2.0 tiene un defecto fatal !


Qu ocurre si el Manejando duplicados:
ACK/NAK est el emisor retransmite el
paquete actual si el
corrupto? ACK/NAK est corrupto
el emisor no sabe qu ha el emisor agrega un nmero
ocurrido en el receptor ! de secuencia a cada
No puede simplemente paquete
retransmitir: el receptor descarta el
posibles duplicados paquete duplicado (no lo
el receptor debe saber
entrega hacia arriba)
distinguirlos Los ACK/NAK no llevan
nmeros de secuencia
stop and wait
el emisor enva un paquete y espera Por qu?
para saber cmo le fue
rdt2.0 es un protocolo parada y espera

Int. Redes de Computadores - Capa de Transporte 3-34

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)

udt_send(sndpkt) sndpkt = make_pkt(1, data, checksum)


udt_send(sndpkt)

Int. Redes de Computadores - Capa de Transporte 3-35

rdt2.1: el receptor maneja ACK/NAKs con


errores
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(NAK, chksum)
sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt)
udt_send(sndpkt)
Esperar
Esperar
1 de
rdt_rcv(rcvpkt) && 0 de abajo
rdt_rcv(rcvpkt) &&
not corrupt(rcvpkt) && abajo not corrupt(rcvpkt) &&
has_seq1(rcvpkt) has_seq0(rcvpkt)
sndpkt = make_pkt(ACK, chksum) sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt) udt_send(sndpkt)
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)

Int. Redes de Computadores - Capa de Transporte 3-36

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

Int. Redes de Computadores - Capa de Transporte 3-37

rdt2.2: un protocolo libre de NAK


recordemos que los paquetes no se pierden (todava)

las mismas funcionalidades que rdt2.1, pero utilizando


solamente ACKs

en lugar de NAK, el receptor enva ACK para el ltimo paquete


recibido OK
el receptor debe incluir explcitamente el nmero de secuencia del
paquete que est ACKed

ACK duplicado (dos ACKs para el mismo paquete) en el emisor


resulta en la misma accin que el NAK: retransmitir el paquete
actual

Int. Redes de Computadores - Capa de Transporte 3-38

19

Vous aimerez peut-être aussi