Académique Documents
Professionnel Documents
Culture Documents
1)
Redes de Computadoras Lic. en Cs. de la Computacin Universidad Nacional del Sur
Mdulo 03
Copyright
Copyright 2010-2013 A. G. Stankevicius Se asegura la libertad para copiar, distribuir y modificar este documento de acuerdo a los trminos de la GNU Free ocumentation !icense, versi"n #.$ o cual%uiera posterior publicada por la Free Soft&are Foundation, sin secciones invariantes ni te'tos de cubierta delantera o trasera. (na copia de esta licencia est) siempre disponible en la p)gina http*++&&&.gnu.org+copyleft+fdl.html. !a versi"n transparente de este documento puede ser obtenida de la siguiente direcci"n* http*++cs.uns.edu.ar+,ags+teaching
Redes de Computadoras - Mg. A. G. Stankevicius 2
Contenidos
Servicios y protocolos de la capa de transporte. -ultiple'ado y demultiple'ado de segmentos. .ransporte no orientado a la cone'i"n /UDP0. .eor1a de transporte confiable de datos. .ransporte orientado a la cone'i"n /TCP0. 2stablecimiento y cierre de cone'iones. .eor1a de control de congesti"n. Control de congesti"n en TCP.
Redes de Computadoras - Mg. A. G. Stankevicius 3
4 3 2 1
Ser"i#ios de transporte
!a capa de transporte provee la comunicaci"n l"gica entre las diversas aplicaciones de red.
aplicacin transporte red enlace !sica red enlace !sica red enlace !sica
Proto#olos de transporte
!os protocolos de la capa de transporte corren en las computadoras de la frontera de la red.
Cabe enfati4ar %ue los routers en el n5cleo de la red usualmente s"lo implementan hasta la capa de red.
2l lado emisor de una comunicaci"n corta los mensa6es de las aplicaciones en segmentos, los %ue son pasados a la capa de red. 2l lado receptor rearma los mensa6es a partir de los segmentos recibidos, los %ue son pasados a la capa de aplicaciones.
Redes de Computadoras - Mg. A. G. Stankevicius 6
!a capa de transporte no s"lo hace uso de los servicios provistos por la capa de red sino %ue adem)s los perfecciona y e'tiende.
Transporte en internet
7nternet cuenta con dos servicios de transporte.
TCP, orientado a la cone'i"n, %ue brinda un env1o confiable y ordenado de datos e implementa control de flu6o y de congesti"n. UDP, no orientado a la cone'i"n, %ue brinda un env1o de datos no confiable ni ordenado y tampoco implementa control de flu6o ni de congesti"n.
2l servicio de transporte de internet no tiene forma de asegurar ni un ancho de banda m1nimo ni un retardo m)'imo.
Multiple%ado y de&ultiple%ado
!a capa de transporte es la encargada de generali4ar el servicio de cone'i"n entre computadoras provisto por la capa de red. 3ara la capa de transporte no basta con identificar a una computadora en particular, debe poder identificar a un dado proceso. 2l mecanismo %ue lleva a cabo esta generali4aci"n se denomina multiple'ado del lado del emisor y demultiple'ado del lado del receptor.
Redes de Computadoras - Mg. A. G. Stankevicius !
Multiple%ado y de&ultiple%ado
Multiplexado: se reali4a en el emisor al 6untar mensa6es de los sockets con un encabe4ado adicional, el cual contiene informaci"n e'tra %ue ser) usada luego para demultiple'ar.
'1 aplicacin aplicacin soc&et
soc&et
'2
soc&et
'4
transporte transporte
soc&et
'4
%licia
$runo
Carlos
Multiple%ado y de&ultiple%ado
Demultiplexado: tiene a lugar en el receptor al determinar a %u socket corresponde entregar cada uno de los datos recibidos.
'1 aplicacin aplicacin soc&et '2 '3 aplicacin aplicacinsoc&et '4
soc&et
soc&et
transporte transporte
soc&et
'4
%licia
$runo
Carlos
'e&ultiple%ado
2l proceso de demultiple'ado comien4a al recibir un datagrama IP*
Cada datagrama tiene un IP de origen y de destino. Contiene e'actamente un segmento de la capa de transporte. Cada segmento especifica un puerto origen y destino. 2l IP y puerto destino identifica un1vocamente a un socket.
32 *its puerto ori(en puerto dest. otros campos del enca*e+ado cuerpo del mensa,e
'e&ultiple%ado ('P
Cada sockets UDP se asocia a un n5mero de puerto local determinado.
3ara identificar un socket UDP arbitrario s"lo hace falta una direcci"n IP y un puerto.
Al recibir un segmento UDP se verifica el puerto destino indicado en el segmento y se entrega su contenido al socket asociado a ese puerto.
Segmentos originados en m)%uinas con diversas direcciones IP o bien distintos puertos de origen pueden ser entregados al mismo socket UDP.
'e&ultiple%ado ('P
Supongamos %ue el proceso P2 crea un socket UDP en el puerto 89$:*
soc&et
'1
soc&et
'2
soc&et
'3
cliente -IP. %/
servidor -IP. $/
cliente -IP. C/
'e&ultiple%ado TCP
Cada socket TCP se asocia a cuatro valores, la direcci"n IP y puerto de origen por un lado y la direcci"n IP y puerto destino por el otro.
!a computadora %ue recibe un segmento TCP hace uso de esos cuatro valores para determinar cu)l de los sockets TCP debe recibirlo.
!os servidores hacen uso de m5ltiples sockets, uno para cada uno de los clientes conectados.
!a direcci"n IP y puerto de origen distingue a los distintos clientes entre s1.
'e&ultiple%ado TCP
2l proceso P2 ahora necesita un socket TCP independiente para cada cliente*
soc&et
'1
soc&et soc&et
'2
soc&et
'3
cliente -IP. %/
servidor -IP. $/
cliente -IP. C/
Proto#olo ('P
2l protocolo UDP representa el servicio de transporte m)s elemental %ue brinda internet.
Se define formalmente en el RFC ;8:. Se basa en el principio <best effort=, propio del protocolo IP de la capa de red.
Proto#olo ('P
>?abiendo TCP, hace falta UDP@
UDP no necesita establecer una cone'i"n antes de comen4ar a enviar informaci"n /lo cual puede incorporar retardos en la transmisi"n0. 2s e'tremadamente simple, no necesita almacenar informaci"n acerca de la cone'i"n en curso. Su encabe4ado es mucho m)s sencillo y ocupa menor cantidad de bytes %ue un encabe4ado TCP. Ao implementa control de flu6o ni de congesti"n, el emisor puede enviar la informaci"n al ritmo %ue le pla4ca, sin limitaciones de ning5n tipo.
Proto#olo ('P
2l protocolo se suele utili4ar para hacer streaming de audio y video.
2l streaming es tolerante a prdidas pero re%uiere retardos acotados.
32 *its puerto ori(en puerto dest. lon(itud c5ec&sum
Btros usos*
DNS. SMNP. Cuegos en l1nea.
Che#)su& ('P
2l prop"sito del campo checksum es detectar la aparici"n de bits en error. 2l emisor calcula el checksum correcto*
Considera el contenido del segmento como una secuencia de enteros de #8 bits. 2l checksum consiste de la suma en #Dcomplemento de esta secuencia de enteros. (na ve4 obtenido el checksum correcto lo escribe en el campo correspondiente del encabe4ado UDP.
Che#)su& ('P
2l receptor debe verificar el checksum*
Eecomputa el checksum del segmento %ue acaba de recibir. Compara el valor obtenido con el checksum registrado en el campo del encabe4ado. Si difieren se detect" uno o m)s errores en la transmisi"n. 2n contraste, si son iguales no se han detectados errores en la transmisi"n /Flo cual no significa %ue no se hayan producido uno o m)s erroresG0.
Co&uni#a#in #on*ia+le
%plicacin '1
datos
'2
datos
'1
datos envio_rdt()
'2
datos entregar()
8ransporte
implementacin
Co&uni#a#in #on*ia+le
envio_rdt(). invocado desde envio_rdt(). invocado desde arri*a7 suministra los datos arri*a7 suministra los datos a ser enviados a ser enviados
'1
'2
entregar(). invocado por entregar(). invocado por el protocolo para entre(ar el protocolo para entre(ar los datos reci*idos los datos reci*idos
datos envio_rdt()
datos entregar()
envio_udt(). invocado por envio_udt(). invocado por el protocolo para trans erir el protocolo para trans erir un pa#uete a trav9s del canal un pa#uete a trav9s del canal no con ia*le no con ia*le
recep_rdt(). invocado por recep_rdt(). invocado por el protocolo cuando lle(a el protocolo cuando lle(a un nuevo pa#uete al receptor un nuevo pa#uete al receptor
Proto#olo $'T
A continuaci"n anali4aremos c"mo se deber1a definir el protocolo RDT para poder brindar un servicio de transferencia confiable de datos.
!a idea es comen4ar con un protocolo b)sico para luego ir considerando un escenario m)s realista. 2misor y receptor tienen responsabilidades diferentes. S"lo consideraremos una comunicaci"n unidireccional. !as distintas iteraciones del protocolo RDT ser)n definidas a travs de aut"matas finitos.
$'T 1.0
2l protocolo RDT/1.0 permite el env1o confiable de datos a travs de un canal confiable.
2l canal no pierde informaci"n ni introduce errores. (n aut"mata para el emisor y otro para el receptor.
emisor
receptor
$'T ,.0
2l protocolo RDT/2.0 permite env1o confiable de datos a travs de un canal %ue puede causar errores a nivel de los bits.
2l canal sigue sin perder informaci"n, s"lo introduce errores a nivel de bit. !os errores pueden ser detectados por el campo checksum del encabe4ado UDP. Ao obstante, con detectar el error no basta, se debe incorporara al protocolo alg5n mecanismo de recuperaci"n ante la detecci"n de un error.
$'T ,.0
!a nueva versi"n del protocolo har) uso de confirmaciones de recepci"n / C!0 para indicar %ue el pa%uete fue recibido sin errores. Si el pa%uete llega con errores, se solicita la retransmisi"n del mismo haciendo uso de un mensa6e espec1fico /N !0. 2l emisor reenv1a el 5ltimo pa%uete enviado al recibir un N ! en ve4 de un C!.
>2'iste alguna situaci"n involucrando humanos en la %ue se haga uso de mensa6es de C! y+o N !@
Posi+les solu#iones
(na posibilidad consiste en enviar un C! o un N ! adicional para %ue el receptor sepa si el emisor recibi" correctamente el mensa6e.
>Hu pasa si se corrompe el C!+N ! del C!+N !@
Btra posibilidad es agregar suficientes bits de c"digo como para poder corregir estos errores.
3odr1a funcionar, pero no se puede aplicar a canales %ue pierdan pa%uetes.
Pa3uetes dupli#ados
7ncorporar un es%uema de numeraci"n de los pa%uetes implica %ue el emisor mar%ue cada pa%uete %ue env1a con un cierto n5mero.
2n el escenario %ue se corromp1a el C!+N ! enviado por el receptor, el emisor simplemente asume %ue se trataba de un N ! y reenv1a el 5ltimo pa%uete /usando el mismo n5mero de pa%uete %ue la ve4 anterior0. 2l receptor en caso de recibir por segunda ve4 el mismo pa%uete simplemente lo descarta.
recep_rdt(paqrec) && !corrupto(paqrec) && paqenv = empaq(NAK,checksum) nrosec!(paqrec) envio_udt(paqenv) datos = desempaq(paqrec) entregar(datos) paqenv = empaq(ACK,checksum) envio_udt(paqenv)
2l emisor verifica la correcta recepci"n de los mensa6es de C!+N !. !os aut"matas finitos %ue definen el protocolo re%uieren el doble de estados %ue en RDT/2.0.
!os estados distinguen el n5mero de secuencia del pr"'imo pa%uete a ser enviado o recibido.
$'T ,.,
2l protocolo RDT/2.1 admite ser optimi4ado evitando tener %ue hacer uso de los mensa6es N ! de reconocimiento negativo. !a idea es %ue el receptor indi%ue %u pa%uete est) reconociendo al enviar un C!.
ebemos incorporar el n5mero de secuencia en los mensa6es enviados por el receptor.
a"menosunoenv = true
recep_rdt(paqrec) && !corrupto(paqrec) && nrosec!(paqrec) datos = desempaq(paqrec) entregar(datos) paqenv = empaq(!,ACK,checksum) envio_udt(paqenv)
$'T 3.0
2l protocolo RDT/3.0 permite env1o confiable de datos a travs de un canal %ue puede causar errores a nivel de los bits y+o perder en su totalidad alguno de los mensa6es enviados.
2l protocolo debe contemplar %ue se pierda un pa%uete o un mensa6e de C!. Se deben resolver dos problemas* c"mo detectar las prdidas y %u hacer cuando se produ4ca una.
!os mecanismos presentes en RDT/2.2 no permiten detectar %ue se produ6o una prdida.
$'T 3.0
(n posible soluci"n es %uedar a la espera de un pa%uete o un mensa6e C! y cuando se tenga la certe4a de %ue se perdi" reenviarlo.
>Cu)nto hay %ue esperar para tener la certe4a %ue se perdi" el 5ltimo mensa6e enviado@ 2sta alternativa funciona, pero implica pagar un costo muy alto en eficiencia al perderse un mensa6e.
(na me6or opci"n es %uedar a la espera de una respuesta por un tiempo ra4onable y si no llega asumir %ue se perdi" y reenviarlo.
$'T 3.0
>Hu sucede si en realidad el pa%uete estaba retrasado, pero no se hab1a perdido@
2l reenvi" generar) un mensa6e duplicado, pero el protocolo ya mane6a correctamente esa situaci"n. 2misor y receptor deben indicar el n5mero de secuencia en sus mensa6es.
3ara implementar esta pol1tica hace falta contar con un tempori4ador programable.
sacar(a"arma)
recep_rdt(paqrec)
env!o pa#. 4 recep. .C/ 4 env!o pa#. 1 recep. .C/ 1 env!o pa#. 4 recep. .C/ 4
recep. pa#. 4 env!o .C/ 4 recep. pa#. 1 env!o .C/ 1 recep. pa#. 4 env!o .C/ 4
P4rdida de un pa3uete
emisor receptor
env!o pa#. 4 recep. .C/ 4 env!o pa#. 1 pa#uete p9rdido disparo de alarma reenv!o pa#. 1 recep. .C/ 1
P4rdida de un .C/
emisor receptor
env!o pa#. 4 recep. .C/ 4 env!o pa#. 1 recep. pa#. 4 env!o .C/ 4 recep. pa#. 1 env!o .C/ 1 %C: p9rdido recep. pa#. 1 -duplicado detec./ reenv!o .C/ 1
$een"1o pre&aturo
emisor receptor
env!o pa#. 4 recep. pa#. 4 env!o .C/ 4 disparo de alarma reenv!o pa#. 4 recep. .C/ 4 -duplicado detec./ recep. .C/ 1
recep. pa#. 4 -duplicado detec./ reenv!o .C/ 4 recep. pa#. 1 env!o .C/ 1
= 2 microse(.
uenlace=
34.442 ms
= 4.427<
33.3 :$)s
1 pa#. ) 34 ms
1 >*)s ? 4.427<
Operatoria stop!and!6ait
env!o del primer *it -t @ 4/ env!o del Altimo *it -t @ L)$/ recep. del primer *it $TT recep. del Altimo *it env!o del .C/
recep. del .C/ -t @ L)$ ; $TT/ comien+a el env!o del si(. pa#.
uenlace=
.442 ms 34.442 ms
= 4.427<
Operatoria en pipeline
2l factor de utili4aci"n obtenido de apenas M.M$;N es evidentemente inaceptable. ?abr1a %ue permitir una operatoria en pipeline a fin de elevar el factor de ocupaci"n.
!a idea b)sica es permitir %ue varios pa%uetes estn en camino al mismo tiempo. A tal efecto hace falta incrementar los n5meros de secuencia disponibles. .ambin hace falta alguna forma de almacenamiento intermedio tanto en emisor como receptor.
Operatoria en pipeline
env!o del primer *it -t @ 4/ env!o del Altimo *it -t @ L)$/ recep. del primer *it $TT recep. del .C/7 comien+a el env!o del si(. pa#. -t @ L)$ ; $TT/ Altimo *it 1er. pa#. ) env!o .C/ Altimo *it 2do. pa#. ) env!o .C/ Altimo *it 3er. pa#. ) env!o .C/
uenlace=
.424 ms 34.442 ms
= 4.42<
Proto#olo 7o!8a#)!0
2l protocolo G"N implementa la operatoria en pipeline antes comentada.
Se reservan # bits del encabe4ado para los n5meros de secuencia de los pa%uetes. Se permiten hasta una ventana desli4ante de N pa%uetes en tr)nsito, esto es, a%uellos cuales cuya confirmaci"n de recepci"n a5n no ha sido recibida.
ventana desli+ante de tamaDo 0
.C/ 6a reci*ido
todav!a enviados a ser enviados no usa*les esperando .C/ Redes de Computadoras - Mg. A. G. Stankevicius 55
-&isor 780
$ase = ! pro%num = ! envio_rdt(datos) i#(pro%num & $ase ' N) ( paqenv)pro%num* = empaq(pro%num, datos, checksum) envio_udt(paqenv)pro%num*) i# (pro%num == $ase) poner(a"arma) pro%num'' +
recep_rdt(paqrec) && !corrupto(paqrec) $ase = nrosec(paqrec) ' ! i# (pro%num == $ase) sacar(a"arma) e"se poner(a"arma)
$e#eptor 780
recep_rdt(paqrec) && !corrupto(paqrec) && (nrosec(paqrec) == pro%numreq) datos = desempaq(paqrec) entregar(datos) paqenv = empaq(pro%numreq, ACK, checksum) envio_udt(paqenv) pro%numreq''
.n2lisis 780
2l receptor s"lo env1a un mensa6e de C! para el pa%uete correctamente recibido con mayor n5mero de secuencia.
2sta pol1tica puede generar mensa6es de duplicados. C!
2l receptor s"lo necesita recordar el n5mero de secuencia del pr"'imo pa%uete %ue desea.
780 en a##in
env!o pa#. 1 env!o pa#. 2 env!o pa#. 3 env!o pa#. 4 -a(ota la ventana/ recep. .C/ 17 env!o pa#. 5 recep. .C/ 27 env!o pa#. 6 disparo de alarma7 reenv!o pa#. 3 reenv!o pa#. 4 reenv!o pa#. 5 reenv!o pa#. 6 recep. pa#. 17 env!o .C/ 1 recep. pa#. 27 env!o .C/ 2 recep. pa#. 4 -se descarta/ reenv!o .C/ 2 recep. pa#. 5 -se descarta/ reenv!o .C/ 2 recep. pa#. 6 -se descarta/ reenv!o .C/ 2 recep. pa#. 37 env!o .C/ 3 recep. pa#. 47 env!o .C/ 4 recep. pa#. 57 env!o .C/ 5 recep. pa#. 67 env!o .C/ 6
$epeti#in Sele#ti"a
2l protocolo Eepetici"n Selectiva /SR0 es otra implementaci"n de la operatoria en pipeline.
!a idea central es disminuir el n5mero de pa%uetes a ser reenviados al recuperarse de una prdida.
A diferencia de G"N, el receptor reconoce por separado a cada uno de los pa%uetes correctamente recibidos.
2l receptor debe contar con un almacenamiento intermedio para alo6ar los pa%uetes recibidos correctamente pero fuera de orden.
$epeti#in Sele#ti"a
2l emisor s"lo debe reenviar a%uellos pa%uetes para los %ue a5n no se haya recibido el mensa6e de C! correspondiente
2sto implica %ue debemos contar con un tempori4ador independiente para cada pa%uete enviado cuyo C! asociado a5n no haya sido recibido.
emisor S$
ventana desli+ante
receptor S$
ventana desli+ante
-&isor S$
2l emisor SR debe reaccionar ante los eventos %ue se presenten de la siguiente manera*
Al recibir un nuevo pa%uete a ser enviado debe verificar si el siguiente n5mero de secuencia se encuentra dentro de la ventana. Al dispararse la alarma de un pa%uete debe reenviar s"lo ese pa%uete y debe reiniciar el tempori4ador. Al recibir un C! debe marcar ese pa%uete como recibido y en caso de ser el menor n5mero de pa%uete del cual faltaba recibir confirmaci"n, debe avan4ar la ventana hasta el pr"'imo pa%uete a5n sin confirmar.
$e#eptor S$
2l receptor SR debe reaccionar ante los eventos %ue se presenten de la siguiente manera*
Al recibir un pa%uete con n5mero de secuencia $ase se env1a su C! y se avan4a la ventana hasta el pr"'imo pa%uete esperado pero a5n no recibido. Al recibir un pa%uete con n5mero de secuencia entre $ase'! y $ase'N,! se env1a su C! y se guarda provisoriamente en el almacenamiento intermedio. Al recibir un pa%uete con n5mero de secuencia entre $ase,N y $ase,! s"lo se env1a su respectivo C!. 2n cual%uier otro caso, no se toma acci"n alguna.
Redes de Computadoras - Mg. A. G. Stankevicius 64
Proto#olo S$ en a##in
enviados con . a la espera 4 4 4 4 alarma pa#. 2 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 2 2 2 2 0 0 0 0 enviados no con . usa*les uera de orden no usa*les
alarma pa#. 4
4 1 234 1 2 4 1 234 1 2
.n2lisis S$
2l receptor SR no tiene forma de distinguir entre estos dos escenarios.
2n el primer caso el funcionamiento es el esperado, pero en el segundo caso, SR termina entregando un pa%uete fuera de orden.
>Hu relaci"n tiene %ue cumplirse entre el tamaIo de ventana y el con6unto de n5meros de secuencia disponibles@
2l tamaIo de ventana debe ser menor o igual a la mitad de la cantidad de n5meros de secuencia.
Preguntas?