Вы находитесь на странице: 1из 44

INTRODUCCIN A LA COMPUTACIN DISTRIBUIDA.......................................................................

12
DEFINICIONES.................................................................................................................................................2
LA HISTORIA DE LA COMPUTACIN DISTRIBUIDA............................................................................3
DIFERENTES FORMAS DE COMPUTACIN............................................................................................4
COMPUTACIN MONOLTICA............................................................................................................................4
COMPUTACIN DISTRIBUIDA..........................................................................................................................4 5
COMPUTACIN PARALELA................................................................................................................................5
COMPUTACIN COOPERATIVA...........................................................................................................................5
VIRTUDES Y LIMITACIONES DE LA COMPUTACIN DISTRIBUIDA............................................56
CONCEPTOS BSICOS DE SISTEMAS OPERATIVOS..........................................................................78
PROGRAMAS Y PROCESOS DE COMPUTACIN.................................................................................................7 8
PROGRAMACIN CONCURRENTE....................................................................................................................8 9
CONCEPTOS BSICOS DE REDES........................................................................................................1112
PROTOCOLOS..............................................................................................................................................11 12
ARQUITECTURA DE RED.................................................................................................................................12
PROTOCOLOS DE LA ARQUITECTURA DE RED.................................................................................................13
COMUNICACIN ORIENTADA A CONEIN !RENTE A COMUNICACIN SIN CONEIN...................................14
RECURSOS DE RED..........................................................................................................................................15
IDENTI!ICACIN DE NODOS Y DIRECCIONES DEL PROTOCOLO DE INTERNET............................................15 1"
IDENTI!ICACIN DE PROCESOS A TRAV#S DE PUERTOS..................................................................................19
DIRECCIONES DE CORREO ELECTRNICO...................................................................................................19 2$
URL...............................................................................................................................................................2$
CONCEPTOS BSICOS DE INENIER!A DEL SOFT"ARE............................................................2223
PROGRAMACIN PROCEDIMENTAL !RENTE A PROGRAMACIN ORIENTADA A OB%ETOS............................22 23
UML..............................................................................................................................................................23
LA ARQUITECTURA DE APLICACIONES DISTRIBUIDAS................................................................................23 24
CON%UNTOS DE &ERRAMIENTAS' MARCOS DE DESARROLLO Y COMPONENTES..............................................24
RESUMEN....................................................................................................................................................2425
E#ERCICIOS....................................................................................................................................................25
REFERENCIAS...............................................................................................................................................31
Introduccin a la Computacin Distribuida
Este libro trata sobre computacin distribuida. Este captulo comenzar
indicando qu se entiende por computacin distribuida en el contexto de este libro.
Para ello, se muestra la historia de la computacin distribuida y se compara este
tipo de computacin con otras formas de computacin. A continuacin, se
presentan alunos conceptos bsicos en los campos de sistemas operativos,
redes, e ingeniera del software, conceptos con los que el lector debe
familiarizarse para comprender el material presentado en captulos sucesi!os.
Definiciones
Uno de los orgenes de la confusin existente en el campo de la computacin
distribuida es la falta de un vocabulario universal, tal vez debido al increble ritmo
al que se desarrollan nuevas ideas en este campo. A continuacin se definen
algunos de los trminos claves utilizados en el contexto de este libro. Durante la
lectura del libro es necesario mantener en la mente estas definiciones, teniendo en
cuenta que algunos de dichos trminos pueden tener diferentes definiciones en
otros contextos.
n sus orgenes, la computacin se llevaba a cabo en un solo procesador. Un
monoprocesador o la computacin monoltica utiliza una !nica unidad central
de proceso o "#U $"entral Processin #nit% para e&ecutar uno o m's programas
por cada aplicacin.
Un sistema distribuido es un con&unto de computadores independientes,
interconectados a travs de una red ( que son capaces de colaborar a fin de
realizar una tarea. )os computadores se consideran independientes cuando no
comparten memoria ni espacio de e&ecucin de los programas. Dichos
computadores se denominan computadores ligeramente acoplados, frente a
computadores fuertemente acoplados, que pueden compartir datos a travs de
un espacio de memoria com!n.
)a computacin distribuida es computacin que se lleva a cabo en un sistema
distribuido. ste libro explora las formas en que los programas, e&ecutando en
computadores independientes, colaboran con otros a fin de llevar a cabo una
determinada tarea de computacin, tal como los servicios de red o las aplicaciones
basadas en la *eb.
Un servicio de red es un servicio proporcionado por un tipo de programa
especial denominado servidor en una red. )a *** $$orld $ide $eb% o
simplemente $eb es un servicio de este tipo, as como el correo electrnico
$email% ( la transferencia de ficheros $+,#- %ile &ransfer Protocol%. Un
programa de servidor es &ustamente la mitad del denominado modelo
cliente.servidor de la computacin distribuida. ste modelo se estudiar'
detalladamente en sucesivos captulos de este libro.
Una aplicacin de red es una aplicacin para usuarios finales, que se
e&ecuta en computadores conectados a travs de una red. xiste un gran
n!mero de aplicaciones de red, que van desde aplicaciones comerciales,
tales como carritos de la compra ( subastas electrnicas, a aplicaciones no
comerciales tales como salones de chat o &uegos de red.
)a diferencia entre servicios ( aplicaciones de red no es siempre ntida ( estos
trminos frecuentemente se intercambian.
La historia de la computacin distribuida
Al comienzo se utilizaban computadores aislados, cada uno de los cuales era
capaz de e&ecutar programas almacenados. )a conexin de computadores
aislados de forma que los datos se pudieran intercambiar fue una progresin
natural. )a conexin rudimentaria de computadores a travs de cables fue
utilizada (a en los a/os 01 para la comparticin de ficheros. 2o obstante, esta
pr'ctica requiere intervencin manual ( no puede denominarse aplicacin de
computacin a uno o m's programas que e&ecutan de forma autnoma con el
ob&etivo de realizar una determinada tarea. ,al aplicacin requiere comunicacin
de datos, donde dos computadores intercambien datos espont'neamente (
utilicen determinado soft3are ( hard3are para la realizacin de las tareas
inherentes de dicha aplicacin.
l primer 4+" $'equest %or "omments% de 5nternet, 4+" 6, es una propuesta que
especifica cmo las m'quinas participantes pueden intercambiar informacin con
otras a travs del uso de mensajes. 7ientras pudiera haber intentos individuales
de crear aplicaciones de red a peque/a escala $tal vez mediante la conexin de
dos o m's computadores a travs de cable%, la primera aplicacin de red fue el
correo electrnico, tambin denominado email, (a que el primer mensa&e fue
enviado ( registrado en 689: en una red A4#A2, de cuatro nodos. $Un nodo de
una red es un computador o m'quina que participa en la misma.% )os mecanismos
de transferencia de ficheros automatizados, que permiten el intercambio de
ficheros de datos entre las m'quinas, supusieron otra progresin natural ( (a en
6896 hubo una propuesta para dicho tipo de mecanismo $vase los 4+" 66; (
4+" 6;6%. <asta el da de ho(, el correo electrnico ( la transferencia de ficheros
siguen siendo dos de los m's populares servicios de red. =in embargo, el m's
conocido servicio de red es indudablemente la World Wide Web $WWW%. )a *eb
fue concebida originalmente a finales de los a/os >1 por cientficos del centro de
investigacin suizo "42 en ?inebra como una aplicacin que permite el acceso
a hipertexto sobre una red. Desde entonces, la *** se ha convertido en una
plataforma para aplicaciones ( servicios de red, inclu(endo el correo electrnico,
motores de b!squeda ( comercio electrnico $e(commerce%.
)a *** ha sido responsable de la gran explosin que ha habido en el uso de
5nternet. <asta 6881, A4#A2,, el predecesor de 5nternet, fue utilizado
principalmente por cientficos, investigadores ( acadmicos como una red de
datos. stimulado por la popularidad de la ***, la red creci espectacularmente
en los a/os 81, tal ( como se muestra en las figura+iguras 6.6 ( 6.:.
Algunos sitios de la *eb con informacin de la historia de la red ( que son mu(
visitados son @vimp.museophile.com, 6A, @zaBon.org, :A ( @isoc.org, C>A. Adem's,
@<afner and )(on, ;A es un fascinante informe de los primeros pasos de 5nternet,
inclu(endo informacin sobre las personas ( las organizaciones que estuvieron
implicados.
Diferentes formas de computacin
#ara comprender qu significa la computacin distribuida en el contexto de este
libro, resulta instructivo analizar diferentes formas de computacin.
"omputacin monoltica
n la forma m's sencilla de computacin, un !nico computador, tal como un
computador personal $#"- , Personal "omputer% se utiliza para la computacin.
Dicho computador no est' conectado a ninguna red (, por tanto, slo puede utilizar
aquellos recursos a los que tiene acceso de manera inmediata. sta forma de
computacin se denomina computacin monoltica. n su forma m's b'sica, un
!nico usuario utiliza el computador a la vez. )as aplicaciones de usuario slo
pueden acceder a aquellos recursos disponibles en el sistema. Un e&emplo de este
tipo de computacin, que puede denominarse computacin monoltica
monousuario, es el uso de aplicaciones tales como un programa de procesamiento
de texto o ho&as de c'lculo en un #".
)a computacin monoltica permite la convivencia de m!ltiples usuarios. sta
forma de computacin $vase figura la +igura 6.Ca%, donde varios usuarios pueden
compartir de forma concurrente los recursos de un !nico computador a travs de
una tcnica denominada tiempo compartido, fue popular en los a/os 91 ( >1. l
computador que proporciona el recurso centralizado se denomina mainframe para
diferenciarlo de peque/os computadores tales como minicomputadores o
microcomputadores. )os usuarios, que podran estar dispersos geogr'ficamente,
se pueden conectar al mainframe e interaccionar con el mismo durante una sesin
a travs de dispositivos denominados terminales. Algunos mainframes
ampliamente utilizados inclu(en las series 5D7 C01 ( las series Univac 6611. )as
aplicaciones que utilizan esta forma de computacin son tpicamente programas
separados ( dise/ados para llevar a cabo una sola funcin, tal como programas
de nminas o contabilidad para una empresa o una universidad.
"omputacin distribuida
n contraste, la computacin distribuida implica el uso de m!ltiples
computadores conectados a la red, cada uno de los cuales tiene su propio
procesador o procesadores ( otros recursos $vase la +figura 6.Cb%. Un usuario
que utilice una estacin de traba&o puede usar los recursos del computador local al
que la estacin de traba&o est' conectada. Adicionalmente, a travs de la
interaccin entre el computador local ( los computadores remotos, el usuario
tambin puede acceder a los recursos de estos !ltimos. )a *eb es un excelente
e&emplo de este tipo de computacin. l uso de un navegador para visitar un sitio
*eb3eb, tal como 2etscape o 5nternet xplorer, implica la e&ecucin de un
programa en un sistema local que interact!a con otro programa $conocido como
servidor *eb3eb% que se e&ecuta en un sistema remoto, a fin de traer un fichero
desde dicho sistema remoto.
"omputacin paralela
=imilar a la computacin distribuida, aunque diferente, es la denominada
computacin paralela o procesamiento paralelo, que utiliza m's de un
procesador simult'neamente para e&ecutar un !nico programa. E5dealmente, el
procesamiento paralelo permite que un programa e&ecute m's r'pido porque ha(
m's motores $m's "#U% e&ecut'ndolo. n la pr'ctica, suele ser difcil dividir un
programa de forma que "#U separadas e&ecuten diferentes porciones del
programa sin ninguna interaccinF @Goniges, 8A. )a computacin paralela se suele
realizar sobre un !nico computador que tiene m!ltiples "#U, aunque, de acuerdo
a Goniges, es tambin posible Ellevar a cabo procesamiento paralelo mediante la
conexin de varios computadores en una red. =in embargo, este tipo de
procesamiento paralelo requiere soft3are mu( sofisticado denominado soft3are de
procesamiento distribuidoF @Goniges, 8A.
7ediante la computacin paralela se pueden resolver problemas que de otra
manera sera imposible resolver con un !nico computador. ,ambin permite la
resolucin de problemas de computacin intensiva que de otra forma seran
insostenibles econmicamente. <o( en da, la computacin paralela se utiliza
principalmente en computacin cientfica a larga escala, en 'reas tales como la
biologa, la aeron'utica, la prediccin atmosfrica ( el dise/o de semiconductores.
Aunque se trata de una materia fascinante, la computacin paralela se encuentra
fuera de los ob&etivos de este libro.
"omputacin cooperati!a
4ecientemente, el trmino computacin distribuida se ha aplicado tambin a
pro(ectos de computacin cooperativa tales como el de la b!squeda de
inteligencia extraterrestre $=,5- , )earch for Extraterrestrial *ntellience%
@setiathome.ssl.berBele(.edu, 61A ( distributed.net @distributed.net, CCA. stos
pro(ectos dividen la computacin a larga escala entre las estaciones de traba&o de
las m'quinas de 5nternet, utilizando ciclos de "#U excedentes, como se describe
en el margen $2ota- Una discusin m's avanzada sobre este tipo de computacin
queda fuera del alcance de este libro.%
Virtudes y limitaciones de la computacin distribuida
Antes de la aparicin de la *eb, la computacin monoltica, tal como la e&ecucin
de aplicaciones de empresa en mainframes o la e&ecucin de un procesador de
texto o una ho&a de c'lculo en un computador personal por parte de un !nico
usuario, era la forma de computacin dominante. =e dice que ,homas *atson, el
fundador de 5D7, di&o esta frase en 68;C- E"reo que ha( un mercado mundial para
tal vez cinco computadores.F =in embargo, desde los a/os >1, la computacin
distribuida se ha vuelto tan importante H si no m's H como la computacin
monoltica.
xisten diferentes razones para la popularidad de la computacin distribuida-
Los computadores y el acceso a la red son econmicos. )os computadores
personales actuales tienen una potencia superior a los primeros mainframes,
adem's de tener mucho menor tama/o ( precio. Unido al hecho de que la
conexin a 5nternet est' disponible universalmente ( es econmica, el gran
n!mero de computadores que existen interconectados se convierte en una
comunidad ideal para la computacin distribuida.
Comparticin de recursos. )a arquitectura de la computacin distribuida
refle&a la arquitectura de computacin de las organizaciones modernas. "ada
organizacin mantiene de forma independiente los computadores ( recursos
locales, mientras permite compartir recursos a travs de la red. 7ediante la
computacin distribuida, las organizaciones pueden utilizar sus recursos de
forma efectiva. )a *eb, por e&emplo, consiste en una plataforma mu( potente
para la comparticin de documentos ( otros recursos dentro ( entre las
organizaciones.
scalabilidad. n la computacin monoltica, los recursos disponibles est'n
limitados por la capacidad de un computador. #or el contrario, la computacin
distribuida proporciona escalabilidad, debido a que permite incrementar el
n!mero de recursos compartidos seg!n la demanda. #or e&emplo, se pueden
a/adir m's computadores que proporcionen servicio de correo electrnico si se
produce un incremento en la demanda de este servicio.
!olerancia a fallos. Al contrario que la computacin monoltica, la
computacin distribuida permite que un recurso pueda ser replicado $o
refle&ado% a fin de dotar al sistema de tolerancia a fallos, de tal forma que
proporcione disponibilidad de dicho recurso en presencia de fallos. #or
e&emplo, las copias o bac+ups de una base de datos se pueden mantener en
diferentes sistemas de la red, de modo que si un sistema falla, se puede
acceder al resto de las copias sin interrumpir el servicio. Aunque no es posible
construir un sistema distribuido completamente fiable en presencia de fallos
@+ischer, )(nch, and #aterson, C1A, el desarrollador que dise/a e implementa
un sistema es el responsable de maximizar la tolerancia a fallos del mismo. )a
tolerancia a fallos en la computacin distribuida es un tema comple&o que ha
recibido mucha atencin en la comunidad investigadora. )os lectores
interesados en este tema pueden leer el traba&o de #anBa& Ialote @Ialote, C6A.
n cualquier forma de computacin, existe siempre un compromiso entre sus
venta&as ( sus desventa&as. Adem's de las venta&as descritas, la computacin
distribuida tambin tiene algunas desventa&as. )as m's significativas son-
"#ltiples puntos de fallo. <a( m's puntos de fallo en la computacin
distribuida. Debido a que m!ltiples computadores est'n implicados en la
computacin distribuida, ( todos son dependientes de la red para su
comunicacin, el fallo de uno o m's computadores, o uno o m's enlaces de
red, puede suponer problemas para un sistema de computacin distribuida.
xiste una cita popular, atribuida al notable cientfico )eslie )amport, que dice
que Eun sistema distribuido es aqul en el que el fallo de un computador que ni
siquiera sabes que existe, puede de&ar tu propio computador inutilizable.F
$spectos de seguridad. n un sistema distribuido ha( m's oportunidades de
ataques no autorizados. 7ientras que en un sistema centralizado todos los
computadores ( recursos est'n normalmente ba&o el control de una
administracin !nica, en un sistema distribuido la gestin es descentralizada (
frecuentemente implica a un gran n!mero de organizaciones independientes.
)a descentralizacin hace difcil implementar ( e&ecutar polticas de seguridadJ
por tanto, la computacin distribuida es vulnerable a fallos de seguridad (
accesos no autorizados, que desafortunadamente puede afectar a todos los
participantes en el sistema. ste problema est' claramente ilustrado por
ataques bien conocidos en 5nternet, tales como los gusanos ( los virus @ichen
and 4ochlis, :6J Ketter, ::A.
Debido a su importancia, la seguridad en la computacin es un tema
ampliamente investigado ( estudiado, ( se han desarrollado varias tcnicas
para la escritura ( realizacin de aplicaciones seguras. ,ales tcnicas inclu(en
cifrado, claves, certificados, firmas digitales, entornos seguros, autenticacin (
autorizacin. )a seguridad es un amplio tema que queda fuera del alcance de
este libro. =e recomienda a los lectores proseguir el estudio de este tema en
referencias tales como @LaB, C:A.
Ahora que se han clarificado los ob&etivos de este libro, se van a analizar algunos
conceptos b'sicos en tres disciplinas de inform'tica relacionadas con la
inform'tica- los sistemas operativos, las redes ( la ingeniera del soft3are. Aunque
para este libro no se requiere un conocimiento mu( profundo de estas disciplinas,
el libro s se refiere a algunos conceptos ( trminos asociados con las mismas. l
resto de este captulo introducir' dichos conceptos ( trminos.
Conceptos b%sicos de sistemas operativos
)a computacin distribuida supone la e&ecucin de programas en m!ltiples
computadores. A continuacin se describen algunos de los conceptos implicados
en la e&ecucin de programas en computadores actuales.
Proramas y procesos de computacin
Un programa soft3are es un artefacto construido por un desarrollador soft3are
utilizando alguna forma de lengua&e de programacin. ,picamente, el lengua&e es
de alto nivel ( requiere un compilador o intrprete para traducirlo a lengua&e
m'quina. "uando un programa se e&ecuta en un computador se representa como
un proceso. n los computadores modernos, un proceso consiste en un programa
que se e&ecuta, sus valores actuales, la informacin de estado ( los recursos
utilizados por el sistema operativo para gestionar la e&ecucin del programa. n
otras palabras, un proceso es una entidad din'mica que slo existe cuando un
programa se e&ecuta.
)a figura+igura 6.; muestra las transiciones de estados durante la vida de un
proceso. Un proceso entra en el estado listo cuando un programa inicia su
e&ecucin, cuando el sistema operativo lo sit!a en una cola, &unto a otros
programas que van a e&ecutarse. "uando los recursos del sistema $tales como la
"#U% se encuentran disponibles, un proceso es lanzado para e&ecutarse, de tal
forma que entra en el estado de e&ecucin. "ontin!a e&ecut'ndose hasta que debe
esperar por la ocurrencia de un evento $tal como la finalizacin de alguna
operacin de M=%, momento en el que el proceso entra en el estado bloqueado.
Una vez que el evento ocurra, el sistema operativo coloca al proceso en la cola de
e&ecucin, esperando a su turno para e&ecutar de nuevo. l proceso repite el ciclo
listo.e&ecucin.bloqueado tantas veces como sea necesario hasta que la e&ecucin
del proceso se complete, momento en el cual el proceso queda terminado.
n este libro se utilizar'n programas Iava, o fragmentos de ellos, como e&emplos
de cdigo. <a( tres tipos de programas Iava- aplicaciones $figura+igura 6.N%,
applets $figura+igura 6.0% ( servlets $figura+igura 6.9%. 5ndependientemente del
tipo de programa, cada programa se escribe como una clase &ava. Una aplicacin
Iava tiene un mtodo principal $main% ( se e&ecuta como un proceso independiente
$stand(alone%. #or otro lado, un applet no tiene un mtodo main ( se e&ecuta
mediante el uso de un navegador o de la herramienta que permite ver applets,
applet!ie,er. Un servlet es parecido al applet en el hecho de que no tiene un
mtodo main. =e e&ecuta en el contexto de un servidor *eb3eb. n este libro se
mostrar'n e&emplos de los tres tipos de programas ( fragmentos de programas,
siendo las aplicaciones los m's frecuentemente utilizados.
Un programa Iava se compila ( se convierte a un cdigo denominado bytecode,
un cdigo de ob&etos universal. "uando se e&ecuta, la 7'quina Oirtual Iava $IO7- ,
-a!a .irtual /achine% traduce el bytecode a cdigo m'quina nativo del
computador, siguiendo las transiciones de estados que se han estudiado
anteriormente. Debido a que el bytecode es un cdigo intermedio independiente
del tipo de m'quina ( que se traduce al cdigo de m'quina especfico en tiempo
de e&ecucin, se dice que los programas Iava son independientes de la
plataforma, indicando que el mismo programa se puede e&ecutar en cualquier tipo
de m'quina que tenga una IO7.
ste libro asume que el lector tiene un conocimiento b'sico del lengua&e de
programacin Iava, hasta el punto de que es capaz de compilar ( e&ecutar una
aplicacin stand-alone o un applet. Un programa stand(alone es aqul que se
e&ecuta por s solo, sin intercambiar mensa&es con otros programas.
Proramacin concurrente
)a computacin distribuida supone el uso de la programacin concurrente, que
consiste en la e&ecucin simult'nea de procesos. )os siguientes p'rrafos muestran
tres clases de programacin concurrente.
'rocesos concurrentes ejecutados en m#ltiples computadores. ?ran parte
del material de este libro inclu(e e&emplos de procesos separados e&ecutando
concurrentemente en computadores independientes interconectados a travs
de una red. )os procesos interactuan interact!an con otros procesos mediante
el intercambio de datos sobre la red, pero su e&ecucin es por otra parte
completamente independiente. "uando alguien accede a una p'gina *eb3eb
utilizando un navegador, un proceso del mismo que e&ecuta en la m'quina local
interact!a con un proceso que se e&ecuta en la m'quina del servidor *eb3eb.
)a programacin concurrente que implica a m!ltiples m'quinas requiere
determinado soporte de programacinJ es decir, el soft3are utilizado para los
programas participantes debe contener la lgica necesaria para permitir la
interaccin entre los procesos. Uno de los temas principales de este libro es
cmo se expresa esta lgica en los programas.
'rocesos concurrentes ejecutados en un #nico computador. )os
computadores modernos utilizan sistemas operativos multitarea, que permiten
la e&ecucin concurrente de m!ltiples tareas o procesos. )a concurrencia
puede ser real o virtual. )a verdadera concurrencia multitarea slo es posible si
el computador tiene m!ltiples "#U, de forma que cada "#U pueda e&ecutar un
proceso. n un computador con una sola "#U, se utiliza tiempo compartido
$vase la +figura 6.>% o roda&as de tiempo para permitir que los procesos
puedan e&ecutarse por turnos, creando la ilusin de que se e&ecutan en
paralelo.
Pa que la multitarea es una funcionalidad del sistema operativo, no se necesita
una programacin especial para llevar a cabo este tipo de programacin
concurrente, es decir, no se necesita una lgica soft3are especial en el
programa para iniciar la multitarea.
'rogramacin concurrente dentro de un proceso. Adem's de la
programacin concurrente entre diferentes procesos, muchas veces un !nico
programa necesita iniciar diferentes tareas que se e&ecuten concurrentemente.
#or e&emplo, un programa podr' necesitar realizar otras tareas mientras espera
indefinidamente por la entrada de un usuario en una interfaz de ventanas.
,ambin podra ser aconse&able que un programa e&ecute varias tareas en
paralelo, por motivos de rendimiento. )a programacin concurrente dentro de
un proceso se lleva a cabo a travs de dos tipos de herramientas
proporcionadas por el sistema operativo.
'rocesos padres e hijos
n tiempo de e&ecucin, un proceso puede crear procesos subordinados, o
procesos hijos. A travs de la multitarea real o virtual, el proceso original,
denominado proceso padre, contin!a e&ecutando simult'neamente con el
proceso hi&o $vase la +figura 6.8%. Un proceso hi&o es un proceso completo, que
consiste en un programa en e&ecucin, sus propios valores actuales e informacin
de estado, parte de la cual es heredada del proceso padre. Un proceso padre
puede saber cuando cu'ndo un proceso hi&o ha finalizado.
Threads o hilos
n lugar de procesos hi&os, un proceso puede crear threads o hilos, tambin
conocidos como procesos ligeros. )os hilos poseen un mnimo de informacin de
estado, comport'ndose por lo dem's de la misma forma que los procesos. Debido
a que implican menos sobrecarga, es preferible utilizar hilos que utilizar procesos
hi&os.
)a creacin ( coordinacin de hilos requiere el soporte de la programacin. l
soft3are correspondiente al programa debe escribirse con la lgica necesaria para
la creacin de hilos ( la coordinacin, o sincronizacin de la e&ecucin de la familia
de hilos creados por el hilo padre.
)a e&ecucin concurrente de los hi&os hilos puede ocasionar una condicin de
carrera. Una condicin de carrera ocurre cuando una serie de mandatos de un
programa se e&ecutan de una forma arbitraria e intercalada, pudiendo llevarse a
cabo una e&ecucin no determinista. )a figura+igura 6.61 ilustra esta situacin.
=ea contador una variable compartida entre dos hilos concurrentes. Al e&ecutar la
secuencia 6, en la cual las instrucciones de los dos procesos se e&ecutan
secuencialmente, el valor del contador se incrementa en dos. #or otro lado, si se
e&ecuta la secuencia :, en la cual el con&unto de instrucciones se intercala, el
contador slo se incrementa en uno.
)as condiciones de carrera se pueden evitar si se utiliza e(clusin mutua dentro
de un segmento de cdigo de forma que se asegure que los mandatos de dicho
segmento slo puedan e&ecutarse por parte de un !nico threadhilo en un
determinado momento. A dicho segmento de cdigo se le denomina regin
crtica. n nuestro e&emplo, la regin crtica comprende el cdigo en el cual se
accede ( se incrementa la variable contador.
)a programacin que utiliza threadhilos se denomina programacin multithread
o programacin multihilo. Un programa multithread escrito para evitar
condiciones de carrera se dice que es thread-safe. l desarrollo de programas
thread(safe comple&os requiere unos avanzados conocimientos de programacin.
Afortunadamente, en este libro apenas se utilizan threadhilos de forma explcita,
(a que muchas de las herramientas que dan soporte a aplicaciones de red
frecuentemente utilizan programacin multithreadhilo internamente.
)ilosThreads &ava
)a 7'quina Oirtual Iava permite que una aplicacin tenga m!ltiples threadhilos
e&ecutando concurrentemente. "uando una 7'quina Oirtual Iava se inicia, ha(
normalmente un !nico threadhilo $aunque en algunos sistemas un programa se
puede iniciar con m's de un threadhilo %, que tpicamente invoca al mtodo
denominado main de alguna clase, tal como la clase de una aplicacin escrita por
el programador. Ltros threadshilos adicionales pueden ser creados a partir de un
threadhilo activo, ( cada threadhilo se e&ecutar' independientemente ( en paralelo
con el resto hasta que termine.
#ara permitir el uso de threadshilos en un programa, Iava proporciona una clase
denominada &hread ( una interfaz denominada 'unnable.
n un programa Iava ha( dos formas de crear un nuevo threadhilo de e&ecucin-
6. Declarar una clase como subclase de la clase &hread. sta subclase debe
sobreescribir el mtodo run de la clase &hread. "uando se crea e inicia una
instancia de la subclase, el cdigo del mtodo run se e&ecuta concurrentemente
con el threadhilo principal.
:. Declarar una clase que implemente la interfaz 'unnable. sta clase
implementa el mtodo run de dicha interfaz. "uando se crea e inicia una
instancia de la subclase, el cdigo del mtodo run se e&ecuta concurrentemente
con el threadhilo principal.
)a figura+igura 6.66 muestra el uso de la primera forma de crear un nuevo
threadhilo de e&ecucin, mientras que la figura+igura 6.6: muestra el uso de la
segunda forma.
n Iava, la manera m's sencilla de evitar las condiciones de carrera es a travs
de la utilizacin de los m*todos est%ticos sincroni+ados. Un mtodo est'tico
que contenga en su cabecera la palabra reservada synchronized puede e&ecutarse
por un !nico threadhilo simult'neamente. #or tanto, se garantiza que el cdigo de
un mtodo est'tico sincronizado sea m!tuamente exclusivo. n el e&emplo
mostrado en la figura+igura 6.61, el cdigo correspondiente al incremento de la
variable contador debe encapsularse dentro de un mtodo est'tico sincronizado,
tal que el contador slo se incremente por parte de un !nico threadhilo
simult'neamente. Un e&emplo de cdigo Iava que ilustra el uso de threadshilos (
mtodos est'ticos sincronizados puede encontrarse en el e&ercicio&ercicio :$d.% al
final de este captulo.
n subsecuentes captulos, se utilizar'n los trminos proceso (e thread hilo
frecuentemente. =i el lector no se encuentra familiarizado con los threads, al final
de este captulo ha( un con&unto de e&ercicios que le permitir'n practicar a travs
del uso de threadshilos Iava.
Conceptos b%sicos de redes
Despus de analizar algunos conceptos b'sicos de los sistemas operativos que
son relevantes para la computacin distribuida, se proceder' a realizar lo mismo
con conceptos b'sicos de redes.
Protocolos
n el contexto de las comunicaciones, un protocolo es un con&unto de reglas que
los participantes deben seguir. n una reunin, los seres humanos siguen
instintivamente un protocolo no establecido explcitamente, basado en la visin, el
lengua&e del cuerpo ( los gestos. ste protocolo establece que slo una persona
debe hablar en un momento determinado mientras el resto escucha. n una
conversacin telefnica, una parte inicia la llamada, ( a continuacin, despus de
que la llamada es aceptada, las dos partes se turnan en la comunicacin,
utilizando pausas ( preguntas para indicar cuando la otra parte tiene la palabra.
n la comunicacin entre computadores, los protocolos deben estar definidos
formalmente e implementados de una manera precisa. #ara cada protocolo, debe
existir un con&unto de reglas que especifiquen las siguientes cuestiones-
"mo se codifican los datos intercambiados.
"mo los eventos $envo, recepcin% se sincronizan $ordenan% de modo que los
participantes puedan enviar ( recibir informacin de una forma coordinada.
l concepto de protocolo se concretar' m's cuando se estudien diferentes
protocolos en el resto del libro.
Debe destacarse que un protocolo es un con&unto de reglas. )a especificacin de
un protocolo no indica cmo deben implementarse dichas reglas. #or e&emplo, el
protocolo <,,# $0ypertext &ransfer Protocol% especifica las reglas que deben
seguir un proceso del navegador *eb3eb ( un proceso del servidor *eb3eb.
"ualquier programa en el servidor *eb3eb que cumpla las reglas establecidas
satisfar' el protocolo, sin importar el lengua&e de programacin o sintaxis utilizada.
#or tanto, es importante entender que un protocolo $tal como <,,#% es distinto de
su implementacin $tal como indica la gran variedad de navegadores *eb3eb,
inclu(endo los navegadores 2etscape e 5nternet xplorer%.
An'logamente, las reglas de un deporte, tal como el baloncesto, son especificadas
por alguna autoridad, como por e&emplo la 2DA $1ational 2as+etball Association%,
pero es responsabilidad de cada equipo ( cada &ugador llevar a cabo dicho &uego,
siempre siguiendo dichas reglas.
Arquitectura de red
n los libros sobre redes de datos, normalmente se presentan las funciones de
una red utilizando una arquitectura de red $vase la +figura 6.6C%. Dicha
arquitectura de red cl'sica se denomina arquitectura L=5 $3pen )ystem
*nterconnect% ( divide las funciones comple&as de una red en siete capas. ,odas o
parte de estas funciones deben estar presentes en un computador que participa
en la comunicacin de datos (, por tanto, tambin en la computacin distribuida. l
lector interesado en cuestiones m's especficas del modelo L=5 deber' buscar
m's informacin en libros de redes tales como @,anenbaum, CNA. #ara los
ob&etivos de este libro, se presenta una arquitectura apropiada para 5nternet.
)a arquitectura de red de 5nternet est' representada en la figura+igura 6.6;, ( est'
formada por cuatro capas- fsica, 5nternet, transporte ( aplicacin. )a capa fsica
proporciona las funciones de transmisin de se/ales, representando los flu&os de
datos entre los computadores. )a capa Internet permite dirigir ( entregar un
paquete de datos a un computador remoto. )a capa de transporte proporciona
las funciones necesarias para la entrega de paquetes de datos a un especfico
proceso que se e&ecuta en el computador remoto. +inalmente, la capa de
aplicacin permite que los mensa&es se puedan intercambiar entre los programas,
a fin de posibilitar el funcionamiento de una aplicacin, tal como la *eb.
)a divisin de las capas es conceptual- la implementacin de estas funciones no
necesita dividirse claramente en el hard3are ( soft3are que implementa la
arquitectura. )a divisin conceptual de la arquitectura en capas sirve al menos
para dos propsitos !tiles. #rimero, permite que los protocolos se puedan
especificar de una forma sistem'ticaJ es decir, utilizando una arquitectura de red,
estos protocolos se pueden especificar capa a capa, resolviendo la problem'tica
asociada a cada capa. =egundo, la arquitectura de capas permite que los detalles
de las funciones de la red se puedan abstraer u ocultar. "uando se escribe una
aplicacin, es !til no preocuparse por los detalles de la comunicacin de los datos
( concentrarse en el protocolo de la aplicacin. Una arquitectura de capas hace
posible que los programas se escriban como si los datos se intercambiaran
directamente $vase las lneas dis&untas de las figura+iguras 6.6C ( 6.6;%.
4ealmente, el mensa&e enviado desde una aplicacin debe procesarse por todas
las capas de la arquitectura de la red $vase las lneas punteadas%.
ventualmente, la se/al de datos que representa el mensa&e se transmite a travs
del enlace fsico que une los computadores $vase las lneas continuas%. Una vez
que las se/ales llegan al computador receptor, ste las procesa en el orden
inverso, hasta que finalmente los datos son reconstruidos en el mensa&e original (
ste es entregado al proceso apropiado.
Protocolos de la arquitectura de red
Ahora se van a describir algunos protocolos especficos de la arquitectura de
5nternet. l protocolo para la capa de 5nternet se denomina, como su nombre
indica, #rotocolo de 5nternet $5#, *nternet Protocol%. ste protocolo utiliza un
esquema de nombrado particular, que se estudiar' a continuacin, para identificar
los computadores en una red ( para encaminar los datos. n la capa de
transporte, ha( dos protocolos ampliamente utilizados- l protocolo de "ontrol de
,ransmisin $,"#, &ransmission "ontrol Protocol%, que proporciona una
comunicacin orientada a cone(in ( el #rotocolo de Datagrama de Usuarios
$UD#, #ser 4ataram Protocol%, que ofrece una comunicacin sin cone(in. $n
la prxima seccin se analizar'n m's detenidamente estos conceptos (
posteriormente en el captulo"aptulo :%. +inalmente, en la capa de aplicacin,
existen diferentes protocolos especificados para aplicaciones de red, tales como el
#rotocolo de ,ransferencia de ficheros $+,#, %ile &ransfer Protocol%, el #rotocolo
de "orreo lectrnico =encillo $=27#, )imple 1et,or+ /ail Protocol% ( el
#rotocolo de ,ransmisin de <ipertexto $<,,#, 0ypertext &ransmission Protocol%.
l conocido protocolo &ransmission "ontrol Protocol5 *nternet Protocol $,"#M5#% es
un con&unto de protocolos que inclu(e a los protocolos de 5nternet ( transporte de
esta arquitecturaJ estos protocolos se utilizan universalmente para la comunicacin
a travs de 5nternet. #or tanto, una aplicacin de 5nternet debe e&ecutarse en un
computador que implemente esta parte de la arquitectura de 5nternet,
coloquialmente denominada pila de protocolos !C',I'.
)os lectores interesados en protocolos de capas inferiores pueden consultar libros
de texto tales como @=tallings, 6:J ,anenbaum, 6CA. ste libro est' orientado al
estudio de protocolos de la capa de aplicacin. l libro comienza analizando
algunos de los protocolos de aplicacin m's populares, como los que se
mencionan en el p'rrafo anterior. A continuacin, se estudiar' cmo tales
aplicaciones se utilizan en la computacin distribuida.
"omunicacin orientada a conexin frente a comunicacin sin conexin
Aunque la comunicacin orientada a conexin ( la comunicacin sin conexin son
temas relacionados con las redes de datos, en esta seccin se discutir'n los
aspectos que distingues ambos tipos de comunicacin.
n una comunicacin orientada a conexin, una conexin H que puede ser fsica
$es decir, tangible, proporcionada mediante dispositivos hard3are tales como
cables, mdem ( receptores% o lgica $es decir, abstracta o !irtual, utilizando
soft3are que emula una conexin% H se establece entre dos partes, el emisor ( el
receptor. #or e&emplo, alguien $el emisor% puede marcar un n!mero para realizar
una llamada telefnica a un amigo $el receptor%. Una vez establecida la conexin,
los datos $voz en el caso de una llamada telefnica% pueden enviarse
continuamente a travs de la conexin hasta que la sesin finaliza. n el caso de
la llamada telefnica, la sesin termina cuando el emisor cuelga el telfono al final
de la conversacin, punto en el cual la conexin se corta. <a( que destacar que
en este modo de comunicacin no es necesario especificar explcitamente la
direccin del destinatario para cada paquete de datos individual durante el tiempo
que la conexin se utilice.
"omo su nombre indica, la comunicacin sin conexin implica que no existe
conexin. n su lugar, los datos se envan mediante el uso de paquetes ( cada
emisor debe indicar de forma explcita en cada paquete la direccin del receptor.
Un e&emplo de comunicacin sin conexin es la correspondencia entre dos amigos
a travs de mensa&es de correo electrnico o cartas. "ada correo electrnico o
carta, que contiene un mensa&e, deben contener la direccin del destinatario. l
intercambio contin!a hasta que la correspondencia o sesin finaliza.
n una red de datos es m's sencillo proporcionar una comunicacin sin conexin,
(a que sta no necesita mantener conexiones separadas. =in embargo, la falta de
conexin puede implicar la prdida de paquetes de datos en la entrega o la
entrega fuera de orden de los mismos. #or e&emplo, cuando se envan m!ltiples (
sucesivos correos electrnicos o cartas a una !nica persona, cada uno de los
cu'les cuales contiene parte de un mensa&e, es posible que el destinatario reciba
los correos electrnicos o cartas desordenados, (a que cada correo o carta se
entregan de forma independiente.
#or otro lado, la comunicacin orientada a conexin puede asegurar la entrega
segura ( ordenada de los paquetes de datos a travs de una conexin
establecida, pero con el coste adicional de la sobrecarga que implica este proceso.
ste es otro e&emplo de compromiso entre ambas soluciones.
)a figura+igura 6.6N muestra gr'ficamente la diferencia entre estas dos formas de
comunicacin. n el e&ercicio&ercicio C que se encuentra al final de este captulo,
se realiza un an'lisis sencillo de las diferencias existentes entre ambas formas de
comunicacin a travs de un estudio guiado.
n cualquier capa de una arquitectura de red, la comunicacin se puede lograr a
travs de utilidades orientadas a conexin o sin conexin. n la capa de transporte
de la pila ,"#M5#, el protocolo UD# es un protocolo sin conexin, mientras que el
protocolo ,"# es un protocolo orientado a conexin. =e dice que una aplicacin o
protocolo que utiliza UD# para transmitir datos es una aplicacin o protocolo sin
conexin a nivel de transporte, mientras que uno que utiliza ,"# es orientado a
conexin en dicha capa o nivel. s necesario destacar que es posible que una
aplicacin sea orientada a conexin en una capa ( sin conexin en otra. #or
e&emplo, una aplicacin que utiliza el protocolo <,,#, un protocolo orientado a
conexin en la capa de aplicacin, podra utilizar UD# en la capa de transporte
para transmitir ( recibir los datos.
)a tabla,abla 6.6 compara los dos modos de comunicacin.
'ecursos de red
ste libro utilizar' frecuentemente el trmino recursos de red. #or recursos de
red se entiende aquellos recursos que est'n disponibles para los participantes de
una comunidad de computacin distribuida. #or e&emplo, en 5nternet los recursos
de red inclu(en hard3are tal como los computadores $inclu(endo servidores de
Internet ( encaminadores% o equipamiento $impresoras, m'quinas de fax,
c'maras, etc.%, ( soft3are, tal como procesos, buzones de correo electrnico,
ficheros o documentos *eb3eb. Una clase importante de recursos de red son los
servicios de red, tales como la *eb o el servicio de transferencia de ficheros, que
son implementados por procesos que e&ecutan en computadores.
Aunque la idea parece simple, uno de los retos claves en la computacin
distribuida es la identificacin !nica de los recursos disponibles en la red. )a
prxima seccin describe cmo se lleva a cabo la identificacin de recursos en
5nternet.
*dentificacin de nodos y direcciones del Protocolo de *nternet
+sicamente, 5nternet es una gigantesca malla de enlaces de red ( computadores
o nodos. "onceptualmente $vase la +figura 6.60%, las principales arterias de
5nternet son un con&unto de enlaces de red de alto ancho de banda que
constitu(en el esqueleto central o Ebac+boneF de la red. "onectadas a este
bac+bone existen redes individuales, cada una de las cuales tiene un identificador
!nico. )os computadores con soporte ,"#M5#, denominados nodos $o m%-uinas%
de 5nternet, est'n unidos a redes individuales. A travs de este sistema de
Eautopistas de la informacinF, los datos pueden transmitirse desde una
m'quinanodo <
6
72
6
en una red 2
6
4
6
a otrao m'quinanodo <
:
72
:
en una red
2
:
4
:
. #ara realizar la transferencia de datos desde un programa es necesario
identificar de forma !nica al proceso receptor, de forma similar al proceso de envo
de una carta por parte del servicio postal.
"omo se mencion anteriormente, un proceso es una representacin en tiempo
real de un programa cuando se e&ecuta en un computador. #or otro lado, tambin
se ha descrito que en 5nternet un computador o una m'quinanodo se encuentra
enlazado a una red. #or tanto, para identificar un proceso es necesario indicar la
red, el computador enlazado a dicha red ( a continuacin el proceso que se
e&ecuta en el computador.
n la arquitectura de 5nternet, la identificacin de la m'quinanodo es parte del
#rotocolo 5nternet $5#%, el cual, como (a se describi, es el protocolo de la capa
5nternet de la pila de protocolos ,"#M5#. A continuacin se analiza el esquema de
identificacin de nodos especificado en la versin ; de 5#, conocida como 5#v;.
Aunque el esquema se ha modificado en la versin 0 $5#v0% para permitir el uso de
m's direcciones 5nternet, los principios del esquema son los mismos para las dos
versiones, habindose escogido 5#v; por su ma(or simplicidad. n el contexto de
este libro, las diferencias entre las dos versiones no son significativas.
n 5#v;, cada nodo m'quina de 5nternet se identifica por una !nica cadena de C:
bits. Dada una longitud de C: bits, el n!mero total de direcciones posibles es :
C:
, o
lo que es lo mismo, el espacio de direcciones de 5#v; permite :
C:
$;.:8;.809.:80 o
sobre ; billonesmil millones% direcciones.
"ada direccin 5# debe identificar tanto la red en la cual el la nodo m'quina reside
como el la nodo m'quina en s. l esquema de direccionamiento 5#v; funciona de
la siguiente forma-
l espacio de direcciones se divide en cinco clases, que van desde la clase A
hasta la clase . "omo queda representado en la figura+igura 6.69, cada clase
tiene un !nico prefi&o. )a clase A comienza con el bit 1, la clase D comienza con la
secuencia de bits 61, la clase " con la secuencia 661 ( as sucesivamente. l
resto de los bits de cada direccin se utilizan para identificar la red ( el la
m'quinanodo correspondiente. #or tanto, una direccin de clase A tiene C6 bits
para identificar el par red.nodom'quina, una direccin de clase D tiene C1 bits (
as sucesivamente. sto significa que ha( un total de :
C6
$aproximadamente :
billonesmil millones% direcciones de clase A disponibles, mientras que ha( un
m'ximo de :
C:
$aproximadamente 6 billnmil millones% direcciones de clase D
disponibles. l n!mero m'ximo de direcciones de clase ", D o se puede calcular
de forma similar. s importante destacar que dentro de cada clase un peque/o
n!mero de direcciones $tales como la direccin con todos los bits a 1 o todos los
bits a 6% queda reservado para propsitos especiales.
s importante saber por qu es necesario tener diferentes clases de direcciones.
sto est' relacionado con el n!mero de computadores que cada red individual
puede soportar. "onsidrese una direccin de clase A $vase la la +figura 6.69%-
los 9 bits que siguen al prefi&o 1 se utilizan para la identificacin de la red ( el resto
$C:.>Q :; bits% identifican el nodola m'quina dentro de la red. #or tanto, cada red
de clase A puede albergar hasta :
:;
$aproximadamente 60 millones%
computadores, aunque no puede haber m's de :
9
o 6:> redes de este tipo. Del
mismo modo, se puede analizar que cada una de las :
6;
$60.C>;% redes de clase D
pueden tener hasta :
60
$0N.NC0% nodosm'quinas. 5gualmente, existen muchas m's
redes de clase " que de clase D, aunque cada red de clase " puede contener
muchos menos computadores.
"omo se ha mencionado anteriormente, en raras ocasiones tendremos ocasin de
identificar nodos m'quinas 5# utilizando la direccin de C: bits. n las ocasiones
que utilicemos la direccin numrica, lo m's probable es que usemos la
denominada notacin decimal con puntos en su lugar. )a notacin decimal con
puntos de una direccin 5# utiliza un valor decimal para cada uno de los ; b(tes de
la direccin 5#.
"omo un e&emplo, supongamos que la notacin decimal con puntos de una
direccin 5nternet particular es 6:8.0N.:;.N1. )a expansin binaria de C: bits de
dicha notacin es la siguiente-
RR+5?U4A U2161:SC.epsTT
Pa que la secuencia de bits comienza por 61, la direccin es una direccin de
clase D. Dentro de esta clase, la porcin correspondiente a la identificacin de la
red corresponde a los restantes bits en los primeros : b(tes, es decir,
11111616111116, ( la porcin correspondiente a la identificacin de la m'quina
nodo corresponde a los !ltimos : b(tes, 1116611111661161. #or conveniencia, el
prefi&o binario que identifica la clase se suele incluir como parte de la porcin de
red de la direccin, de forma que se dice que esta direccin tiene como
identificacin de red 6:8.0N ( como identificacin del computador en la red :;.N1.
Oeamos otro e&emplo. Dada la direccin ::;.1.1.6, se puede expandir de la
siguiente forma-
RR+5?U4A U2161:SC.epsTT
l prefi&o binario 6661 indica que esta direccin es de clase D, tambin
denominada direccin de multidifusin $multicast%. )os paquetes de datos
enviados a esta direccin deben ser entregados al grupo de multidifusin multicast
1111111111111111111111111116.
)as direcciones 5# las asigna una autoridad conocida como I$.$ $Internet
$ssigned .umbers $uthority% @communit(.ml.org, :NA a organizaciones tales
como universidades o proveedores de servicio en 5nternet $5=#, *nternet )er!ice
Pro!ider% $1ota- )a asignacin de esta autoridad es din'mica. Oase
http-MM333.3ia.orgMpubMiana.html, donde se describe la historia de la evolucin de
esta autoridad%. Dentro de cada red, la asignacin de la identificacin de la nodo
m'quina se hace de forma interna a la organizacin. 2ormalmente, una
organizacin hace uso de esta porcin de la direccin para subdividir su red en
una &erarqua de subredes, con un !nico n!mero de nodo asignado a cada
computador unido a una subred. #or e&emplo, el administrador de la clase D
6:8.0N podra designar el segundo b(te $es decir, los > bits de la parte izquierda
de la porcin del nodo% como identificador de una subred. Da&o este esquema de
subredes, la direccin 5# 6:8.0N.C:.C identifica a una m'quinanodo con
identificador C en una subred de identificador C: de esta red.
Desde la dcada de los 81, la demanda de direcciones 5# se ha disparado hasta el
punto de que el espacio de direcciones se ha agotado. l esquema de
direccionamiento est'tico que se acaba de describir se ha aumentado con
numerosos cambios en respuesta a la demanda creciente de direcciones,
inclu(endo el esquema de direccionamiento din%mico que se ha hecho popular
con los proveedores de servicio de 5nternet o 5=#, tales como American Lnline
$AL)%. Utilizando direccionamiento din'mico, un 5=# o grandes organizaciones
pueden extender el espacio de direcciones para una red 5# dada mediante la
unin de direcciones. #or e&emplo, una direccin est'tica de red de clase D puede
tener hasta :
60
o 0N.NC0 nodos m'quinas est'ticaos. Uniendo las
aproximadamente 0N.111 direcciones ( asignando cada una de ellas a una sesin
activa ba&o demanda, es posible dar soporte a millones de computadores 5#,
asumiendo que no ha( m's de 0N.111 sesiones activas en un determinado
momento. #or esta razn, cuando se accede a 5nternet a travs de un 5=#, la
direccin 5# del tu computador puede variar de una sesin a otra.
)a ma(ora de los usuarios tienen problemas para memorizar una cadena de C:
bits, incluso con la a(uda de la notacin decimal con puntos. #or tanto, es
preferible utilizar un nombre simblico para identificar un computador. sta es la
razn por la que la comunidad de 5nternet adopt el /istema de .ombrado de
Dominio $D./, 4omain 1ame )ystem%. l acrnimo D2= tambin se refiere al
=ervicio de 2ombrado de Dominio $4omain 1ame )er!ice%, que consiste en el
servicio que proporciona un =istema de 2ombrado de Dominio. "ada vez que se
utiliza el correo electrnico o se visualiza una p'gina 3eb, se identifica el nodola
m'quina de 5nternet utilizando un nombre de dominio basado en el protocolo D2=.
"ada nombre de dominio contiene al menos dos componentes separados por
puntos. n una direccin como acme.com, el !ltimo componente, com en este
caso, se denomina dominio de primer nivel. A la izquierda del punto en el
nombre, acme en este caso, se encuentra lo que se denomina dominio de
segundo nivel. s posible tambin que existan subdominios, tales como
marBeting.acme.com. )os nombres de dominios no son sensibles a las
ma(!sculas ( min!sculas, por lo que se pueden utilizar indistintamente.
Actualmente, los dominios de primer nivel est'n clasificados como se muestra en
la tabla,abla 6.: @Drain, 6NA.
)os dominios de segundo nivel combinados con los dominios de primer nivel $por
e&emplo, calpol(.edu% normalmente, aunque no siempre, corresponden a la porcin
de red de una direccin 5#, mientras que el resto del nombre del dominio $por
e&emplo, 333.csc% se utiliza para identificar la subred, si existe, ( el nombre de la
m'quina nodo. Oase la figura +igura 6.6> donde se describe gr'ficamente esta
caracterstica.
"ada nombre de dominio corresponde a una direccin 5#, aunque esta asociacin
no tiene porque ser permanente. #or e&emplo, el nombre de dominio eba(.com
actualmente corresponde a la direccin 5# :60.C:.6:1.6CC. )a resolucin de un
nombre de domino para obtener la correspondiente direccin 5# ( viceversa se
lleva a cabo a travs de un servicio conocido como resolucin de nombres D./.
l e&ercicio&ercicio ; muestra una forma de probar este servicio.
+inalmente, el nombre de dominio localhost se puede utilizar para identificar el
computador en el cual se e&ecuta el proceso. ste nombre se corresponde siempre
a la direccin 5# 6:9.1.1.6 ( permite identificar al computador local.
Una vez que se identifica una m'quina nodo utilizando una direccin 5# o un
nombre de dominio, se pueden identificar tambin recursos individuales dentro de
la m'quinanodo. A continuacin se mostrar'n tres e&emplos de esquemas de
identificacin de un proceso, un receptor de correo electrnico ( documentos
*eb3eb, respectivamente.
*dentificacin de procesos a tra!s de puertos
specificar el nombre de dominio o su direccin 5# de forma correcta nos permite
localizar una m'quinanodo o computador en 5nternet. #ero en las aplicaciones de
red, los datos deben entregarse a un proceso especfico que se e&ecuta en un
computador. #or tanto, se necesita un esquema de nombrado que permita
identificar de forma !nica un proceso. <a( muchos esquemas que permiten
realizar esto. #or e&emplo, una posibilidad es utilizar un !nico identificador de
proceso 0'ID, Process *dentifier%, que le asigna el sistema operativo al proceso
$vase e&ercicio el &ercicio ;%. n 5nternet, el protocolo utilizado para identificar un
proceso usa una entidad lgica conocida como puerto de protocolo, o
simplemente puerto. s importante recordar que la capa de transporte de la
arquitectura de 5nternet es la encargada de distribuir los datos a los procesos,
siendo los dos protocolos m's conocidos de esta capa ,"# ( UD#. "ada uno de
estos protocolos utiliza un con&unto separado de puertos en cada m'quina para
llevar a cabo esta tarea. Un proceso que desee intercambiar datos con otro
proceso utilizando ,"# o UD# debe tener asignado uno de estos puertos. Una
aplicacin que desee enviar datos a un proceso actualmente asociado al puerto p
en la m'quina /el nodo 0, debe dirigir los datos a 60/, p7. n 5#v;, existen :
60
puertos $desde el puerto 1 hasta el puerto 0N.NCN% en cada nodom'quina, ba&o los
protocolos ,"# o UD#. #or e&emplo, cuando se accede a un sitio *eb3eb,
normalmente se hace uso del servicio de un proceso que e&ecuta en el nodola
m'quina que se especific $por e&emplo, 333.calpol(.edu% utilizando el protocolo
,"# ( el puerto >1.
n los protocolos ,"# ( UD#, los n!meros entre el 1 ( el 61:C $:
61
% est'n
reservados para servicios conocidos. stos puertos se denominan puertos bien
conocidos 0well-known1 ( los asigna la autoridad 5A2A @isoc.org, C>A. n algunos
sistemas slo los procesos del sistema o los programas que e&ecutan usuarios
privilegiados pueden utilizan estos n!meros. A cada servicio de red popular, tal
como telnet, +,#, <,,# o =7,#, se le asigna uno de estos n!meros de puerto
$:C, :6, >1, :N, respectivamente%, que permite localizar cada uno de estos
servicios. n los e&emplos de programacin de este libro se especificar'n en
muchas ocasiones estos n!meros de puerto.
4irecciones de correo electrnico
Una direccin de correo electrnico utiliza el formato
nombreUsuarioUnombreDominio. #or e&emplo, mliuUcsc.calpol(.edu identifica al
autor de este libro. "uando se enva un correo electrnico identificando esta
direccin como destinatario, un programa de correo electrnico en el computador
correspondiente al nombre de dominio especificado entrega el correo al buzn del
usuario especificado en este sistemaJ en este caso, el autor de este libro.
#'8
)os usuarios de los navegadores *eb3eb est'n familiarizados con los 23L
0Uniform Resource Locators1. "uando se introduce una cadena, tal como
http-MM333.csc. calpol(.edu en el navegador para visitar un determinado sitio
*eb3eb, se est' utilizando un U4).
Un U4) es un esquema de nombrado que se encuentra deba&o de un esquema
m's general denominado 23I 02niform 3esource Identifiers1. )os U45 son
cadenas cortas que identifican recursos en la *eb, inclu(endo documentos,
im'genes, ficheros, servicios ( buzones de correo. l esquema U45 permite
identificar de una forma uniforme estos recursos, ba&o una variedad de esquemas
de nombrados utilizados en protocolos de aplicacin especficos, tales como
<,,#, +,# ( correo electrnico.
U4) es un trmino informal asociado con populares esquemas U45 para
protocolos tales como <,,#, +,# o correo electrnico.
23. 0Uniform Resource ame1 es un esquema especificado por el 4+":6;6 (
otros documentos relacionados, que permite el uso de identificadores de recursos
persistentes e independientes de su localizacin. Un U42 proporciona nombres
persistentes dentro de un espacio de nombres, permitiendo de esta forma que un
ob&eto permanente tenga varias copias en varios sitios conocidosJ si uno de los
sitios no est' disponible, el ob&eto podra encontrarse en cualquiera de los otros
sitios. xisten varias propuestas para la implantacin de los U42, pero ninguna de
ellas ha sido ampliamente adoptada a!n @aboutdomains.com, 60A.
Aunque sea un trmino informal, el U4) es con diferencia el me&or conocido de
todos estos trminos. Un U4) proporciona una forma no persistente $es decir, no
necesariamente permanente% de identificar un ob&eto de forma !nica dentro de un
espacio de nombres. Un espacio de nombres, en el contexto de un sistema de
nombrado, se refiere al con&unto de nombres que el sistema proporciona. n su
forma m's general, el formato de un U4) es-
4protocolo5,,4usuario564clave574id8nodom%-uina564puerto5,4ruta5
donde
4protocolo5 es el nombre no sensible a ma(!sculas o min!sculas del
protocolo de la capa de aplicacin utilizado para acceder al recursoJ por e&emplo,
<,,# en el caso de acceder a un navegador *eb3ebJ
4usuario564clave5 es la autorizacin de acceso, en el caso de que sea
requerida por el protocoloJ
4id8nodom%-uina5 es el nombre de dominio o direccin 5# decimal con
puntos de la m'quinanodo que proporciona el servicio a travs del protocoloJ por
e&emplo, 333.calpol(.eduJ
4puerto5 es el puerto para el protocolo de la capa de transporte del
proceso que proporciona el servicio en el nodo remotola m'quina remotaJ por
e&emplo, el puerto >1 $por defecto% para los servidores <,,# o *ebJ
4ruta5 especifica la ruta dentro del sistema de ficheros de la nodo
remotom'quina remota donde se encuentra el recursoJ por e&emplo,
mliuMcsc61:Mindex.html.
"uando se introduce un U4) en un navegador, es posible no especificar el
protocolo $en cu(o caso se asume que se utiliza el protocolo <,,#%, el par
usuario-clave $no utilizado en <,,#%, el n!mero de puerto $>1 por defecto%, ( la
ruta $se supone que se selecciona la raz de la &erarqua de directorios de
documentos%. #or e&emplo, el U4) 333.csc.calpol(.edu introducido en el
navegador 2etscape permite acceder a la p'gina inicial de la Universidad
#olitcnica de "alifornia de =an )uis Lbispo, que se encuentra en el nodo la
m'quina con nombre de dominio 333.csc.calpol(.edu, ( que utiliza el puerto >1.
A veces se puede utilizar una forma acortada de un U4), denominada 23L
relativo. Durante una sesin, cuando se est' accediendo a un documento $por
e&emplo, http-MM333.csc.calpol(.eduMindex.html%, se puede utilizar un U4) relativo
para nombrar otro fichero en el mismo directorio, tra(ndose dicho fichero desde
el mismo servidor *eb3eb. #or e&emplo, si ha( otro fichero en el mismo directorio
llamado courses.html, entonces el U4) courses.html se puede utilizar en lugar del
U4) completo http-MM333.csc.calpol(.eduMcourses.html.

/ervicio de .ombres (tensible
l =ervicio de 2ombres xtensible $V2=, Extensible 1ame )er!ice% es un servicio
de nombres de 5nternet gestionado por la Lrganizacin V2= #ublic ,rust
Lrganization $V2=L4?%, una organizacin independiente. l servicio permite un
esquema de nombrado con una direccin !nica ( universal para llevar a cabo
Etodos los tipos de comunicaciones H telfono, fax, p'ginas *eb3eb, mensa&era
instant'nea, e incluso correo ordinario... "omo cualquier servicio de nombrado,
V2= opera a m's alto nivel que D2=. D2= est' dise/ado para traducir un nombre
a una direccin de una m'quinanodo 5nternet. V2= est' dise/ado para resolver
una direccin universal en cualquier otro tipo de direcciones de cualquier tipo de
red de comunicaciones. =e podra decir que V2= es a D2= como D2= es a un
n!mero de telfono $(, de hecho, V2= utiliza D2= para resolver la direccin
5nternet de una agencia V2=%F @omg.org, :9A. Un V2= es una cadena de
caracteres. <a( tres tipos de nombres V2=- nombres personales, nombres de
negocio ( nombres generales, cada uno de los cuales empieza por un !nico
car'cter $Q, U, ( W, respectivamente% ( cada uno de los cuales puede contener
hasta 0; caracteres Unicode.
3esolucin de nombres
=iempre que se utiliza un nombre simblico para identificar un recurso, el nombre
debe traducirse a la correspondiente direccin fsica para localizar dicho recurso.
"omo se ha mencionado anteriormente, un nombre de dominio tiene el siguiente
formato-
nombre"omputador.nombreDivision.nombre"ompa/a.com
que para una m'quina nodo 5nternet debe ser traducido a la direccin numrica,
por e&emplo 6:8.0N.6:C.9, del computador correspondiente. Al proceso de
traduccin se le conoce como resolucin de nombres, o simplemente b#s-ueda
de nombres.
#ara realizar la resolucin de nombres, se debe utilizar una base de datos
$tambin llamada directorio o registro% que contenga las asociaciones entre
nombres simblicos ( nombres fsicos. =i el espacio de nombre de un esquema de
nombrado tiene un tama/o limitado, entonces es posible realizar la resolucin de
nombres manualmente. n el caso de D2= o V2=, un proceso manual no tiene
sentidoJ en su lugar, un servicio de red se utiliza para permitir la resolucin de
nombres din'micamente.
n el caso de D2=, los servidores D./ se encargan de realizar el servicio de
b!squeda de nombres. Una autoridad central mantiene la base de datos de
nombres ( permite que la base de datos se distribu(a a travs de 5nternet a los
servidores D2=. "uando se especifica un nombre de dominio H tanto si se
introduce en un navegador como si se codifica en un programa que se va a
e&ecutar H dicho nombre se enva al servidor D2= m's cercano para su resolucin.
=i el servidor m's cercano no tiene la asociacin, enva la peticin a otro servidor
D2=. )a peticin se propaga hasta que el nombre es resuelto, respuesta que es
enviada de nuevo al proceso que origin la peticin.
n posteriores captulos de este libro se tendr' la oportunidad de traba&ar con
esquemas de nombrado ( sus utilidades asociadas.
Conceptos b%sicos de ingeniera del soft9are
)a ingeniera del soft3are es la disciplina de inform'tica que aborda el proceso de
desarrollo de las aplicaciones. Aunque este libro proporciona el conocimiento
tcnico necesario para construir aplicaciones de red, no cubre el proceso de
desarrollo de tales aplicaciones. De la misma forma, algunos de los conceptos
b'sicos de la ingeniera del soft3are son relevantes para este libro. A continuacin
se introducen estos conceptos.
Proramacin procedimental frente a proramacin orientada a ob9etos
A la hora de construir aplicaciones, ha( dos clases de lengua&es de programacin-
lengua&e procedimental ( lengua&e orientado a ob&etos. $Aunque existen otros tipos
de lengua&es, tales como el lengua&e funcional, estos lengua&es no son
normalmente utilizados en aplicaciones de red.%
)os lengua&es procedimentales H siendo el lengua&e " el prototipo de este tipo de
lengua&es H utilizan procedimientos para reducir la comple&idad de las tareas de la
aplicacin. #or e&emplo, una aplicacin puede implementarse utilizando un
procedimiento $tambin llamado funcin, aunque en algunos contextos el trmino
procedimiento se utiliza para funciones que no devuelven nada% que lleve a cabo
la entrada, otro procedimiento para realizar la computacin, ( un tercer
procedimiento para generar la salida.
)os lengua&es orientados a ob&etos, como por e&emplo Iava, que es el lengua&e
elegido para este libro, utiliza ob&etos para encapsular los detalles. "ada ob&eto
simula un ob&eto de la vida real, almacenando tanto los datos de estado como los
diferentes comportamientos del mismo. )os datos de estado se representan como
variables de instancia $en Iava% o variables miembro $en "WW%. )os
comportamientos se representan mediante los mtodos.
#/8
Un paso importante en la ingeniera del soft3are es la produccin de
artifactosartefactos, o documentos, para realizar el dise/o conceptual de la
aplicacin que se est' desarrollando. #or legibilidad, estos documentos deben
escribirse utilizando un con&unto de notaciones ( lengua&es universal. l Lenguaje
de "odelado 2nificado 02"L: Unified !odeling Language1, desarrollado por la
organizacin 3b9ect /anaement :roup @omg.org, :9A es una utilidad de este tipo.
U7) proporciona un con&unto com!n de lengua&e ( notaciones Epara especificar,
visualizar, construir ( documentar los artifactos artefactos de los sistemas
soft3areF @omg.org, :9A.
L7?.U7) proporciona un con&unto rico de herramientas para todas las facetas de
la ingeniera del soft3are. stas herramientas son explicadas en cursos de
ingeniera del soft3are. n este libro se utilizar' ocasionalmente una de estas
notaciones- los diagramas de clase de U7) $( slo un subcon&unto de ellos%, para
documentar las relaciones de algunas de las clases Iava que aparecen en la
presentacin. )a figura+igura 6.68 presenta el subcon&unto de diagramas de clase
que se utilizar' en este libro.
8a arquitectura de aplicaciones distribuidas
)a idea de utilizar una arquitectura multicapa para organizar las funciones de una
red de datos se puede aplicar a las aplicaciones distribuidas. )a figura+igura 6.:1
presenta un e&emplo de dicha arquitectura.
Utilizando esta arquitectura, las funciones de una aplicacin distribuida se pueden
clasificar en tres capas-
)a capa de presentacin proporciona la interfaz de usuario. #or e&emplo, si la
aplicacin es un carrito de la compra, esta capa genera el con&unto de p'ginas
*eb3eb de la tienda correspondiente que se ven desde un navegador.
)a capa lgica de aplicacin proporciona la computacin necesaria para la
aplicacin. sta capa tambin se llama capa lgica de negocio para las
aplicaciones empresariales. n una aplicacin de carrito de la compra, esta
capa se encarga de tareas tales como la verificacin de la tar&eta de crdito,
calcular las cantidades correspondientes a las peticiones, calcular los
impuestos de venta o el coste de la entrega.
)a capa de servicio proporciona los servicios necesarios para soportar las
funciones de las otras dos capas. )os servicios pueden incluir utilidades de
acceso a los datos $tales como un sistema de gestin de base de datos%,
servicios de directorio para b!squedas de nombres $tal como D2=% (
comunicacin entre procesos $que permita que se puedan intercambiar datos
entre los procesos%.
ste libro se va a centrar en la capa de servicio. )as otras dos corresponden a
temas de ingeniera del soft3are.
"on9untos de herramientas, marcos de desarrollo y componentes
)os con&untos de herramientas $m's conocidos por su palabra inglesa tool+its%,
entornos de desarrollo $frame,or+s% ( componentes son trminos asociados con
la ingeniera del soft3are para sistemas empresariales $es decir, aplicaciones
comerciales a larga escala%.
n el contexto del desarrollo de soft3are, un toolkit o framework es una
coleccin de clases, herramientas ( e&emplos de programacin. #or e&emplo, el
tool+it IDG $-a!a 4e!elopment &ool+it% es una coleccin de herramientas para
desarrollar programas Iava, mientras que el frame,or+ .2, de 7icrosoft est'
orientado a la construccin de aplicaciones *eb3eb. =e supone que el lector sabe
desarrollar programas Iava mediante IDGJ otros tool+its para computacin
distribuida $por e&emplo, el -a!a )oc+et &ool+it% se cubrir'n en otros captulos de
este libro.
l desarrollo de soft3are basado en componentes es una tcnica para la
construccin de sistemas soft3are empresariales. Utilizando esta tcnica, el
soft3are se desarrolla ( evoluciona mediante la unin de componentes (a
probados ( reutilizables. sta tcnica se basa en la reutilizacin del soft3are (
tiene como principal venta&a que reduce significativamente los costes ( errores de
desarrollo @#our, C9A. )os entornos Enterprise -a!a 2ean $ID% ( "omponent
3b9ect /odel $"L7% $7icrosoft% son plataformas que dan soporte a aplicaciones
basadas en componentes. Aunque estas plataformas son importantes para la
computacin distribuida empresarial, su estudio queda fuera del alcance de este
libro.
3esumen
n este captulo introductorio se han discutido los siguientes temas-
Xu se entiende por computacin distribuida ( cmo se relaciona ( diferencia
de otros temas como los sistemas distribuidos ( la computacin paralela.
"onceptos b'sicos de sistemas operativos que son importantes para el estudio
realizado en este libro. stos conceptos inclu(en a los procesos ( los
threadshilos.
"onceptos b'sicos de comunicacin de datos relevantes para este libro.
Dichos temas inclu(en
Arquitecturas de red- el modelo L=5 ( el modelo de 5nternet
"omunicacin orientada a conexin frente a comunicacin sin conexin
squemas de nombrado para recursos de la red, inclu(endo
=istema de 2ombrado de Dominio $D2=%
=istema de 2ombres xtensible $V2=%
2!meros de puertos de protocolo
5dentificador de 4ecursos Uniforme $U45% ( )ocalizador de 4ecursos
Uniforme $U4)%
Direccin de correo electrnico
"onceptos b'sicos de ingeniera del soft3are que son importantes para el
estudio realizado en este libro. ,ales conceptos inclu(en
#rogramacin procedimental comparada a con la programacin orientada a
ob&etos
Diagramas de clases que utilizan la notacin del )engua&e de 7odelado
Unificado $U7)%
)a arquitectura de tres capas de las aplicaciones distribuidas, que consiste
en $i% la capa de presentacin, $ii% la capa de aplicacin o de lgica de
negocio, ( $iii% la capa de servicios
)os trminos tool+it, frame,or+ ( componente en el contexto de la
ingeniera del soft3are
jercicios
6. "omputacin distribuida
a. "onsidrese la computacin distribuida tal ( como se ha definido en este
captulo. #ara cada una de las siguientes actividades, determinear (
expliquecar si es un e&emplo de computacin distribuida-
i. Utilizar xcel en un computador personal aislado
ii. 4ealizar navegacin 3eb
iii. )a mensa&era instant'nea
iv. "ompilar ( probar un programa escrito en "obol en una m'quina
departamental sin conexin de red
v. Utilizar el correo electrnico en el computador de un departamento
para enviarlo a uno mismo.
vi. Utilizar 2apster.com para descarar m!sica
b. n este e&ercicio se utilizar' un modelo matem'tico simplificado para
analizar los fallos de un sistema distribuido. xpliquecar las respuestas.
=upngase que cada computador tiene una probabilidad p de fallar cada cierto
tiempo, pR6.
i. =i n computadores se interconectan ( se necesita que todos los
computadores estn disponibles para mantener un determinado
servicio, dado que se utiliza un sistema distribuido que inclu(e a
estos computadores,
a. Y"u'l es la probabilidad p de que el servicio no est disponible en
un determinado momento, asumiendo que ning!n otro
componente del sistema distribuido falleZ xpresear p como un
funcin matem'tica de n ( p.
b. Das'ndose en la respuesta del apartado a, Ycu'l es la
probabilidad p cuando el sistema no es distribuido, es decir, para
el caso nQ6Z
c. Das'ndose en la respuesta del apartado a, utilizar utilice pQ1.: (
nQC para calcular la probabilidad p. Y"mo es esta probabilidad
comparada con la probabilidad de fallo en el caso de utilizar
computacin monoltica, es decir, en un !nico computadorZ
ii. Ahora supngase que el servicio proporcionado slo requiere uno de
los tres computadores, con los otros dos sirviendo como copias de
respaldo o bac+ups $es decir, cada uno de los tres computadores, es
capaz por s mismo de proporcionar el servicio%. Y"u'l es la
probabilidad de que el servicio no est disponible en un determinado
momento, asumiendo que ning!n otro componente del sistema
distribuido falleZ Y"mo es la probabilidad de fallo de este sistema
comparada con la probabilidad de fallo del mismo sistema utilizando
computacin monoltica, es decir, un !nico computadorZ
c. 5nvestigar 5nvestigue el gusano de 5nternet @ichin and 4ochlis, :6A o un
ataque de virus tal como el del virus 5.)ove.(ou @Ketter, ::A ( resumir
resuma en qu consisten ( cmo se originaron. Y#or qu estos hechos son
significativos en la computacin distribuidaZ #ensar #iense en algunas
medidas para evitar estos problemas.
d. 5nvestigar 5nvestigue en la Ecomputacin distribuidaF $o, de forma m's
precisa, computacin colaborativa% de los pro(ectos setiUhome
@setiathome.ssl.berBele(.edu, 61A ( genomeUhome
@genomeathome.stanford.edu, :CA. scoger sco&ar uno de ellos. scribir
scriba un informe para $i% explicar el ob&etivo del pro(ecto, $ii% explicar
cmo se lleva a cabo la computacin en el sistema distribuido, ( $iii% explicar
que ha( que hacer para participar en el pro(ecto.
e. 5nvestiguear sobre los comienzos de 5nternet $vase las referencias
@vlmp.museophile.com, 6A, @zaBon.org, :A @silBroad.com, CA, o @<afner and
)(on, ;A, por e&emplo% ( escribir escriba un corto informe corto sobre una de
las organizaciones clave ( una de las figuras prominentes en la historia de
5nternet.
:. #rogramacin concurrente
a. Duscar Dusque la especificacin del A#5 de Iava @&ava.sun.com, :1A.
scoger sco&a el enlace de la interfaz 'unnable ( a continuacin la clase
&hread. )eer )ea detenidamente cada una de ellas, le(endo las
especificaciones de los mtodos de cada una.
i. De acuerdo a las especificaciones, Ycu'l de las dos, la interfaz
'unnable o la clase &hread, es preferible si slo se pretende
implementar el mtodo runZ Y#or quZ
ii. YXu hace el mtodo sleep de la clase &hreadZ scribir scriba la
sentencia$s% Iava que aparece$n% en el cdigo para que un threadhilo
suspenda la e&ecucin durante N segundos.
iii. YXu hace el mtodo acti!e"ount de la clase &hreadZ YXu debera
devolver el mtodo en un programa donde se crean tres
threadshilosZ
iv. =e dice que el mtodo stop de la clase &hread es deprecated. YXu
significa que un mtodo sea deprecatedZ
v. Y"u'ntos mtodos ha( en la interfaz 'unnableZ 2ombrearlos.
vi. Y"mo se utiliza la interfaz 'unnable para crear un threadhiloZ
xplicarloxplquelo.
b. "ompilar "ompile ( e&ecutar e&ecute los ficheros class Iava que se
muestran en la figura+igura 6.66 ( que se encuentran en la carpeta de
e&emplos del programa. Y"u'l es el resultadoZ "apturar "apture la salida
de la e&ecucin ( escribir escriba un p'rrafo explicando la salida, prestando
especial atencin al orden de las lneas de la salida.
c. "ompilar "ompile ( e&ecutar e&ecute los ficheros class Iava que se
muestran en la figura+igura 6.6:. Y"u'l es el resultadoZ "apturar "apture
la salida de la e&ecucin ( escribir escriba un p'rrafo explicando la salida,
prestando especial atencin al orden de las lneas de la salida. Adem's,
comparar compare la salida con la salida del apartado b $la segunda parte%.
d. "onsidrense las siguientes clases Iava-
i. Y"u'l es la salida esperada cuando se e&ecuta E9ec0ilo&hread;Z
"ompilarlo "omplelo ( e&ecutarloe&ec!telo.
ii. "omentar "omente la palabra reservada synchronized en la
cabecera del mtodo update. "ompilarlo "omplelo ( e&ecutar
e&ecute de nuevo E9ec&hread;E9ec0ilo;. Y"u'l es la salidaZ
xplqueloxplicarlo.
public class jec!hread;jec)ilo;
[
public static void main $=tring@ A args%
[
int num,hreadLrig num<ilosLrig Q !hread.active"ount$%J
for $int iQ1J iR61J iWW% [
,hread p Q ne3 !hread $ne3 ,hreadC&emplo$%%J
p.start$%J
\
=(stem.out.println$Enumero threads hilos QFW
,hread.active"ount$%%J
3hile $,hread.active"ount$% T num,hreadLrignum<iloLrig% [
MM bucle hasta que todos los hilothreads ha(an
finalizado.
\
=(stem.out.println$E+inalmente, numero QFW
,hreadC&emplo<iloC&emplo.numero%J
\
\ MM +in clase &ec,hreadC&ec<iloC
class !hread;jemplo )ilo;jemplo implements 3unnable [
static int numeroQ1J
,hreadC&emplo$% [
super$%J
\
public void run$% [
update$%J
\
static public synchroni+ed void update $% [
int mi2umero Q numeroJ
int segundo Q $int% $7ath.random$ % ] N11.1%J
tr( [
,hread.sleep$segundo%J
\
catch $5nterruptedxception e% [
\
mi2umeroWWJ
numero Q mi2umeroJ
=(stem.out.println$EnumeroQFWnumeroW
EJ numero thread hilo QF W !hread.active"ount$%%J
\
\ MM +inal clase ,hreadC&emplo<iloC&emplo
C. "omunicacin orientada a conexin frente a comunicacin sin conexin
n este e&ercicio se utilizar' un modelo matem'tico simplificado para comparar
la comunicacin orientada a conexin ( la comunicacin sin conexin.
xpliquecar las respuestas.
n una determinada red se proporcionan ambas formas de comunicacin-
Utilizando comunicacin orientada a conexin, establecer una conexin
supone N1 segundos, despus de los cu'les un paquete de hasta 61
caracteres se enva en 6 segundo sobre la conexin, en cualquier direccin.
Utilizando comunicacin sin conexin, se puede enviar un paquete de hasta
61 caracteres en 6,: segundos $el envo de cada paquete lleva un tiempo
ligeramente superior al del modelo orientado a conexin, debido a que cada
paquete debe encontrar el camino al receptor%.
=upngase que los procesos A ( D intercambian mensa&es en esta red. A inicia
la comunicacin ( enva un mensa&e de 611 caracteres, que se reparten en 61
paquetes. n respuesta, D enva un mensa&e de N1 caracteres, repartidos en N
paquetes.
Asumiendo que no ha( ning!n retardo diferente del correspondiente al
establecimiento de la conexin $en el caso orientado a conexin% ( la
transmisin de los paquetes-
a. Y"u'nto tiempo dura la sesin entre A ( D, utilizando comunicacin
orientada a conexinZ xplqueloxplicarlo.
b. Y"u'nto tiempo dura la sesin entre A ( D, utilizando comunicacin sin
conexinZ xplqueloxplicarlo.
c. Y"u'ntos datos $en n!mero de caracteres% deben ser intercambiados entre
A ( D para que la comunicacin orientada a conexin lleve a una sesin
m's corta que la comunicacin sin conexinZ xplqueloxplicarlo.
;. 2ombrado
a. Y"u'l es el tama/o del espacio de direcciones $es decir, el n!mero total de
direcciones posibles% en cada una de las cinco clases de direcciones 5#v;Z
7ostrar 7uestre los c'lculos.
b. Descubrir Descubra la 5# de la direccin de red asignada a la organizacin
del lector. YXu clase de red es $A hasta %Z
c. Descubrir Descubra el nombre de dominio del servidor *eb3eb de la
organizacin del lector. Y"u'l es su direccin 5#Z
d. l programa de red nsloo+up se puede utilizar para obtener el servicio de
b!squeda de nombres de D2=. =e puede invocar de al menos tres formas-
n un sistema U25V, e&ecutando nsloo+up desde el interpreteintrprete
de mandatos.
n un sistemas *indo3s, e&ecutando nsloo+up desde la ventana de
interpreteintrprete de mandatos.
Accediendo a la p'gina http-MMcc.333.uia.ac.beMdsMnslooBup.html.
Utilizar Utilice este servicio para completar la siguiente tabla-
Direccin I' .ombre de dominio
6:9.1.1.6
ifi.uio.no
ie.technion.ac.il
:1;.68>.6CN.0:
::;.1.6.:;
cse.cuhB.edu.hB
6:8.0N.:.668
333.mit.edu
e. "ompletar la siguiente tabla-
"lase de 5dent. red $en 5dent. nodo $en
2ombre direccin notacin decimal notacin decimal
Direccin 5# dominio $A.% con puntos% con puntos%
6>.6>6.1.C6
6:8.0N.:.668
:1;.68>.6CN.0:
::;.1.6.:;
f. Utilizar Utilice los cdigos de pas correspondientes a dominios de alto nivel
listados por la autoridad 5A2A @iana.org, 68A para encontrar los cdigos de
pases de nombres de dominios correspondiente a los siguientes pases-
Armenia, Drasil, "anad', "uba, Alemania, spa/a, +rancia,
?uatemala, 5ndia, 7&ico, Xatar, =ingapur, =uiza, l =alvador,
,urqua.
5dentificar 5dentifique las naciones correspondientes a los siguientes
cdigos-
td, tv, z3, nz, ph, pB, eg, bt, ao.
g. "onsidrese esta U45- http-MM333.algunsitio.org->1>6MfooMindex.html.
i. Y"u'l es el protocolo especificadoZ
ii. Y"u'l es el nombre del servidorZ
iii. Y"u'l es el n!mero de puerto del proceso que proporciona el
servicioZ
iv. YDnde se encuentra ubicado el documentoZ
h. Duscar Dusque los n!meros de puertos bien conocidos a travs de la
p'gina 3eb http-MM333.iana.orgMassignmentsMport.numbers.
i. Y"u'l es el n!mero de puerto asignado a cada uno de estos
servicios- $i% +,#, $ii% telnet, $iii% =7,#, ( $iv% $orld $ide $eb <,,#Z
Ystos servicios est'n disponibles utilizando ,"#, UD#, o ambosZ
ii. YXu servicios est'n asociados a los puertos 6C ( 69
respectivamenteZ
iii. n un sistema U25V, o desde una ventana de interprete intrprete de
mandatos de un sistema *indo3s, una forma de acceder a un
servicio de red es a travs del siguiente mandato-
telnetRespacioTRnombre dominio o direccin 5# de un sistema
conocidoTRespacioTRn!mero de puerto asignado al servicioT
#or e&emplo, el mandato telnet foo.com 6C permite acceder al
servicio del proceso que e&ecuta en el puerto 6C del nodo de 5nternet
foo.com.
Utilizar Utilice este mtodo para acceder a los servicios ofrecidos por
el puerto 6C de alguna m'quina conocida. Describir Describa el
resultado.
i. n lugar de utilizar el esquema de 5nternet que usa el n!mero de puerto del
protocolo como parte de la direccin para la entrega de datos a un proceso
en una determinadao nodom'quina, considrese un esquema alternativo
donde el proceso se localiza utilizando un identificador de proceso !nico
$#5D%, de forma que el sistema operativo U25V se encarga de asignar dicho
identificador a cada proceso activo. Lbsrvese que el #5D se asigna de
forma din'mica a cada proceso cuando se crea, de forma que no es posible
conocer a priori el identificador del proceso. Adem's, el rango de valores
para los #5D vara de un sistema a otro. Y"u'les son los problemas, si
existen, de este esquema de direccionesZ
&. Un esquema de nombrado se dice que proporciona transparencia de
locali+acin @communit(.ml.org, :NA si permite acceder a los ob&etos sin
especificar de forma explcita su ubicacin fsica. #or e&emplo, el sistema de
numeracin de telfonos de UU proporciona transparencia de
localizacin, (a que quien llama no necesita conocer donde se encuentra la
persona que recibe la llamada. #or otro lado, el sistema de direcciones del
servicio postal de UU no permite transparencia de localizacin, (a que
es necesario conocer la direccin fsica del receptor $exclu(endo los
n!meros de apartado de correos%.
"onsidrese los siguientes esquemas de nombrado. #ara cada uno de
ellos, determinar determine si proporcionan transparencia de localizacin.
Iustificar Iustifique la respuesta.
i. l sistema de nombres de dominio $D2=%
ii. l localizador de recursos uniforme $U4)%
iii. l localizador de recursos de nombre $U42%
iv. l servicio de nombres extensible $V2=%
N. Diagrama de clases U7)
a. Utilizando la notacin mostrada en la figura+igura 6.68, dib!&ese el
diagrama de clases de las clases de la figura +igura 6.66.
b. Utilizando la notacin mostrada en la figura+igura 6.68, dib!&ese el
diagrama de clases de las clases de la figura +igura 6.6:.
3eferencias
6. l museo virtual de la computacin, http-MM333.museophile.comMcomputing.html
:. Descripcin temporal de 5nternet de <obbes H la definitiva historia de A4#Anet
^ 5nternet, http-MM333.zaBon.orgMrobertMinternetMtimelineM
C. l grupo )il+ 'oad, 8td, una breve historia de las redes,
http-MM333.silBroad.comMnet.histor(.html
;. Gatie <afner and 7atthe3 )(on. $here $izards )tay #p 8ate< &he 3riins of
the *nternet. 2e3 PorB, 2P- =imon ^ =chuster, 6880.
N. Archivos de 5nternet 4+"M=,DM+P5MD"#, http-MM333.faqs.orgMrfcsM
0. ,odd "ampbell, E&he first email messaeF, #4,V, 7agazine, 688>.
http-MM333.pretext.comMmar8>MfeaturesMstor(:.htm
9. http-MM333.sun.comM&iniMovervie3M, =eptiembre :111.
>. 3ebopedia, http-MM3ebopedia.internet.com
8. Alice . Goniges. *ndustrial )trenth Parallel "omputin. =an +rancisco, "A-
7organ Gaufman #ublishers, :116.
61. =,5Uhome, the )earch for Extraterrestrial *ntellience,
http-MMsetiathome.ssl.berBele(.eduM
66. 4ecursos Iava, http-MM333.csc.calpol(.eduM_mliuM&ava4esources.html
6:. *illiam =tallings. 4ata and "omputer "ommunications. Upper =addle 4iver,
2I- #rentice <all, 6888.
6C. Andre3 =. ,anenbaum. "omputer 1et,or+s. Upper =addle 4iver, 2I- #rentice
<all, 6880.
6;. "hucB =emeria, C"om "orporation, #nderstandin *P Addressin< E!erythin
=ou E!er $anted &o >no,, 6880,
http-MM333.Ccom.comMotherMpdfsMinfraMcorpinfoMenSU=MN16C1:.pdf
6N. 7arshall Drain, "uestin del da,
http-MM333.ho3stuff3orBs.comMquestionN;8.htm, 0o,)tuff$or+s
60. A cerca de dominios, about domains,
http-MM333.aboutdomains.comM2e3sMbasics.htm
69. l "entro 2acional de Aplicaciones de =upercomputacin $2"=A%. Una gua
para principiantes sobre U4),
http-MMarchive.ncsa.uiuc.eduM=D?MxperimentalMdemo3ebMurl.primer.html
6>. Dan "onnoll(. 2ombrado ( direcciones- U45, U4), ...,
http-MM333.3C.orgMAddressingM
68. *nternet Assined 1umber Authority. "digos de pases de los dominios de alto
nivel, http-MM333.iana.orgMcctldMcctld.htm
:1. specificacin de la A#5 de la plataforma Iava : v6.;,
http-MM&ava.sun.comM&:seM6.;MdosMapiMindex.html
:6. 7arB *. ichin and Ion A. 4ochlis, 7assachusetts 5nstitute of ,echnolog(. $ith
/icroscopes and &,eezers< An Analysis of the *nternet .irus of ?@AA,
http-MM333.mit.eduMpeopleMeichinMvirusMmain.html
::. Gim Ketter. #"*orld.com, E$hen 8o!e "ame to &o,n< A .irus *n!estiationB,
6C 2oviembre, :111.
:C. &he genomeUhome pro9ect homepae, http-MMgenomeathome.stanford.eduM
:;. *nternet Assined 1umbers Authority, http-MM333.iana.orgM
:N. 7odelo de referencia para LD# $3pen 4istributed Processin% $47.LD#%,
5=LM5" 5= 619;0`5,U., V.811, http-MMcommunit(.ml.orgM47.LD#M
:0. V2= H frequently as+ed questions, http-MM333.xns.orgM, V2=L4?.
:9. YXu es L7? U7)Z http-MM333.omg.orgMgettingstartedM3hatSisSuml.htm
:>. ?ua de notacin de U7) H Oersin 6.6, http-MM333.informatiB.fh.
luebecB.deM_stMU7)MU7)6.6M
:8. #'gina inicial de Unicode, http-MM333.unicode.orgM
C1. 7ichael +ischer, 2anc( )(nch, and 7ichael =. #aterson. E*mpossibility of
distributed consensus ,ith one faulty processF. Proceedins of the C
nd
A"/
)ymposium on Principles of 4atabase )ystems, p'ginas 6.9, 68>C.
C6. #anBa& #alote. %ault &olerance in 4istributed )ystems. Upper =addle 4iver, 2I-
#rentice <all, 688;.
C:. =cott LaBs. -a!a )ecurity. =ebastopol, "A- La4eill( #ress, :116.
CC. distributed.net< 1ode Dero, http-MM333.distributed.netM
C;. *nternet )ecurity Alliance, http-MM333.isalliance.orgM
CN. Andre3 ,anenbaum. "omputer 1et,or+s. Uppers =addle 4iver, 2I- #rentice
<all, 6880.
C0. http-MM333.iana.orgMassignmentsMport.numbers
C9. ?ilda #our. E$eb(2ased Architecture for "omponent(2ased Application
:eneratorsF. &he *nternational /ulticonference in "omputer )cience, )as
Oegas, 2evada, :11:.
C>. *nternet )ociety $5=L"%, ,odo sobre 5nternet- <istoria de 5nternet,
http-MM333.isoc.orgMinternetMhistor(M
<iguras
<igura =.= l crecimiento de los servidores de 5nternet @zaBon.org, :A $reimpreso
mediante permiso%.
<igura =.> Dominios de 5nternet @zaBon.org, :A $reimpreso mediante permiso%.
<igura =.; "omputacin centralizada $a% frente a computacin distribuida $b%.
<igura =.? Un diagrama simplificado de transicin de estados de un proceso.
<igura =.@ Una aplicacin stand(alone Iava $arriba% ( el cdigo correspondiente
$aba&o%.
/*******************************************************
* Un ejemplo de una aplicacin Java sencilla.
* M. Liu 1/8/02
*******************************************************/
import java.io.*;
class MiProrama!
pu"lic static void main#$trin% & ars'
t(ro)s *+,-ception!
.u//ered0eader teclado 1 ne)
.u//ered0eader#ne) *nput$tream0eader#$2stem.in'';
$trin nom"re;
$2stem.out.println#345u6l es tu nom"re73';
nom"re 1 teclado.readLine# ';
$2stem.out.print#38ello 3 9 nom"re';
$2stem.out.prinln#3 : "ienvenido a 5$5;<=.>n3';
? // /in main
? // /in clase
<igura =.A Un applet $arriba% ( la p'gina 3eb $aba&o% que permite activar el applet.
/***************************************************
* Un ejemplo de un applet sencillo.
* M. Liu 1/8/02
***************************************************/
import java.applet.@pplet;
import java.a)t.*;
pu"lic class Mi@pplet e-tends @pplet!
pu"lic void paint#Arap(ics '!
set.acBround#5olor."lue';
Cont 5laude 1 ne) Cont#3@rial3D Cont..+LED F0';
.setCont#5laude';
.set5olor#5olor.2ello)';
.dra)$trin#38ola Mundo3D 100D 100';
? // /in paint
? // /in clase
GHII Una p6ina )e" Jue cuando se a"reD ejecutaK
GHII el applet Mi@ppletK
GHII M. Liu 1/8/02K
GtitleKUn applet sencilloG/titleK
G(rK
Gapplet code13Mi@pplet.class3 )idt(1L00 (ei(t1L00K
G/appletK
G(rK
Ga (re/13 8olaMundo.java3K,l /ic(ero /uente.G/aK
<igura =.B Un ser!let $arriba% ( la p'gina 3eb $aba&o% que permite activar el
ser!let.
/*******************************************************
* Un ejemplo de un servlet sencillo.
* M. Liu 1/8/02
********************************************************/
import java.io.*;
import java.te-t.*;
import java.util.*;
import java-.servleeeeservlevlet.*;
import java-.servlet.(ttp.*;
pu"lic class Mi$ervlet e-tends 8ttp$ervlet !
pu"lic void doAet #8ttp$ervlet0eJuest reJuestD
8ttp$ervlet0esponse response'
t(ro)s $ervlet,-ceptionD *+,-ception !

PrintMriter salida;
$trin titulo 1 3$alida de Mi$ervlet3;
//primero esta"lecer el tipo de contenido 2 otros
// campos de la ca"ecera
response.set5ontentN2pe#3te-t/(tml3';
//a continuacin escri"ir los datos de respuesta
salida 1 response.etMriter#';
salida.println#3G8NMLKG8,@EKGN*NL,K3';
salida.println#titulo';
salida.println#3G/N*NL,KG/8,@EKG.+EOK3';
salida.println#3G81K3 9 titulo 9 3G/81K3';
salida.println#3GPK8ola Mundo3';
salida.println#3G/.+EOKG/8NMLK3';
salida.close#';
? ///in doAet
? ///in clase
<igura =.C ,iempo compartido en un computador.
<igura =.D &ecucin concurrente dentro de un proceso.
<igura =.=E "ondicin de carrera procedente de procesos o threadshilos
concurrentes no sincronizados.
<igura =.== Aplicacin sencilla que crea tres threadshilos utilizando una subclase
de la clase &hread.
pu"lic class ,jecN(reads,jec8ilos
!
pu"lic static void main #$trin%& ars'
!
N(read,jemplo 8ilo,jemplo p1 1 ne)
N(read,jemplo8ilo,jemplo#1';
p1.start#';
N(read,jemplo 8ilo,jemplo p2 1 ne)
N(read,jemplo8ilo,jemplo#2';
p2.start#';
N(read,jemplo 8ilo,jemplo p; 1 ne)
N(read,jemplo8ilo,jemplo#;';
p;.start#d#;';
p;.start#';
?
? ///in clase ,jecN(reads,jec8ilos
pu"lic class N(read,jemplo 8ilo,jemplo e-tends N(read !
int mi*dent;
$omeN(read8ilo,jemplo#int ident' !
t(is.mi*dent 1 ident;
?
pu"lic void run#' !
int i;
/or #i 1 1; i G 11; i99'
$2stem.out.println
#3N(read8ilo39 mi*dent 9 3P 3 9 i';
?
? ///in clase N(read,jemplo8ilo,jemplo
<igura =.=> Aplicacin sencilla que crea tres threadshilos utilizando una
implementacin de la interfaz 'unnable.
pu"lic class ,jecN(reads2,jec8ilos2
!
pu"lic static void main #$trin%& ars'
!
N(read p1 1 ne) N(read#ne)
N(read,jemplo28ilo,jemplo2#1'';
p1.start#';
N(read p2 1 ne) N(read#ne)
N(read,jemplo28ilo,jemplo2#2'';
p2.start#';
N(read p; 1 ne) N(read#ne)
N(read,jemplo28ilo,jemplo2#;'';
p;.start#';
?
? ///in clase ,jecN(reads2,jec8ilos2
class N(read,jemplo2 8ilo,jemplo2 implements 0unna"le !
int mi*dent;
N(read,jemplo28ilo,jemplo2#int ident' !
t(is.mi*dent 1 ident;
?
pu"lic void run#' !
int i;
/or #i 1 1; i G 11; i99'
$2stem.out.println #3N(read8ilo39mi*dent 9 3P 3 9 i';
?
? ///in clase N(read,jemplo28ilo,jemplo2
<igura =.=; )a arquitectura de red de siete capas L=5.
<igura =.=? )a arquitectura de red de 5nternet.
<igura =.=@ "omunicacin orientada a conexin frente a comunicacin sin
conexin.
!abla =.= "omparacin de la comunicacin entre procesos orientada a conexin (
sin conexin.
Frientado a cone(in /in cone(in
Direccionamiento =e especifica en el
momento de la conexinJ
posteriormente no es
necesario volver a
especificarlo con cada
operacin $envo o
recepcin%.
=e especifica en cada
operacin.
/obrecarga de la
cone(in
xiste sobrecarga de
establecimiento de la
conexin.
2o se aplica.
/obrecarga del
direccionamiento
2o existe sobrecarga de
direccionamiento en cada
operacin.
xiste sobrecarga en cada
operacin.
Frden de llegada de los
datos
)a abstraccin de la
conexin permite al
mecanismo de
comunicacin entre
procesos mantener el
orden de llegada de los
paquetes de datos.
)a falta de conexin hace
difcil a la aplicacin que
hace uso del mecanismo
de comunicacin entre
procesos mantener el
orden de llegada.
'rotocolos ste modo de
comunicacin es
apropiado para protocolos
que requieren el
intercambio de grandes
con&untos de datos (Mo un
gran n!mero de
intercambios.
ste modo de
comunicacin es
apropiado para protocolos
que intercambian un
peque/o con&unto de
datos ( realizan un
n!mero peque/o de
intercambios.
<igura =.=A )a topologa de 5nternet.
<igura =.=B l esquema de direcciones 5#v;.
!abla =.> 2ombres de dominio de alto nivel.
.com #ara entidades comerciales, que cualquiera, desde donde sea, puede
registrar.
.net Lriginalmente se design para organizaciones directamente
relacionadas con las operaciones de 5nternet. Actualmente, este
dominio tambin se est' utilizando para negocios, cuando el
nombre .com deseado (a est' registrado por otra organizacin. <o(
en da cualquiera puede registrar un nombre en el dominio .net.
.org #ara organizaciones miscel'neas, inclu(endo aquellas organizaciones
sin 'nimo de lucro.
.edu #ara instituciones de educacin superior.
.gov #ara entidades del gobierno federal de los UU.
.mil #ara el e&rcito de UU.
Cdigos
de pases
#ara pases individuales basados en la Lrganizacin de st'ndares
5nternacionalesJ por e&emplo, .ca para "anad', ( .&p para Iapn.
Oase @"onnoll(, 6>A para ver una lista de los cdigos existentes de
pases.
<igura =.=C Ierarqua de nombres de dominio.
<igura =.=D Un subcon&unto de los diagramas de clases U7).
<igura =.>E Arquitectura de las aplicaciones distribuidas.
!endencias histricas
por 4ichard ?abriel ( Iim *aldo, =un 7icro=(stems
$Lbtenido de http-MM333.sun.comM&iniMovervie3M @9A%
4ei5mpreso con permiso de Iim *aldo
Y"mo hemos llegado hasta el punto en que los servicios ( dispositivos
conectados son las principales fuerzas que condicionan las nuevas formas de
computacinZ
)a razn m's significativa es nuestro me&or entendimiento de la fsica, la qumica,
que son las bases fsicas de la computacin, ( el proceso de creacin de chips.
<o( en da, un computador significativamente potente se puede construir a partir
de uno o dos chips peque/os ( un sistema de computacin completo en una
peque/a tar&eta.
xisten tres dimensiones que pueden me&orarse- el tama/o, el coste ( la potencia
computacional. Desde los a/os 01, el tama/o ( el coste de los computadores se
han decrementado dram'ticamente, mientras que la potencia computacional ha
ido superando distintos topes.
Una m'quina o mainframe de los a/os 01 estaba formada por una coleccin de
enormes ca&as, situadas en una habitacin grande H costaba millones de dlares,
lo que supona un freno para incrementar la potencia computacional. =lo una
compa/a completa poda afrontar su coste.
)a aparicin del minicomputador fue posible cuando la funcionalidad del
mainframe pudo abordarse mediante el uso de peque/as ca&as. l
minicomputador tena la potencia computacional de la generacin anterior de
mainframes, pero un !nico departamento poda comprarlo. )a ma(ora de los
minicomputadores se conectaron a terminales interactivos H esto constitu( los
comienzos de la cultura basada en los computadores, una comunidad.
"uando un computador con la potencia de un minicomputador se redu&o a una
!nica ca&a que poda situarse en la mesa de un despacho, se obtuvo la estacin
de traba&o. Un departamento poda comprar aproximadamente una estacin de
traba&o por cada dos profesionales. Una estacin de traba&o tena suficiente
potencia computacional para abordar tareas tales como dise/o sofisticado,
aplicaciones de ingeniera ( cientficas, ( soporte gr'fico para las mismas.
"uando el computador personal se hizo suficientemente peque/o para situarse en
un escritorio ( suficiente potente para soportar interfaces gr'ficas de usuario
intuitivas, los individuos podan utilizarlo sin grandes problemas ( las compa/as
empezaron a comprarlos para cada uno de sus empleados.
ventualmente los procesadores se hicieron suficientemente peque/os ( baratos
para colocarlos en un coche sustitu(endo el sistema de encendido anterior, o en
un televisor en lugar de los anteriores dispositivos electrnicos discretos. <o( en
da, los coches pueden tener m's de N1 procesadores, ( los hogares alrededor de
611.
)a potencia computacional tiene otro problema. )a tendencia hacia procesadores
m's peque/os, m's r'pidos ( m's baratos implica que menos gente tiene que
compartir una "#U, pero tambin implica que la gente de una organizacin en
cierto modo se asla. "uando se comparte una herramienta, se crea una
comunidadJ debido a que las herramientas se reducen, menos personas la utilizan
con&untamente (, por tanto, la comunidad se dispersa. 2o obstante, una
comunidad no suele darse por vencida. Afortunadamente, la potencia
computacional est' relacionada con la reduccin de los procesadores, ( (a que la
comunidad utiliza un sistema de computacin reducido, existe suficiente potencia
para permitir la comunicacin entre los sistemas. As, por e&emplo, las estaciones
de traba&o empiezan a dar resultados satisfactorios una vez que se pueden
comunicar e intercambiar datos.
l tramo final de la dimensin de la potencia computacional lo constitu(e el hecho
de que ahora los procesadores son suficientemente potentes para soportar un
lengua&e de programacin de alto nivel, orientado a ob&etos ( que permite el
movimiento de ob&etos entre diferentes procesadores. Dichos procesadores son
suficientemente peque/os ( baratos como para constituir los dispositivos m's
sencillos.
Una vez que ha( suficiente potencia computacional, la habilidad para conectarse (
comunicarse se convierte en el factor determinante. Actualmente para la ma(ora
de la gente, un computador slo e&ecuta unas pocas aplicaciones ( principalmente
utilidades relacionadas con la comunicacin- correo electrnico, la *eb. 4ecuerda
cmo 5nternet se hizo popular r'pidamente, primero con el correo electrnico, (,
m's recientemente, con el uso de la *eb ( los navegadores.
'or donde viaja
)os usuarios de eDa( raramente piensan sobre el proceso que implica la
realizacin de ofertas H hasta que el sistema falla. 5nternamente, el sistema de
subasta tiene un n!mero de salvaguardas que se basan principalmente en la
duplicacin o mirrorin de la tecnologa, para el caso en el que una pieza
hard3are o soft3are falle. )a informacin debe pasar a travs de muchas
compa/as ( tipos de equipamiento diferentes para que todo funcione
correctamente.
6. )a persona que hace la oferta se registra ( enva una oferta electrnica desde
su #".
:. )a oferta via&a desde el proveedor de servicios de 5nternet del consumidor, a
travs de los conmutadores $s,itches% ( encaminadores $routers%, al 5=# de los
servidores de la compa/a.
C. =e enva la oferta a travs del bac+bone de 5nternet.
;. )a oferta via&a desde uno de los 5=# de eDa(, mu( probablemente =print o
UU2,, ( a travs de tuberas a eDa(.
N. )a oferta pasa a travs de los conmutadores ( encaminadores "isco de eDa(.
0. )a informacin llega a uno de los aproximadamente :11 servidores front(end
"ompaq, que e&ecutan *indo3s 2,. )os servidores son duplicados, de forma
que si uno falla, el otro realiza la tarea.
9. )a oferta pasa por uno de los servidores =tarfire de =un 7icros(stem, llamados
Dull ( Dear, siendo mirror entre ellosestando duplicados entre s.
>. )a oferta se a/ade a las dos bases de datos de almacenamiento de
informacin, que e&ecutan Lracle, donde se comprueba la informacin del
vendedor.
8. l flu&o de informacin se enva de vuelta, mandando correos electrnicos al
vendedor ( a los posibles compradores del producto de la oferta. ,ambin se
enva una confirmacin a la persona que envi la oferta.
61. Desde Dull, se enva la cantidad de la oferta ( otra informacin a otro servidor
=tarfire, denominado Anaconda, ( se guarda en discos de almacenamiento
duplicados.
Los ata-ues 9eb podran tener muchos orgenes
por /att 'ichtel y )ara 'obinson 61=&7, %eb. ??, CEEE 6reimpreso con permiso
del 1e, =or+ &imes7
=an +rancisco, 61 +eb. H )os expertos de seguridad en inform'tica di&eron ho(
que las pruebas sugieren que los ataques durante tres das a importantes sitios
*eb3eb podran ser obra de m's de una persona o grupo.
l an'lisis de que m's de un grupo estuviera detr's cuestiona las conclusiones de
algunos expertos de seguridad que fueron inicialmente escpticos de que
siguiendo el ataque del lunes a Pahoo, m!ltiples v'ndalos se hubieran unido para
realizar asaltos Fcopy catB a otros sitios.
7ientras la comunidad de 5nternet busca de forma vehemente a los responsables,
los expertos inform'ticos afirman que ser' difcil determinar incluso qu
computadores iniciaron los ataques.
"4,, una organizacin de seguridad de computadores, financiada federalmente,
( anteriormente conocida como la "omputer Emerency 'esponse &eam, ha
afirmado que nunca haba visto este n!mero inusual de informes de ataques.
Desde el lunes hasta el mircoles, los servicios de varios sitios *eb3eb punteros,
inclu(endo los del portal Pahoo, la compa/a de la Dolsa ],rade ?roup, la
empresa de subastas eDa( ( el sitio de noticias "22 de ,ime *arner, fueron
interrumpidos ( en algunos casos parados por asaltos provocados por docenas de
computadores inundando a los servidores con m!ltiples datos.
#ero los expertos en seguridad han afirmado que los sitios *eb3eb e 5nternet en
general quedar' vulnerable en un futuro cercano, debido a que muchas
organizaciones no est'n tomando medidas oportunas para evitar que v'ndalos
puedan iniciar ataques en sus computadores.
Un oficial del gobierno ha dicho ho( que es necesario endurecer las le(es a fin de
combatir tales ataques. E2osotros no consideramos esto una travesuraF di&o el
subfiscal general ric <older. Estos hechos son mu( seriosF.
Adem's ho( se ha revelado que m's sitios *eb3eb importantes, que haban sido
advertidos, fueron asaltados el mircoles, !ltimo da de los asaltos. stos inclu(en
a xciteU<ome, un proveedor de acceso a 5nternet a alta velocidad sobre cable
mdem, que fue atacado en la tarde del mircoles a pesar de haber tomado
precauciones para defender su red.
Al menos otras dos compa/as importantes de comercio electrnico fueron
atacadas el mircoles, de acuerdo a 5+sec, una compa/a de seguridad
inform'tica de 2ueva PorB, que rechaz dar el nombre de las compa/as,
afirmando que una de ellas fue un cliente.
E2osotros estamos viendo m's de los que aparecen en los medios de
comunicacinF afirm David 7. 4emnitz, el &efe e&ecutivo de 5+sec.
Adicionalmente, usuarios del 5.4.". $*nternet 'elay "hat% di&eron que en las dos
!ltimas semanas el foro haba sufrido ataques similares a los de las compa/as de
comercio electrnico.
7ientras tanto, los proveedores de servicio de redes e investigadores contin!an
analizando las pruebas, inclu(endo los paquetes de datos utilizados para
sobrecargar ( paralizar a los sitios *eb3eb vctimas.
xpertos de seguridad inform'tica de la Universidad =tanford en #alo Alto,
"alifornia, di&eron que las primeras pruebas sugieren que los ataques podran
haber sido obra de m's de una persona o grupo.
David I. Drumle(, asistente oficial de seguridad inform'tica en =tanford, afirm
que el tipo de datos incluido en los paquetes utilizados para atacar a Pahoo el
lunes eran diferentes de los datos del asalto el martes a eDa(.
E)os ataques fueron completamente diferentes esos dos dasF di&o 7r. Drumle(.
E)as personas que atacaron Pahoo eran diferentes de las que atacaron eDa( (
"22.F
)os proveedores de servicio de redes di&eron que los asaltos recientes incluan
dos tipos de ataques, sugiriendo que m's de un grupo podra estar implicado.
Ambos tipos de ataques corresponden a lo que se denomina denegacin de
servicio, (a que estos ataques evitan que los sitios puedan servir a los clientes.
n el primer tipo, conocido como )=1 flood, los atacantes accedieron H e
instalaron soft3are en H un gran n!mero de computadores. A continuacin,
utilizaron estas m'quinas para bombardear al sitio vctima con peticiones para
comenzar una sesin de comercio electrnico. l gran n!mero de peticiones
sobrecarg a los servidores, que no permitieron que los clientes pudieran acceder
al sitio.
#ara evitar que se pudiera realizar una traza de estas peticiones, los v'ndalos
emplearon una tcnica denominada spoofin, que consiste en alterar la direccin
origen.
l segundo tipo de ataque, conocido como smurf attac+, de nuevo implica el uso
de otras m'quinas, pero adem's emplea una gran red de computadores externa
para EamplificarF el n!mero de datos utilizados en el ataque (, de esta forma,
incrementar la efectividad del asalto. =e cree que la red de computadores de
=tanford se podra haber utilizado de esta forma en el ataque a Pahoo.
)os expertos de seguridad afirman que es sencillo configurar las redes de forma
que no se puedan utilizar en un smurf attac+, aunque muchos administradores no
conocen cmo llevar a cabo esta configuracin.
)os expertos de seguridad inform'tica hicieron hincapi en que el gran n!mero de
computadores utilizados para iniciar los ataques esta semana hace mu( difcil
realizar una traza de los mismos.
En este punto, existe tanto tr'fico que es mu( difcil realizar una trazaF afirmo Ioel
de la ?arza de Groll.La?ara 5nformation =ecurit( ?roup, una compa/a para
minimizar los riesgos.
Adem's, expertos de seguridad inform'tica han comentado que las compa/as
cu(os computadores han sido asaltados ( utilizados como plataformas para un
asalto, normalmente no tienen ninguna idea del problema, incluso cuando el asalto
contin!a. )os v'ndalos pueden activar el asalto desde una ubicacin remota, ( a
una compa/a o a un individuo cu(o computador se est' utilizandoJ el !nico
impacto que puede provocar es un decremento de la velocidad en la actividad de
la red.
)as compa/as vctimas ( los expertos de seguridad afirmaron ho( que en algunos
casos los ataques parecen m's complicados de lo que originalmente se pens H
reforzando la dificultad de prevenirlos.
xciteU<ome, por e&emplo, ha afirmado que intent tomar medidas de precaucin
a la luz de los ataques anteriores, pero que fue incapaz de prevenir el ataque a su
sitio *eb3eb durante al menos media hora.
E=eg!n nuestro conocimiento, un sitio no puede tomar medidas preventivas contra
los ataques sin la a(uda de otrosF, afirm Gell( Distefano, una portavoz de
xciteU<ome. lla di&o que la compa/a hubiera necesitado m's cooperacin de
las compa/as que proporcionan servicios de red a xcite.
#eter 2eumann, principal cientfico de =45 5nternational en 7enlo #arB, "alifornia,
reiter que el xito de los ataques ha mostrado que los sitios de 5nternet no est'n
tomando la precauciones adecuadas para evitar ser asaltadas asaltados mediante
ataques de este tipo.
Es hora de que la gente despierteF, di&o 7r. 2eumann. E)a gente est'
aceler'ndose en utilizar el comerci comercio electrnico en la 4ed sin conocer
los riesgos H ( ha( grandes riesgos, como hemos podido ver aquF.
.otas al margen
'%gina > 0$nclado al #ltimo p%rrafo1
'equest for "omments $#eticin de comentarios% son especificaciones propuestas
por ingenieros de 5nternet que invitan a realizar comentarios p!blicos. A travs de
los a/os, se han realizado miles de especificaciones, que se han archivado ( que
est'n accesibles en un gran n!mero de sitios *eb3eb, inclu(endo los Archivos de
5nternet 4+"M=,DM+P5MD"# @faqs.org, NA.
'%gina > 0$nclado al #ltimo p%rrafo1
)a red $3'$.!, creada en 6891, fue la predecesora de 5nternet.
'%gina ; 0$nclado al #ltimo p%rrafo de la p%gina anterior1
l trmino hiperte(to fue creado por el visionario ,ed 2elson, para referirse a los
documentos textuales desde los que se puede acceder a documentos adicionales
a travs de rutas asociadas. l e&emplo m's conocido de hipertexto es una p'gina
3eb que contiene enlaces.
'%gina ; 0$nclado a la <igura =.>1
Un dominio 5nternet es parte del esquema de nombrado de recursos de 5nternet.
'%gina C 0$nclado al primer p%rrafo1
Un propietario de un computador interesado descarar de =,5Uhome una
pieza de soft3are libre $por e&emplo, un salvapantallas%. A continuacin, cuando su
computador est ocioso, el soft3are descara un fichero de datos de un sitio de
5nternet para analizarlo en dicho computador. )os resultados del an'lisis se
vuelven a enviar al sitio de 5nternet, donde se combinan con el resto de
participantes de =,iUhome, en el intento de buscar se/ales de vida
extraterrestre.
'%gina >= 0$nclado al cuarto p%rrafo1
)a sinta(is de un lengua&e de programacin es el con&unto de reglas de lengua&e,
inclu(endo la ortografa ( la gram'tica del mismo.
'%gina >= 0$nclado al pen#ltimo p%rrafo1
L=5 significa 3pen )ystem *nterconnect, ( es el nombre dado al modelo de
arquitectura de red realizado por una organizacin denominada *nternational
3ranization for )tandardization $5=L%.
'%gina >? 0$nclado al tercer p%rrafo1
Una red de datos transmite datosJ una red de voz transmite voz. )as redes
modernas transmiten tanto datos como voz.
'%gina >A 0$nclado al primer p%rrafo1
Un nodo de Internet es un computador que implementa la arquitectura de
protocolos de 5nternet (, por tanto, es capaz de participar en comunicaciones de
5nternet.
'%gina >A 0$nclado al primer p%rrafo1
Un encaminador o router es un computador especializado en encaminar los
datos entre las redes. n 5nternet, un encaminador implementa la funcionalidad de
la capa de 5nternet.
'%gina ;? 0$nclado al primer p%rrafo1
2nicode es un est'ndar para representar caracteres. De acuerdo con la p'gina
inicial de Unicode, EUnicode proporciona una @representacin numricaA !nica para
cada car'cter, sin importar cu'l sea la plataforma, el programa o el lengua&eF
@Unicode.org, :8A.
'%gina ;D 0$nclado al jercicio =.a.vi1
2apster.com es un servicio de m!sica digital. Audio?alax( ( GaKaA ofrecen
servicios similares.