1 - TESIUAMI
Transcripción
1 - TESIUAMI
PROYECTOS DE INVESTIGACION I Y I I QUE PARA OBTENER EL TITUL8 DE: blCENClADO EN COMWTAClON PRESENTAN: Asesor: Martin Garcia Nava UNIVERSIDAD A U T ~ N O M A METROPOLITANA. UNIDAD IZTAPALAPA 2 DIVISIóN DE CIENCIAS BASICAS E INGENIERíA E LICENCIATURA EN COMPUTACIóN DOCUMENTACIóN CORRESPONDIENTE A LOS PROYECTOS DE INVESTIGACI~N I Y 11 I IMPLEMENTACIÓN DE UN SHELL REMOTO f Benito Cruz Mendoza José Luis Méndez Montes i i Asesor: Lic. Martin Garcia Nava! L 1994-1995 ncdíco cl prcscntc trabajo a mis llarmulos que síemprc cstuuícros apoyirrrlome írlcorrdícíorralrtlcrtr, así cotno tarubífrl a nrí aradrc que estuvo c o m í g o a Io largo rlcl trabajo, y ofrczco 1111 recorrorírnícrrto ospccíal a Brísclda por s u írrualrrablc apoyo nloral que síruíó para corlcluír cl trabajo; fírlalnlcrrte agradezco el apoyo recíbído por mí asesor Martítt 6arría h a . ' IIURG2UCCI6N. PROPUESTA CORFU3SPONDIENTE A IITVESTIGACI~N I Y 11 DE C O M P U T A C I ~ N QUE PRESENTAN+ B e n i t o C r u z Mcndoza y J o s é L u i s Méndez Montes. ASESOR: L i c . M a r t i n Garcia Nava. 'LOS PROYECTOS LICENCIATURA EN ~ 3 . so b j e t l v o s y metas d e l p r o y e c t o r s o n PRIMER TRILGSTRE Objetivos g e n e r a l e s : C 5 j e t i v o s particulares : los s i g u i e n t e s : I :r ) rlrj S i sterna U N i X . s e r i e d pe r o t o c o l o s de comunicaciones TCP\IE'. Meta : i n t e g r a r l o s c o n o c i m i e n t oasd q u i r i d o s d e cada tema m e n c i o n a deon l o s i n c i s o s b ) y c ) a n t e r i o r e s , como un sistema Ú n i c o , e l cu61 podrj ser analizado c u i d a d o s a m e n t ep, a r oa b t e n e irn f e r e n c i a qs u fea c i l i t e n e n l o p o s t e r i o r e l d e s a r r o l l o e implernentación reales del s h e l l remoto. S E G U N D O TRIMESTRE Objetivos p a r t i c u l a r e s : a) D e s a r r o l lt ae ró r i c a m e n t e implementar. el modelo de el s hreel il n o t o 1 2 Meta : Adquirir l a h a b i l i d a d y e : < p e r i e n c iqau e desarrollar e Computación. i m p l e m e n tud a nre t e r m i n a d p or o y e cet n o se reyuiert=ri p a ~ a lograr el Area d e 3.E l t e n earc c e s o t r e s v e n t a j a s b á s i c , I;: i ) u nraeddceo m p u t a d o r alsl e vian y d í c i t a s a Compartir r e c u r s o s . ii) Aurnentar l a f i a b i l i d a d d e l s i s t e m a . i i i ) A h o r r oe c o n 6 m i c o . Creernos q u e l a e x p e r i e n c i aa s i m i l a d a , los c o n o c i m i e n t o sa c l c l u i r i d o s , así ccmo la d o c u l n e n t a c l . y e l s o f t w a er el a b o r a d o d su r a n t e el d e s s r r o l l o d e l p r o y e c t o ,p u e d e na p o y a r y b e n e f i c i a r a: '",J 1.. E l p a í sp, o qr u e a p a r t i rd e l a d é c a d a d e los 9 0 ' S , se 112 n o t a d ou nc r e c i m i e n t on o t : , l b l ee n e l á r e a d ec o m u n i c a c i o n e s , y t:cj~lav e ; KISS o r g a n i z a c i o n e s y p a r t i c u l a r e s , demandan e s t e t i p od es e r v j - c i o de manera u r g e n t e ,p a r al o g r a ru nm e j o rr e n d i m i e n t o y c o m p e t i t i v i d a d . Se n o t ea n t o n c elsna e c e s i d a dd,qe u e e l p a í ds e s a r r o l l e e l software necpsario, ara q u e ndoe p e n ddae los p a í s e d s e s a r r o l l a d o es ne s t e l a v e n t a j aa d i c i o n a l de e la h o r r oe c o n ó m i c o que s e da al a z p o c t a ,c o n e v i t a r l a importaci6n. 2.L a UliM, p o r que para e l l a e sn e c e s a r i o e s t a r :¡.nterconert_;1clc7 ;i rlivc-1 m u n d i a l ,p o rm e d i od er e d e s como I n t e r n e t( p o r citar scLo una), y s e r e q u i edpr e r s o ncaocl no n o c i m i e n t qo uds e el. soporte nezes3rio. Se p l a n e ai n v e s t i g a re np r i n c i p i o , l a b i b l i o g r a f í ae x i s t e n t e y los c u a l e s s e p u e d ae n c o n t r a ra p o y od o c u m e r l t a l o de a l . g 6 n r, t 2.' 3 iipo para l a e l a b o r a c i ó n d epl r o y e c t ol;a s ideas bAsi~aas ' c. r l i d s s a l e s t u d i a r y a n a l i z a tro d a e s t a b i b l i o g r a f iq auedar511 d e b i d m i e n t ed o c u m e n t a d a s ,e n t r e g á n d o s eu ni n f o r m eq u i - n c e n a ld u r a n t e el t l - i r r ; ? s t rezn e l cual d e d e s a r r o l l e el. P r o y e c t o I . Durante. l o s d o s p r ~ y e c t ~c se p r a c t i c a r áe n la r e d d e l e d i f i c i o ' € 1 ' , y e n l a Irlisma s e j.:n:zlcrnentsr& el s o f t w a cr eo r r e s p o n d i e n t T e .a m b i édnu r a n t e los d o s . . q11e ~ ~ r z \ ~ . . - . rstco s r c c i b i r á n tanto las a s e s o r i a s como la superv.1.:; I . ~ I T ; ? I : ~en S los ,r ; ,-. , ! I ) :,,T. 'p":' '1 > - . I cT ': . 2) La b i b l i o y r a f i aS.ae d q u i r i r á lni b r o s ~ - ~ e ~ u ~ r la- ilraás b i b l i o t e c a s o l u g a r e sd o n d e o se f o t o c o p i a r j n , estén d i s p o n i b l e s . y se D a t o s generales Nombre : l3ivisión : Carrera: r4atrícula: Dircccihn: T'el6ttfcno (casa): Pior:,bre : Civisión: C x - r e r a: Matrícllla : Dircccibn: B e n i t o C r u z Mendoza. CBI. L i c e n c i ' a t u r a en C o m p u t a c i ó n . 85325233. Calle t iN 2 3o r t e del Conde 2 " S e c c i ó n . C.P. 01400. Delegati-ón Á l v a r oO b r e y 6 n . Mkxico D. F. 6433538. J o s 6 L u i s M é n d e zM o n t e s . CUI. L i c e n c i a t u r a e n Computación. 85228824. Calle Oriente 229 A y r i c o l aO r i e n t a l . C.P. 08500. I ) ~ ~ l e g a c i . Ó nI z t a c a l c o . F. M b x i c o D. 5582324. c<11.. I1 Oliv,lI. 116 Co.1 ' Con ligeras rnlodificaciones con respecto al original entregado xi CAPÍTULO 1 PROTOCOLOS DE COMUNICACI~N. CONCEPTOS BÁSICOS , PROTOCOLOS DE COMUNICACI~N. CONCEPTOSBÁSICOS [TOMADO Y ADAPTADO DE Tanenbaum, Jiménez, Goscinski, Holzmann y Rifflet.]’ Por una red se entiende un conjunto de computadoras autónomas conectadas entre sí, con capacidad de comunicación; más adelante se profundizará sobre los detalles que conciernen a las redes. Lamayoría de las redes se organizan en una serie de capas o niveles (o módulos), conobjeto de reducirla complejidad desu diseño. Cada capa seconstruyesobresu predecesora. El número de capas, el nombre, contenido y función de cada una varían de una reda otra. Sin embargo, en cualquier red, el propósito decadacapa es ofrecer ciertos servicios a las capas superiores (y/o viceversa), liberándolas del conocimiento detallado de cómo se realizan dichos servicios. Lacapa n enunamáquina conversacon lacapande otra máquina. Las reglas y convenciones utilizadas en esta conversación se conocen conjuntamente como protocolo de que forman las capas la capa n, como se ilustra en la Figura 1. A las entidades correspondientes en máquinas diferentes se les denomina procesos pares (igual a igual). En otras palabras, son losprocesos pares los que se comunican mediante el uso delprotocolo. 1 I Figura 1. Capas, protocolos e interfaces. En realidad no existe una transferencia directa de datos desde la capa n de una máquina a la capa n de otra; sino, más bien, cada capa pasa la información de datos y control a la capa inmediata inferior, y así sucesivamente hasta que se glcanza la capa localizada en la parte Capitulo 1 más baja dela estructura. Debajo de la capa 1 está el medio físico, a través del cual se realiza la comunicación real. E n la Figura 1 se muestra, mediante flechas punteadas, la comunicación virtual, en tanto que las flechas continuas indican la trayectoria de la comunicación física. Entre cada pardecapasadyacentes hay una interface, la cual define los servicios y operaciones primitivasque la capa inferior ofrece a la superior. Cuando los diseñadores de redes deciden el número de capas por incluir en una red, así como lo que cada una de ellas deberá hacer, una de las consideraciones más importantes consiste en definir claramente las interfacesentre capas.Hacer esto,asuvez, requiere que cadacapa efectúe un conjunto específico de funciones bien definidas. El diseño claro y limpio de una interface, además de minimizar la cantidad de informaciónque debepasarse entre capas,hacemás simple la sustitución de la realización de una capa por otra completamente diferente (por ejemplo, todas las lineas telefónicas se reemplazan por canales satélite). Así todo lo que se necesita de la nueva es que ofrezca exactamente el mismo conjunto de servicios a la capa superior contigua, tal y como lo hacía la antigua. AI conjunto de capas y protocolos se le denomina arquitectura de la red. Computadora A Funciones orientadas a proceso Computadora B 4 4 4 Protocolos de alto nivel Funciones orientadas a proceso Protocolos de baio nivel Funciones orientadas a comunicación ~ ' Funciones orientadas a comunicación 4 4 I Medio de comunicación Figura 2. Protocolos en la intercomunicación de redes. 1 A la conexión de dos ó más redes se le denomina interconexión deredes. La interconexión de redes puede ser dividida o estratificada en funciones orientadas a procesamiento y funciones orientadas a comunicación. Esto implica que los protocolos pueden ser divididos en protocolos de alto nivel, relacionados con la habilidad de los sistemas para bajo nivel relacionados con la intercambiar información y entenderla, y protocolos de paquetización, ruteo y la transmisión de los datos en el nivel físicos de la red (ver Figura 2). 4 Implementación de remoto un shell Protocolos de comunicación. Conceptos básicos FUNCIONES DE LOS PROTOCOLOS Se va a considerar en seguida un conjunto de furlciones que' son la base de todos los protocolos. No todas las funciones están comprendidas en cada protocolo; esto significaría una duplicación de esfuerzos. Las funcionesquedebe desarrollar un protocolo pueden agruparse en las siguientes categorías: s 1. Segmentación y reensamblado 2. Encapsulado 3. Control de conexión 4. Control de flujo 5. Control de errores 6. Sincronización 7. Secuenciamiento 8. Direccionamiento 9. Multicanalización 1O.Servicios de transmisión Segmentación y feensamblado. Un protocolo maneja el intercambio de secuencias de datos entre dos entidades. Usualmente, la transferencia consiste enbloquesdedatosde tamañoacotado.Sehablademódulos superioresque gestionanla aplicación y basan su operación en los servicios que les proporcionan las entidades inferiores, relacionadas con la transmisiónde la informacióna través de mediosfísicos. Generalmente las entidades superiores producen bloques que los módulos inferiores deben fragmentar en unidades de datos más pequeñas.Esteproceso se conoce como fragmentación o segmentación. El proceso contrario a la segmentación es el reensamblado. Eventualmente los datos fragmentados deben reunirse para reconstruir el bloque original dirigido a la entidad superior en el extremo superior. Existen varias razones quejustifican la segmentación y, en su mayoría, se relacionan con la optimización de los parámetros de rendimiento dela red. Por convención se llamará unidad de datos del protocolo (PDU) a cada uno de bloques intercambiadosentre las entidades de un protocolo. los Encapsulado. Junto a sus datos, cada PDU contiene información de control. De hecho, algunos PDUs contienen solamenteésta y puede ser de tres tipos: de direccionamiento, donde se indica la localización del transmisory/o receptor; de manejo de errores, quepuede ser alguna secuencia de bits para detectar fallas en la transmisión, y finalmente, de gestión del protocolo, incluida para poder implantar el resto ,de las funciones del protocolo. Se conoce como encapsulado a la operación que une los datos, con la información decontrol en una sola PDU. Se dice que la entidad que recibe los datos, generalmente desde un módulo superior, se encarga de encapsularlosjunto a la información de control, para producir una PDU. Control de la c.onexión. Una entidad funcional puede transmitir datos a su corresponsal en cualquier momento y sin que medie una coordinaciónprevia; a este tipo de transferencia se le llama sin conexión u orientado a no conexión. Como analogía se puede citar el sistema de correo convencional. Aún cuando la operación es útil, es más común la transferencia de datos Universidad Autónoma Metropolitana. Unidad lztapalapa 5 Capítylo 1 orientada a conexión,queesanálogo al servicio telefónico, Este tipo de transferencia se prefiere cuando se anticipa un intercambio por un período prolongado. Un procedimiento orientado aconexión secompleta en tresfases: establecimiento, transferencia y desconexión.En la primeradeberáestablecerseunaasociación lógica o conexión entre las entidades, en seguida se entra en la fase de transferencia en la que ambas entidades pueden intercambiar datos e información de control. Finalmente, el intercambio se termina cuando alguno de los lados envía una petición de desconexión. Alternativamente, una autoridad central puede forzar la terminación. I Confrol de flujo. Se trata de una función que realiza cualquier entidad receptora para limitar la cantidaddedatos que recibe o la rapidez conque éstos llegan desde la entidad transmisora. Confrol de errores. Para prevenir del daño o pérdidadela información, muchos protocolos incorporan técnicas de corrección de errores, basadas en ql uso de secuencias de verificación y la retransmisión de las PDUs defectuosas. Sincronización. Es obvio que las entidades de un protocolo necesitan recordar un cierto número de parámetros que pueden interpretarse como variables que definen en conjunto el estado o la configuración del sistema. Ocasionalmente, es importante que dos entidades que se comunican utilizando un protocolo, se encuentren en un estado bien definido, por ejemplo durante la inicialización, enalgúnpunto de verificación dela transferencia o durantela terminación. Esterequerimiento se conoce como sincronización. No es fácil lograr la sincronización entre dos entidades pues el estado de una sólo se conoce, en el otro lado, por las PDUs que recibe su corresponsal. Estas PDUs no llegan instantáneamente, les toma un cierto tiempo quizá variable y en algunas ocasionesse pierden antes dellegar. Secuenciarnienfo. Esta función permite identificar el ordenenque se transmiten los PDUs con datos asignándoles un número de secuencia modular. El secuenciamiento de datos sólo tiene sentido en el contexto de transferencias orientadas a conexión y sirve para tres propósitos principales: entrega ordenada, control de flujo y control de errores. Direccionarnienfo. Para que dos entidades puedan comunicarse, deben poder identidad del identificarse entre sí. Por ejemplo, es necesariocomúnmenteconocerla destinatario para encaminar la información hacia ella. Debe hacerse una distinción entre el nombre, la dirección y las rufas. Unnombre especifica un objeto,su dirección donde se encuentra y la ruta indica como llagar hasta él. Mulficanalización. A la transmisión de varios flujos de información por un sólo canal lógico o físico se la llama multicanalización. Utilizando un nombre de conexión, porejemplo, es posible que varios flujos de datos procedentes de una misma máquina se transmitan a través enforma vertical, entre las deun sólo canal físico. La multicanalización también seda entidadesfuncionales locales, cuando varias de ellas, compartenuno de los servicios de transmisión que les proporciona una entidad inferior. 6 Implementación de un shell remoto Protocolos de comunicación. Conceptos básicos Serviciosdetransmisión. Un protocolo puede ofrecer unavariedadde servicios adicionales a las entidades que utilizan sus,servicios. Se pueden citar tres ejemplos comunes: la pn’oridad, esto quiere decir que algunos mensajes, sobre todo de control, deben entregarse a su entidad destino con un retardo mínimo; en segundo lugar el grado de servicio que se refiere a los requerimientos de velocidad de transmisión de datos, y finalmente, la segun’dad, el queson los mecanismoscon quese controla el accesoa los recursosquegestiona protocolo. NORMALIZACIóN DE PROTOCOLOS En los tiemposen queapareció el conceptode red,cada compañía fabricante de computadoras tenía sus propios protocolos; IBM por ejemplo, tenía más de una docena. Esto dabacomo resultado que aquellos usuarios que adquirían computadorasde diferentes compañías, no podían conectarlas y establecer intercomunicación con ellas. El caos generado por esta incompatibilidad dio lugar a la exigencia de los usuarios para que se estableciera una normalización al respecto. I Estanormalizaciónnosolamente iba a facilitar la comunicación entre computadoras construidas por diferentes compañías, sino que también traeria, como beneficio, el incremento los productos que se ajustan adicha norma, que conduciría auna enelmercadopara producciónmasiva,unaeconomíade escala,así como otros tipos de beneficios cuya tendencia sería disminuir su precio y alentar su posterior aceptación. Por la forma en que son establecidas, las normas se dividen en categorías que pueden definirse como: de facto y de jure. Las normas De Facto (del latín, que significa “del hecho”), son aquellas que se han establecido sin ningún planeamiento formal. Las normas IBM PC y sus sucesoras son normas de facto para pequeñas computadoras de oficina, porque docenas de fabricantes decidieron copiar fielmente las máquinas que IBM sacó al mercado. Por el contrario, las normas De Jure (del latín, que significa “por ley”) son normas formales, legales, adoptadas por un organismo que se encarga de su normalización. Las autoridades internacionales encargadas de la normalización se dividen, por lo general, en dos clases: la establecida porconvenio entregobiernos nacionales, y la establecida sin un tratado entre organizaciones (con afiliación voluntaria). En ,el área de normalización de redes de computadoras, existen dos organizaciones principales, de los dos tipos: I S 0 (Organización InternacionaldeNormalización), que se puedeconsiderardeJureyCCITT(Comité Consultivo Internacional Telegráficoy Telefónico), que es la organización de Facto. Universidad Autónoma Metropolitana. Unidad lztapalapa 7 Capítulo 1 I NORMALIZACIóN ENLAS TELECOMUNICACIONES El status legal de las compañías telefónicas en el mundo varía considerablemente de un país a otro. Enun extremose encuentra EstadosUnidos,que tiene alrededorde 1600 compañías telefónicas privadas diferentes. En el otro extremo, se consideran los paísesen los que el gobierno nacional tiene un el correo, telégrafo y, monopolio completo de todas las comunicaciones, incluyendo frecuentemente, también la radio y televisión. La mayoría de los países caen en esta última categoría. En algunos casos, la máxima autoridad en las telecomunicaciones resulta ser una compañía nacionalizada, en tanto que en otroses sólo una rama derivada de la estructura gubernamental. .Con todosestos distintos proveedoresde servicios,esclara lanecesidaddequedicho servicio sea compatible una a escala mundial, para asegurar que la gente (y las computadoras)en un determinado país, pueda llamar a sus corresponsalesen otro. Esta coordinación la ofrece una agencia de las Naciones Unidas llamada ITU (Unión Internacional de Telecomunicaciones). Un órgano de la ITU, el mencionado CCITTfue muy importante en lo referente a normas. El CCITT tenía cinco clases de miembros: miembros A que son los organismos de comunicaciones más importantes de un país;miembros B, queson los reconocidos como administracionesprivadas (por ejemplo, AT&V); miembrosC, queson las organizaciones a otras organizaciones científicas e industriales; miembros Dl que corresponden internacionales; ymiembros E, que correspondena aquellas organizaciones cuya misión fundamental está en otro campo, pero que están interesadas en el trabajo del CCITT. De esta clasificación, solamente los miembros tipo A tenían derecho de voto. La tarea del CCITT consistió en promover las recomendaciones técnicas sobre aspectos telefónicos, telegráficos e interfaces de comunicación dedatos. Esta labor produjo normas que tuvieron un reconocimiento internacional; dos ejemplos que se pueden citar al respecto son: la norma V.24 (tambiénconocida como EIA RS-232, enEstados Unidos), que especifica la distribución y significado de las diferentes puntas del conector que se utiliza en la mayoría de las terminales asincronas, y la norma X.25, que especifica la interface entre una computadora y una red de computadoras. LA IS0 Y OTROS ORGANISMOS DE NORMALIZACIóN Las normas internacionales son producidas por la IS0 mencionada anteriormente, que es una organización voluntaria, fuera detratados y fundada en 1946, cuyosmiembros son las organizaciones nacionalesde normalización. a Implementación de un shell remoto Protocolos de comunicación.ConceDtos básicos La IS0 emitenormasenuna gama muy ampliade temas, quecubrendesde aquellos referentes atuercasy tornillos (literalmente hablando), hasta los recubrirnientos depostes telefónicos. La IS0 tiene casi 200 comités fécnicos ( X ) , cuyo orden de numeración se basa en el momento de su creación, ocupándose cada uno de ellos de un tema especifico. Por ejemplo, TCI trata Io referente a tuercas y tornillos (normalizando los pasos de las hélices de los tornillos); el TC97, está relacionado con computadoras y procesamiento de información. se dividen en grupos de Cadaunode los TC tiene subcomités (SC), los cualesasuvez trabajo (WG). Los WG, constituidos por casi 100 O00 voluntarios, distribuidos en todo el mundo, son los queefectivamente realizan el trabajo. Varios de estos “voluntarios” sonpor lo general asignados por las propias compañías, cuyos productos están en vías de normalización, para trabajar en asuntos de la OSI; otros voluntarios son empleados de gobierno interesados en promover que las cosas que está haciendo su país se adopten como normas internacionales. Expertos académicos también juegan una parte muy importante y activa en la constitución de varios WG. La IS0 y el CCITT algunas veces cooperan (la IS01 es un miembro de clase D del CCITT), conrespectoa la emisión de normas sobre telecomunicaciones,con objeto de evitar el absurdo de dos normasinternacionales oficiales, mutuamente compatibles. El representante de Estados Unidos en la IS0 es el ANSI (Instituto Nacional Americano de Normalización), quien a pesar de su nombre es una organización privada, descentralizada y no lucrativa, que está constituida por fabricantes, proveedoresde servicios portadores comunes y otros grupos interesados. Las normas del ANSI son fi-ecuentemente adoptadas por la ISO, como normas internacionales. El procedimiento que utiliza la I S 0 para el establecimiento de normas, está diseñado para conseguir el mayor consenso posible del tema respectivo. El proceso se inicia cuando una de las organizaciones de normalización de carácter nacional siente la necesidad del establecimiento de una norma internacional enunárea específica; formando un grupode trabajo que llega a plantear una DP (Propuesta de Anteproyecto). Una vez que se genera la DP, se hace circular entre todos los miembros, los cuales cuentan con seis meses, a partir de ese momento, para plantear sus comentarios y críticas. Si una mayoría significativa aprueba la propuesta, se produceun documento revisado, denominado DIS (Anteproyecto de Norma Internacional), el cual circula nuevamente con objeto de tener más comentarios y realizar una votación al respecto. Conbaseen los resultados de esta votación, se prepara, aprueba y publica el texto final de la IS (Norma Infernacional). En algunas de las áreas, en donde existe una gran polémica, la DP o DIS probablemente tenga que pasar por varias versiones, en su tal planteamiento,antes de adquirir el número de votosnecesarioparasuaprobación,de forma que el proceso completo puedellevar varios años. La NBS (Oficina Nacional de Normas) es una agencia del Departamento de Comercio de Estados Unidos que emite normas obligatorias para las adquisiciones que realiza el gobierno de Estados Unidos, con excepción de aquellas que realiza directamente el Departamento de Defensa. Universidad Autónoma Metropolitana. Unidad lztapalapa 9 Capítulo 1 I Otro participante importante enel mundo delasnormas,es el IEEE (Institutode Ingenieros Eléctricos y Electrónicos), quees la organización profesional más grande del mundo. Esta institución, además de publicar numerosas revistas y programar un número muy grande de conferencias anuales, ha establecido un grupo dedicado al desarrollo de normas en el área de ingeniería eléctrica y computación. La norma 802 IEEE, pafa una red de área local (véase el capítulo de redes), es la norma clave para el desarrollo de las redes de área local. Posteriormente, fue adoptada por la I S 0 como base para la norma I S 0 8802. EL MODELO OS1 En1977 la IS0 designó al ComitéTécnico97 como encargado del desarrollo deuna arquitectura para redes. El resultado desus trabajos fue el Modelo de Referencia para la (OS])adoptadoen1983porel CCITT comola Interconexión de SistemasAbiertos recomendación X.200. El modelo propone dividir el conjunto de funciones relacionadas conlos servicios decomunicaciónen capas o niveles funcionales de acuerdocon los siguientes criterios: 1. Homogeneidad de las funciones contenidas encada nivel. 2. Definición de niveles entre los que las interacciones se limiten al mínimo. 3. Mantenimiento del número de niveles o estratos funcionales en un rango razonable. LOS OBJETIVOS DEL MODELO OS1 Los objetivos del modelo OS1 son (IS0 1981): l . Proporcionar una base común para la coordinacibn del desarrollo de normas para lograr la interacción de sistemas, mientras se permita la existencia denormaspara ser colocadas en la perspectiva dentro del modelo de referencia completo. 2. Identificar áreas de desarrollo o mejoramiento de normas. 3. Proporcionar una referencia común para mantener la consistencia de todas las normas relacionadas. 4. Permitir la interconexión de sistemas de diferentes vendedores. CONCEPTOS DEL ENFOQUE DE CAPAS Una capa o un nivel: define un nivel de abstracción diferente, agrupando tareas semejantes y separándolas de grupos complementarios. AI dividir en capas se prevée que los cambios futuros de alguna de ellas no afecte el desempeño del resto. (Ver Figura 3). 10 Implernentación de remoto un shell Protocolos de comunicación. Conceptos básicos Corresponsales o entidades pares: Son entidades que soportan el protocolo de nivel N. Interface: Frontera vertical entredos niveles adyacentes.Deberá ser pequeño y bien definido. Puntos de Acceso a Servicio (SAP):Medios a través de los cuales se comunican dos capas adyacentes através de la interface. Primitivas de Servicio:Información intercambiada pordos capas adyacentes. capa N + l ................................................................ Protocolo Interface Entidades pares capaN ................................................................ capa N -1 Primitivas Servicios proporcionados Figura 3. El concepto de capas enel modelo OSI. Se dice que OS1 es un modelo para sistemas abiertos, pues pone especial atención en el intercambio de información entre sistemas y no en el funcionamiento interno de cada sistema en particular, buscándose con ello la comunicación entre equipos heterogéneos. S Universidad Autónoma Metropolitana. Unidad lztapalapa 11 Capítulo I LAS CAPAS DEL MODELO OS1 El modelo OS1 describe una arquitectura estratificada de red dividida en siete capas: 1. 2. 3. 4. 5. 6. 7. La Capa Física. La Capa de Enlace De Datos. La Capa de Red. La Capa de Transporte. La Capa de Sesión. La Capa de Presentación. La Capa de Aplicación. T Las capas inferiores comprenden las funciones que aseguran la transferencia de operación entre dosterminalesdentro de la redde telecomunicaciones.La cuarta capa releva a las sesiones de cualquier detalle referente a la forma en la cual se realiza la transferencia de datos. Los niveles uno acuatro de OS1 conforman el subsisfema de fmnsporfe. I Los niveles de sesión, presentación y aplicación constituyen los niveles superiores de OSI. Estas capas ofrecen una serie de servicios orientados al usuario: videotexto, teletexto, fax, etc. - C O m P U t a d I Aplicación I Aplicación t I Presentación I 1 Presentación 1 4 f O m P Transporte t a d t I Transporte t Red Enlace 1 1 O r a B A - L t Enlace Flsico Figura 4. Las capas del modelo OSI. 12 C U : I I I - Sesión O r a I Implementación de un shell remoto I Protocolos de comunicación. ConcePtos básicos EL SUBSISTEMA DE TRANSPORTE DE OS1 1. La Capa Fisica. Proporciona las características mecánicas,.eléctricas, funcionales y de conexiones físicas para la transmisión procedimiento para activar y mantener transparentede bits entre entidadesde ,enlace de datos. En particular soporta la transmisión y recepción de especificaciones de información, de bits de sincronización y deseñalesdependientes del medio. Unejemplo de protocolo de la capa física es la norma RS-232C, que es la tercera versión de la norma RS-232 mencionada anteriormente. 2. LaCapadeEnlace. Proporciona los medios funcionales y deprocedimientopara activar, mantener y desactivar una o más conexiones de enlace de datosentre capas de red. En particular proporciona control de conexión, encapsulamiento, direccionamiento, secuenciamiento, corrección y detección de errores, servicios de transmisión y control de flujo. Comoejemplode protocolo delacapa de enlace,se tiene el protocolo HDLC (Control de Alto Nivel del Enlace de Datos), que se analizará más adelante. 3. LaCapadeRed. Proporciona los medios para establecer, mantener y finalizar conexiones de red entre sistemas que contienen entidades de aplicación de comunicación entre dos entidadesde transporte a través deconexionesde red. En particular, esta capa proporciona, direccionamiento, control de reenvío y tiempo de vida de mensajes, control de congestión y control de flujo. El Protocolo de Interconexión de Redes (IP), de ARPANET, es un ejemplo de protocolo de la capa de red (se revisará más adelante). ARPANET (ReddelaAgencia deProyectosdeInvestigación Avanzada) es la creación de ARPA (ahora conocida como (DARPA), que es la Agencia de Proyectos de Investigación Avanzada (de la Defensa) correspondiente al Departamento de Defensa de Estados Unidos. 4. La Capa de Transporte. Proporciona la transf rencia transparente de datos entre dos capas de sesión. En particular proporciona mu1 iplexado, direccionamiento, control de conexión, fragmentación de mensajes, secuenciación, control de error y control de flujo de terminal a terminal, así como la paquetización demensajes Se identifican tres tipos de servicios de transporte: tipo de conexión, tipo de transacción y tipo de difusión. Los protocolos TCP (Protocolo de Control de Conexión) y UDP (Protocolo de Datagrama de Usuario) de ARPANET, sonejemplos de protocolos delacapade transporte; se analizarán más adelante. 9 LAS CAPAS SUPERIORES DE OS1 l . La Capa de Sesión. Proporciona los medios necesarios para la cooperación de las capas de presentación para organizar y sincronizar su diálogo y manejar su intercambio de datos. En particular, ésta capa libera, sincroniza, multiplexa, y administra recursos, exceptuando el reporte y servicios de comunicación. Se tiene el protocolo NFS (Sistema de Archivo en Red), desarrollado por SUN Microsystems como un protocolo correspondientea la capa de sesión. Este protocolo permite que un conjunto de Universidad Autónoma Metropolitana. Unidad lztapalapa 13 3. computadorascomunicadas entre sí accedan los archivos de otras de ellas como si fueran locales. La Capa de Presentación. El propósito de ésta capa es representar información para la comunicación de lascapas de aplicación de ,modoquese mantenga el significado mientras se resuelven las diferencias de sintaxis. En particular esta capa proporciona los siguientes servicios: transferencia de datos, protocolo de encriptamiento, selección de la sintaxis de los datos del usuario, protocolo de conversión, y conversión del formato de datos. Ejemplo: XDR (Representaciónde Datos Externos). Desarrolladopor SUN Microsystems, permite la representación deestructuras de datos independientemente de la máquina. LaCapade Aplicación. Los protocolos deestacapa sirven directamentea la comunicación del usuario final por medio del servicio de información distribuida (intercambio del significado de la información) apropiado para una aplicación. Esta capa proporciona la identificación de los usuarios que intentan comunicarse (por ejemplo, por nombre o por dirección) e identificación de las tareas a ser comunicadas. Muchos tipos de tareas son relevantes para el OSI: procesamiento de texto, transacciones bancarias, reservacionesde aerolíneas, acuerdosde recursos, procesamientode transacción de terminal a computadora, programas de control de proceso en tiempo real. Los servicios decomunicación son: transferencia de archivos de la red, terminal virtual, terminal a terminal y control de red. Ejemplo:el protocolo RCP (Llamada a Procedimientos Remotos) ha sido definido por SUN Microsystems. Permite a un proceso, en el curso de su ejecución, hacer una llamada a procedimiento o función con parámetros y valores de vuelta en otra máquina. lmplementación de unshell remoto 14 ." ". l _ " _ ..- .I Protocolos de comunicación. Conceptos básicos TIPOS DE PROTOCOLOS El protocolo más simple se llama Stop 8, Wait (Paro y Espera), y trabaja como sigue: el receptor indica su disponibilidad enviando una señal, entonces el transmisor envía sus datos y espera a que el receptor le vuelva a indicar su disponibilidad, antes de volver a transmitir. Este procedimiento funciona bien cuando los mensajes pueden ser enviados en un solo paquete, pero muy frecuentemente un mensaje es dividido en varios paquetes. Si este es el caso, su desempeño es inadecuado. ’ Se puede concluir que, en algunos casos, el sencillo procedimiento de reconocimientostop 2% wait proporciona un rendimiento adecuado. Para aquellos casos donde esto no ocurre, es deseable un procedimiento más elaborado. Tal procedimiento, es conocido como pipelining (entubamiento). Supóngase la existencia de dos estaciones, A y B, conectadas mediante un enlace dúplex (comunicación en dos sentidos simultáneamente). La estación B posee siete buffers (dispositivos o lugares concapacidad dealmacenamiento) derecepciónen lugar de uno. Luego, B puede aceptar hasta siete paquetes y A,puede enviar hasta siete paquetes antes de ser esperarpor un reconocimiento. Para guardarle la pista a los paquetesquehande reconocidos, cada uno de estos se etiqueta con un número en el rango de O a 7 (módulo 8 ) . B acepta un paquete enviando un reconocimiento queincluye el número de secuencia del último paquete correcto que recibió. Por tanto, si B devuelve el número de secuencia 6, significa que aceptatodos los paquetes previos hasta e incluyendo el 6, y avisa queahoraespera el paquete 7. La estación A, por otro lado, mantiene una lista con los números de secuencia de los paquetesquepuede enviar, mientrasque B lleva una lista con los númerosde los paquetes que puede recibir. Cada una de estas listas puede visualizarse como una “ventana” de paquetes. Por esta razón al mecanismo de gestión de paquetes que se utiliza se le conoce como sliding window (ventana deslizante). Hasta el momento se ha discutido la transmisión en una sola dirección. Si dos estaciones intercambian datos, cada una debe mantener dos ventanas: una para transmisión y otra para recepción, en este caso, una técnica llamada piggybacking(acarreoacuestas) es comúnmenteusada.En ella una estación que tiene datos que transmitir, ademásde estar obligada a reconocer los paquetes que se le han enviado, aprovecha el paquete de datos para cargarle a cuestas el reconocimiento pendiente, con lo que se ahorran paquetes. En un procedimiento normal, el transmisor envía un paquete de información etiquetada con un número de serie. Cuando ésta llega al otro lado, el receptor verifica si hay o no errores en el paquete recibido. Si no hayerrores, el receptordevolverá un acuse de recibo enviando un paquete de reconocimiento(REC) que contendrá la etiqueta del paquete aceptado. Debido a las limitaciones del canal físico, al receptor4 pueden llegar paquetes en apariencia completos, pero con errores. Por esta razón, es necesario verificar la existencia de errores en cada uno de ellos. Encasode error, el receptor devolverá unpaquetededesconocimiento (NREC) donde informa al transmisor el número de seriedel paquete con problemas para que éste pueda reexpedirlo. Universidad Autónoma Metropolitana. Unidad lztapalapa 15 Capítulo 1 I En el peor de los casos,puedepresentarse la pérdida de la información o del reconocimiento. Por tanto, cada vez que el transmisor envía un nuevo paquete, debe arrancar un temporizador para contabilizar el plazo máximo que debe esperar antes de dar por hecho su pérdida y retransmitirla o tomar alguna otra medida correctiva. De manera genérica, a este conjunto de procedimientos seles Automática de Repetición(ARQ). conocecomo Solicitud Se van arevisar tres modalidades de ARQ: 1. ARQ alto y espera. 2. ARQ con repetición no selectiva. 3. ARQ con repetición selectiva. ARQ ALTO Y ESPERA Esta versión de ARQ de uso popular usa el sencillo esquema de reconocimiento alto y espera, descrito con anterioridad. La estación transmisoraenvía un paquete y espera su reconocimiento.Ningún otro paquetepuede enviarse hastaque la estación conteste. Esta puede regresar un reconocimiento positivo (REC) si el paquete es correcto, o un reconocimiento negativo (NREC) en otro caso. Este algoritmo, sin embargo, no contempla todas las contingencias. El paquete transmitido puede ser descompuestopor el ruido del canal, a tal grado que, ni siquiera llegará asu destino. En cuyocaso el receptor no respondería. Tomandoencuenta esta posibilidad, el transmisor está equipado con un temporizador que se echa a andar en cuanto setransmite un paquete. Si éste expira antes de que llegue una respuesta desde el otro lado del enlace, el transmisor volverá a enviar la última tramaque mandó.Obsérveseque ésta modalidad siempre requiere que el transmisormantengauna copia del paqueteque envía hasta que reciba un reconocimiento positivo (REC) del mismo. Se requiere un refinamiento adicional. Considerese la siguiente situación. La estación A envía un paquete, que es recibido correctamente porB, quien a su vez responde con REC. Sin embargo, el paquete REC en camino se daña y no puede ser reconocido por A, quien debe retransmitir el mismo paquete, este paquete duplicadoes aceptado por B. Para evitar este alternada con los números O y 1, de la problema, los paquetessonetiquetadosenforma misma forma los reconocimientos sonde la forma RECO y RECI. La principal ventaja de este esquema essusimplicidad. Sin embargo puede ser muy ineficiente. La técnica de ventana deslizante presentada con anterioridad, puede adaptarse para ofrecer un uso más eficiente de la línea. En este contexto se le conoce como ARQ continuo. I 16 Implementación deremoto un shell Protocolos de comunicación. Conceptos básicos ARQ CON REPETICIóN NO SELECTIVA Una variante del ARQ continuo se llama ARQ Go Back N (Devuelve N). En esta técnica una estación puede enviar una seriede paquetes,hasta un máximodeterminadopor el número total de ventanas que puede tener abiertas. Si la estación receptora detecta un error en un paquete, ésta envía unreconocimiento negativo NREC, paraesepaquete.También descartará todos los paquetes posteriores al dañado sin siquiera analizarlos. Entonces la estación transmisora, cuando recibe un NREC, retransmite el paquete que tuvo error más los paquetes que le sucedían. Si la ventana del emisor se llena, antes de que el temporizador venza, la línea se quedará inactiva. Eventualmente al expirar el tiempo del emisor, éste comenzará aretransmitir en forma ordenada todos los paquetes que no tengan reconocimiento, comenzando con el que está dañado o perdido. Con ARQ con repetición no selectiva, no es necesario que cada paquete sea reconocido. Por ejemplo, la estación A envía los paquetes O, 1, 2, y 3. La estación B responde con RECO después del paquete O, pero no responde a los paquetes 1, 2 y 3. Después de que el paquete 3 es recibido, envía el REC3, indicando que el paquete 3 y todos los paquetes anteriores son aceptados. Se pueden presentar otras contingencias, por ejemplo, supóngase un flujo de paquetes en una línea dúplex. Mientras la estación transmisora A envíalas tramas 2, 3 y 4, la estación (REC) del paquete I previamente recibido. Tiempo receptora B mandaunreconocimiento después, el paquete 2 es recibido con error: Los paquetes 3, 4 y 5 están en tránsito. B manda un paquetededesconocimiento NREC2 aA el cual es recibido despuésdeque ésta ha mandado el paquete 5 pero, entes de mandar el 6. A debe entonces retransmitir los paquetes 2, 3, 4, y 5, aunque sólo el paquete 2 hayatenidoerror. Otra vez, la estación transmisora debe tener una copia delos paquetes no reconocidos. Nóteseque el número máximo de paquetes que pueden estar saliendo en cualquier instante esdemaxseq, y nodemaxseq + 1, aúncuandohayamaxseq + 1 númerosde secuencia distintos: 0123...maxseq. Para entender la razón por la cual se necesita tener esta restricción, considérese la siguiente situación con maxseq= 7: 1. El transmisor envía paquetes del O a la 7. I 2. El reconocimiento superpuesto parael paquete 7 eventualmente regresaal emisor. 3. El emisor envía otras ocho paquetes, de nuevo con números de secuencia que vandel O al 7. 4. Ahora llega otro reconocimiento superpuesto para el paquete 7. La pregunta que se plantea es la siguiente: ¿“Los ocho paquetes pertenecientes al segundo lote llegaron con éxito, o los ochopaquetes se perdieron” (cgntando las desechadas que Universidad Autónoma Metropolitana. Unidad lztapalapa 17 Catitulo 1 siguieron a un error como pérdida?. En ambos casos el receptor estaría enviando el paquete 7 como el reconocimiento. El emisor no tiene manera de decidir. Por esta razón, el ,número máximo de paquetes enviados sin reconocimiento deberáser igual al valor maxseq. ARQ CON REPETICIóN SELECTIVA La técnica de Repetición Selectiva ofrece un enfoque mejorado. Los únicospaquetes transmitidos son aquellos que se señalan en la respuesta NREC. Por otro lado, el receptor debe de poseer la capacidad de almacenamiento necesaria para guardar temporalmente los paquetes que arribaron después de el que fue desconocido, así como la lógica para reordenarlos en la secuencia correcta, una vez que sea retransmitido el paquete defectuoso. El transmisor también requerirá de una lógica de mayor complejidad para retransmitir paquetes fuera de secuencia: por esta razón la técnica de repetición no selectiva se usa más comúnmente. El tamaño de la ventana es más restrictivo para la técnica de ARQ con repetición selectiva que para la de ARQ con repetición no selectiva. Considérese el caso de un campo de tres bits (el espacio de la secuencia es (8), y sea la siguiente situación: 1. La estación A envía los paquetes O a 6 a la estación B. 2. La estación B recibe y reconoce los paquetes. 3. Debido al ruido, el reconocimiento se pierde. 4. La estación A espera un momento y retransmite la secuencia. 5. La estación 8 ya ha avanzado su ventana para aceptar los paquetes 7, O, 1, 2, 3,4, 5. Así, ésta se supone que es un nuevo lote y acepta a O, 1, 2, 3,4 y 5. El problema con la situación anterior para ARQ con repetición selectiva,es que hay un traslape entre las ventanas de transmisión con que se administran dos secuencias consecutivas. Para superar el problema, el tamaño máximo de la ventana no deberá ser mayor que la mitad del rangode la secuencia de números. E 18 Implementación de un shell remoto I Protocolos de comunicación. ConceDtos básicos EL PROTOCOLO DE ALTO NIVEL DE CONTROL DEENLACE DE DATOS (HDLC) Algunos de los protocolos que han conseguido una amplia aceptación son: Protocolo de Alto Nivelde Control de Enlace de Datos. (HDLC).Desarrollado por ISO. Procedimientos de Control de Comunicación de DatosAvanzados .(CCP).Desarrollado por el ANSI. Procedimiento Balanceado de Acceso de Enlace. (LAP-B).Adoptado por el CCITT como parte de su recomendaciónX 2 5 para redes de conmutación de paquetes. Control de Enlace deDatos Sincrono. (SDLC).Usado por IBM. No existen diferencias virtualmente, entre HDLC y CCP. LAP-B es un subconjuntode HDLC. SDLC tambiénes un subconjuntodeHDLC, aunque incluye algunas diferencias menores. A manera de ejemplo se revisará el prot,ocolo HDLC. HDLC define tres tipos de estaciones, dosconfiguraciones de enlace y tres modosde operación para transferencia de datos. Los tres tipos de estación son: Estación primaria. Tiene la responsabilidad de controlar la operación del enlace. Las tramas producidas por el primario se llaman comandos. (Como se trata de la capa de enlace de datos, las unidades deinformación son las tramas). Esfación secundaria. Opera bajo el ,control de la primaria. Las tramasproducidas por una estación secundariasellaman respuestas. El primario mantiene un enlace lógico separado por cadaestación secundaria en línea. Estación combinada. Reúne las características de las estaciones primaria y secundaria. Una estación combinada puede producir comandos o respuestas. Las dos configuraciones de enlace se muestran en la Figura 5. Desbalanceada. Se usa en operaciones punto a punto y multipunto. Esa configuración o consiste enuno primario y uno o varios secundarios y soportatransmisionesdúplex semidúplex (transmisión en los dos sentidos, pero no simultáneamente). Balanceada. Se usa sólo en configuraciones punfo a punto. Esta configuración consiste en dos estaciones combinadas y soporta transmisiones dúplex y semidúplex. Universidad Autónoma Metropolitana. Unidad lztapalapa 19 . Capítulo 1 .. Los tres modos para transferencia de datos son: , Mododerespuestanormal(NRM). Estaes una configuración desbalanceada. El primario puede iniciar la transferencia de datos hacia un secundario, pero un secundario solamente puede transmitir datos en respuesta a un comando proveniente del primario. Modo Asíncrono Balanceado (ABM).Esta es una configuración balanceada. Cualquier estación combinada puede iniciar la transmisión sin recibir permiso alguno de laotra. Modo de Respuesta Asíncrono (ARM).Esta es una configuración desbalanceada. En este modo, un secundario puede iniciar latransmisión ,sin permiso explícito del primario. El primario sigue teniendo la responsabilidad de la línea, incluyendo la recuperación de errores y la desconexión lógica. (a) comandos PRIMARIO $espuestas i SECUNDARIO SECUNDARIO $omando,s COMBINADO COMBINADO respuestas Figura 5. Configuraciones de enlace HDCC. (a) desbalanceada, (b) balanceada. HDLC usa transmisión síncrona. Todas las transmisiones son en tramas y un formato Único es suficiente para todos los tipos de datos e intercambios de control. La Figura 6 muestra la estructura de la trama HDLC. La trama tiene los siguientes campos Bandera: 8 bits. Dirección: uno o más octetos. Control: 8 o 16 bits. Datos: variable. Secuencia de verificación de trama (SVT): 16 o 32 bits. Bandera: 8 bits. 1 Los campos de bandera, dirección y control que preceden al campo de datos se conocen 20 Implementación de remoto shell un I Protocolos de comunicación. Conceptos básicos comoencabezado,mientras terminación. que la SVT, y la banderadespuésde los datos, sellaman Los campos de bandera delimitan los extremos de la trama con el patrón Único 01111 110. Sin embargo,debidoaque HDLCpermite la presenciadepatrones arbitrarios de bits, no existe la seguridad de que el patrón O1 111110 no aparezca en algún lugar del interior de la trama, destruyendo la sincronización a nivel de trama. Para evitar esta situación, se utiliza un procedimiento conocidocomo rellenado de bits (bit stufing). En éste, el transmisor insertará un bit O extra, cada vez que detecte la ocurrencia de un patrón de cinco 1’s consecutivos, dentro de la trama (excepto cuandose trate realmente de una bandera). Después de detectar la aparición de una bandera de inicio, el receptor monitorea el flujo de bits. Cuando aparece un patrón de cinco l’s, se examina el sexto. Si éste es cero se borra. BANDERA a I DIRECCIÓN I CONTROL I octetos 8 0 16 DATOS SVT BANDERA varigble 16 o 32 8 Figura 6. Estructura de una trama HDLC. Si es I y el que sigue es cero, se trata de una bandera. Si el sexto y séptimo bits son l’s,la estación transmisora está señalando .una condición de aborto. Con el uso del rellenado de bits, pueden insertarse patrones arbitrarios en el campo de datos de latrama. A esta propiedad se le conoce como transparencia de datos. El campo de direcciones se usa para identificar a la estación secundaria que transmite o recibe la trama. Este campo no es necesario para enlaces punto a punto, pero siemprese incluye por uniformidad. Una dirección, normalmente es deocho bits, pero habiendo un acuerdo previo, puedeusarseunformatoextendidoen elque la longitud de la dirección extendida es un múltiplo de siete bits. El octavo bit de cada octeto es 1 o O, dependiendo si éste es o no el último octeto de la dirección. El octeto I1 1I1 111 se interpreta como una trama para todas las direcciones, tanto en el formato básico, como en el extendido. Se utiliza para permitirle al primario la difusión de una trama dirigida a todos los secundarios. HDLC define tres tipos de tramas, cada uno con diferentes formatos de campo de control. Las tramas de información (tramas I), acarrean los datos que son transmitidos por la estación, conocidos como datos del usuario. Adicionalmente, alguna información de control de flujo o error, usando el mecanismo ARQ, puedellevarse a cuestas (piggybacking), de la misma trama I. Las tramas de supervisión (tramas S) proporcionan el mecanismo ARQ, cuando no se lleva a cuestas la información para manejo de errores y control de flujo. Las tramas no numeradas (tramas U) proveen las funciones suplementarias para el control del enlace. El campo de datos se presenta solamente en las tramas I, así como en algunas tramas no numeradas. Este campo puede contener cualquier secuencia de bits. Su longitud máxima está Universidad Autónoma Metropolitana. Unidad lztapalapa 21 Capítulo 1 normalmente acotada por laimplantación y debe ser un múltiplo de 8 bits. La secuencia de verificación de trama se aplica a los bits restantes de la trama, excluyendo a las banderas. La operación de HDLC consiste en intercambios de tramas-I, tramas-S y tramas-U entre unaestación primaria y una secundaria o entre dosestaciones primarias. Los diferentes comandos y respuestas definidos para estos tipos de tramas se muestran en la Tabla 1. Para describir la operación de HDLC, primero se discutirán estos tres tipos de tramas, y luego se darán algunos ejemplos. I Nombre Fun DescriDción lrlformación ( I ) Supervisión ( S ) No Listo para Recibir ( RNR ) Lislo para Recibir ( RR ) Rechazo ( REJ ) Rechazo Selectivo ( SREJ ) No Numerado ( U ) Establecimienlo de Modo NRM I NRM Extendido CIR CIR C IR CIR CIR CIR lnlercambio de datos deusuario Establecimiento de Modo ARMI ARM Extendido C Eslablecimienlo de Modo ABM I ABM Exleudido C Establecimiento de modo de lnicialización ( SIM ) C Desconectado ( DISC ) Reconocimienlo no numerado ( VA) C R Modo Desconectar ( DM ) Requerimiento de Desconexión ( RD ) Requerirnienlo de Modo de lnicialización ( RIM ) Información No Numerada ( VI ) Bit de Encuesta No Numerado ( UP ) Reset ( RSET) htorcambio do Idorltilicnción ( XID ) Prucba ( TES7 ) Rechazo de Trama ( FRMR ) R . C R R CIR C C C/R CIR Reconocimiento positivo: No lisb para recibir Reconocimiento positivo: Listo para recibir trama-I Reconocimiento negativo: Repetición no Selectiva Reconocimiento negativo: Repetir Selección Estabiecimienlo de modo; Extendido = campo de control de dos octetos Establecimiento de modo; Extendido 5 campo de conlrol de dos ocletos Establecimiento de modo; Extendido = campo de control de dos octetos Inicializa funciones de control de enlace en la estación direccionada Termina conexión de enlace lógico. Aceptación de reconocimientos de uno de los comandos de selección de modo anteriores El secundario está desconectado Iogicamente Requerimiento del comando DISC lnicialización necesaria; requerimiento del comando SIM Usado para inlercambiar información de control Usado para solicitar información de control Usado para recuperación; Resets N ( A ) y N ( S ) Usado para idontidad de peliclones I reportos y estados inlercambio de campos de Información idbntica para pruebas Recepción de reportes de tramas inaceplables Tabla 1. Comandos (C) y respuestas (R) HDLC. F = Función ( C 6 R). Tramas de información. La operación básica HDLC involucra el intercambio de tramas de información (trama-I) que contienen los datos del usuario. Cada trama-I contiene el número de secuencia de la trama transmitida así como un reconocimiento positivo. El reconocimiento es el número de secuencia de la próxima trama esperada. Un tamaño máximo de 7 o 127 es permitido. La trama-I también contiene un bit de P/F (EncuestalFinal). El bites de encuesta (poll) para comandos (de la primaria) y es un bit final para respuestas. En el modo de respuesta normal (NRM), la primaria utiliza la encuesta para dar permiso de transmitir poniendo el bit a I y la 1 22 Implementación de un shell remoto Protocolos de comunicación. Conceptos básicos secundaria pone el bit final a 1 en la última trama-I de su respuesta. En el modo asíncrono de respuesta (ARM), el bit P/F se utiliza algunas veces para coordinar el intercambio de tramas-U y tramas-S. Tramas de supervisión. La trama de supervisión (trama-S) es utilizada para control de Selectivo. El primero se usa flujo y errores. Se permiten tanto ARQ Selectivo como ARQ No poco debido a los requerimientos de memoria. Una trama puede ser reconocida positivamente con Listo para Recibir (RR) cuando no está disponible una trama-I para realizar un Piggybacking. Además, un No Listo Para Recibir (RNR) se utiliza para aceptar una trama pero pedir que no se envíen más tramas hasta que se utilice un RR subsecuente. ' Un bit P/F en una trama supervisora se puede usar como sigue: la primaria puede prender el bit P en una trama RR para explorar la secundaria. Esto se hace cuando la primaria no tiene tramas-I para realizar el acarreo a cuestas de la exploración. La secundaria responde con una trama-I si la tiene; de otra manera, envía un RR con el bit F prendido para indicar que no tiene datos que enviar. La primaria (estación combinada) puede prender el bit P en el comando RNR para solicitar el status de una estación secundariakombinada. La respuesta será un RR con el bit F prendido si la estación puede recibir tramas-I, y un RR con el bit F prendido si la estación está ocupada. Tramas no numeradas. Lastramas no numeradas se utilizan para una variedad de funciones de control. Como el nombre indica, estss tramas no llevan números de secuencia y no alteran la secuencia o el flujo de las tramas-I numeradas. Se pueden agrupar estas tramas en las siguientes categorías: 1. Comandos y respuestas de selección de modo. 2. Comandos y respuestas de transferencia de información. 3. Comandos y respuestas de recuperación. 4. Comandos y respuestas varios. Estos comandos son transmitidos por la estación primariakombinada para inicializar o cambiar el modo de una estación secundariakombinada. La estación secundariakombinada reconoce y acepta respondiendo con una trama de recorlocimiento no numerada (UA); el UA tiene puestoel bit F al mismovalor que el bit P recibido. Una vez establecido, el modo permanece en la estación secundaria hasta que el próximo comando de selección de modo sea aceptado y en la estación primaria hasta que el próximo comando de selección de modo sea aceptado o transmitido y reconocido. Comandos de selección y modo. Los comandos SNRM,SNRME, SARM, SARME Y SABME se explican por sí mismos. Después de aceptar el comando, los números de secuencia de las tramas-I en ambos sentidos se inicializan en cero. El comando SIM (de Inicialización de Modo) se utiliza para que la estación secundariakombinada direccionada inicie un procedimiento de estación específico para lnicializar sus funciones de control de enlace de datos (esdecir, aceptar un nuevo programa o actualizar los parámetros de operación). Mientras que en el modo de inicialización la información se transmite utilizando tramas de información no numerada (UI). El comando DISC (Desconectar) esutilizado para Universidad Autónoma Metropolitana. Unidad dztapalapa 23 CaPítulo 1 informar a la estación direccior;ada quela operación. estación transmisora está suspendiendola Además de UA, existen varias respuestas relacionadas con el establecimiento del modo. La respuesta DM (Desconectar Mado) se envía en respuesta a cualquier comando para indicar que la estación que responde está lógicamente desconectada. Cuandose envía en respuesta a un comando de establecimiento e modo, DM se utiliza para rechazar modorequerido. La respuesta RIM (Requerimiento deModo de Inicialización) se utiliza en respuesta a un comando de establecimiento demodo cuando la estación no está lista y desea inicializarse. La respuesta RD (Requerimiento de Desconexión) es utilizada para requerir desconexión de un enlace lógico. Comandos y respuestas de transferencia de información son utilizados para el intercambio realiza principalmente a través de los de . información entre estaciones. Esto se. comandoshespuestas no numeradas de información (UI). Ejemplos de tramas de información UI son las interrupciones operacionales, status de alto nivel, la hora del día y parámetros de iniciaiización de enlace. El comando UP (de Petición no Numerada) se utiliza para solicitar una respuesta no numerada, como una manera de establecer el estado de la estación direccionada. Comandos y respuestas de recuperación. Se utiliza cuando el mecanismo normal ARQ nose aplica o no trabaja. La respuesta FRMR (Trama .Rechazada) es utilizada para reportar un error en una trama recibida, tal como: 1. Campo de control válido. 2. Campo de datos demasiado largo. 3. Campo de datos nopermitido con el tipo de trama recibida. 4. Conteo recibido no válido (es decir, se reconoce una trama que no ha sido enviada). El comando RSET es utilizado para limpiar la condición FRMR. RSET indica que la estación transmisora reinicializa su número desecuencia de envío, y la estación direccionada debe hacer lo propio con su número de secuencia de recepción. Miscelheos. Finalmente, existen dos comandos/respuesta que no encajan en ninguna categoría. El comandohespuesta XID(deIntercambio de Identificación) es utilizado por dos estaciones para intercambiar identificación de estaciones, así como las características de Un comando TEST debe ser enviado con una respuesta TEST a la mayor brevedad. Esto es una forma de probar que el enlace y la estación direccionada aún están funcionando. Implementación de un shell remoto 24 " . -. . . . .-. ~)_.._ ...~ l _ l " " .. ... . Protocolos de comunicación. ConceDtos básicos DESCRIPCIóN Y VALIDACIóN DE PROTOCOLOS Cuando surgió la necesidad de conectar a las computadoras en red, los diferentes fabricantes de equipos comenzaron proponiendoqsus propias arquitecturas, pero pronto se comprendió el alcance limitado de estas soluciones, pues sólo garantizaban la interconexión entre equipos de la misma marca.Latareadenormalizar la comunicación incluye a los protocolos y comprende una metodología de diseño, descripción y verificación. Claramente, para diseñar y describir un protocolo se debe utilizar un lenguaje que permita expresar los criterios de construcción y por otro lado, sirva para verificar la consistencia y validez del modelo desarrollado. Igualmente es importante esta etapa de especificación porquepuede facilitar la realización de los programas que ejecuten los protocolos. Se pueden agrupar los métodos formales para la descripción de protocolos en tres categorías que son las siguientes: 1. Modelos de transición. Tales como los modelos de las máquinas de estados finitos (simple y extendida) y las Redes de Petri. 2. Lenguajes orientados al modelado. Incluyen lenguajes formales y lenguajes de programación. En esta categoría se pueden incluir los modelos basados en expresiones regulares, en lógica temporal, y las álgebras de procesos. 3. Modelos híbridos.Que son una combinación de los dos tipos anteriores. A partir de la necesidad de definir un formato común para la especificación de protocolos en los documentos de normalización, se han completado tres lenguajes o técnicas de descripción formal (FDT: Técnicas de Descripción Formal), pue se aceptan como referencias universales: 1. SDL 2. LOTOS 3. ESTELLE El Lenguaje de Especificación y Descripción (SDL) fue desarrollado por los grupos de estudio SGX y SGXl del CCITT. Está pensado para la especificación y el diseño de sistemas de telecomunicación, como los conmutadores telefónicos. El estudio se inició en 1968. La primera versión se presentó como la recomendación Z101-Z104 de CCITT y las versiones revisadas se publicaron en 1982 y 1985. La versión final se aprobó en 1987. En SDL una especificación puede presentarse en dos formas equivalentes: de manera gráfica o en forma de texto. Podemos decir que SDL es en realidad un modelo híbrido. El Lenguaje para Especificaciones de Orden Temporal (LOTOS) es una contribución de IS0 (TC97/SC2l/WGl). También se le llama un álgebra de procesos. Se basa en el Cálculo de Sistemas Comunicantes desarrollado por Robin Milner en la Universidad de Edinburgh. El objetivo de las álgebras de procesos es la especificación formal del comportamiento d6 los procesos, en un nivel de abstracción muy alto. Las álgebras definen un conjunto de reglas de transformación y relaciones de equivalencia que ofrecen un criterio formal deanálisis de Universidad Autónoma Metropolitana. Unidad lztapalapa 25 . Capitulo 1 comportamiento entre procesos. La primera versión de LOTOS, lS8807, se dio a conocer en febrero de 1989. ESTELLE (Lenguaje de Máquina Finita Extendido) es una técnica de descripción formal propuesta por el mismosubgrupode IS0 (TC97/SCZl/WGl). Un total de 3 subgrupos del WGI han estado activos desde 1981 estudiando el tema. El lenguaje ESTELLE se basa en el concepto de máquina de estados finitos extendidos. Su primera versión, IS9074 se presentó en julio de 1989. Tanto LOTOS como ESTELLE pertenecenal segundo tipo de modelos, definen un lenguaje formal pero, al mismo tiempo, disponen de compiladores para generar el código ejecutable de los protocolos que describen. El compilador de ESTELLE puedegenerar una representaciónintermedia como máquina de estados finitos extendidos o como red dePetri. LOTOS es la única técnica de descripción formal de las tres quetambiénaborda -el problema de diseño, al menos en forma parcial. El problema de la verificación completa de los protocolos a nivel de diseño ha ocupado a los científicos de la computación en los últimos años y representa una frontera del conocimiento. En su estado actual ninguna FDT puede garantizar la verificabilidad de un protocolo.Tanto LOTOS como SDL, por ejemplo, pueden especificar sistemas infinitos que pueden conducir a problemas formalmente indecibles. PROTOCOLOS DE INTERNET En 1968 la Agencia de Proyectos de Investigación Avanzada del Departamento de Defensa de los Estados Unidos (ARPA), contrató a la empresa de consultoría Bolt Bernak & Newman paraque desarrollara unaredde computadoras (ARPANET), que uniera a los centros de investigación donde tenía proyectos financieros. En un principio se instalaron nodos enla UCLA,laUniversidad de California enSan Bernardino, el Instituto de Investigaciones de Stanford y la Universidad de Utah. Para 1971 la agencia asumió la drrección del proyecto. De los primeros trabajos que se completaron se instaló un protocolo, el programa de control de redque evolucionaría hasta convertirse, dosaños más tarde en el Protocolo de Control de Transmisión y el Protocolo Internet (TCP/IP). Por estas fechas se empezaron a implantar en En 1983 se estableció como lascomputadoras de la red los protocolos delaserieTCP/IP. requisito de conexión en ARPANET eluso de esta familia de protocolos. Quizá unade las medidas más importantes en torno a TCP/IP fue la decisión de implantarlos basados en el sistemaoperativoUNIX.De igual importancia fue la decisión de liberar el código y designar a la Universidad de California en Berkeley como su distribuidor. Debido a que los protocolos de la serie TCP/IP tienen un carácter público, estos se extendieronrápidamente entre las universidades, centros de investigación y empresas entre privadas hasta llegar a convertirse en el estándarparacomunicacióndedatos 26 Implementación de un shell remoto Protocolos de comunicación. ConceDtos básicos computadoras operando bajo UNIX. En la actualidad las operaciones de la red son coordinadaspor la organización Internet que gestiona millones denodosdeacceso y comercializa sus servicios en todo el mundo. Junto al modelo OS1 que se espera conduzca en el futuro, los desarrollos internacionales en materia de protocolos, encontramos al modelo TCPIIP probado en la práctica y que ha sido el modelo de facto de las comunicaciones. Ambos persiguen objetivos semejantes y se basan en el concepto del protocolo. No obstante, existen diferencias fisiológicas y prácticas importantes entre ellos. El Departamento de la Defensa de los Estados Unidos (DOD) normalizó un conjunto de protocolos de comunicación y optó por desarrollar sus propios protocolos y arquitectura en lugar de adoptar los estándares internacionales por tres razones: 1. Los protocolos del modelo TCP/IP se especificaron y tuvieron una difusión anterior a la normalización de OSI: Debido a las necesidades inmediatasdel proyecto ARPANET, era inútil esperar la aparición de normas reconocidasinternacionalmente. 2. Losrequerimientos específicos decomunicacionesen el modeloTCPIIP, tienen un mayor impacto en el diseño de protocolos y en la arquitectura. Esta característica ofrece facilidades para la implantación que no se encuentra en otros modelos. 3. Existen diferencias filosóficas con respecto ala naturaleza apropiada de una arquitectura de comunicación ysus protocolos. DIFERENCIAS ENTRE EL MODELO OS1 Y TCP/IP Hay 4 diferencias fundamentales: 1. El concepto de jerarquía contra el de nivel. 2. La importancia que cada modelo concede ala interconexión de redes. 3. La utilidad de servicios no orientados a conexión. 4. El enfoque para funciones de administración. El modelo TCP/IP reconoce que el trabajo de la comunicación es muy complejo y diverso paraque se realice poruna sola unidad. Enconsecuencia éste se divide enmódulos o entidades cooperantes que soportan en conjunto un servicio distribuido. Una buena práctica de diseño de sistemas dicta que esas entidades serqn arregladas jerárquicamente (es decir, ninguna entidad usasus propios servicios directamente). El modelo OS1 reconoce además,que los protocolos dela misma jerarquía tienen características en común que se pueden agrupar en un solo nivel o capa. La objeción algunas veces incrementada por los diseñadores del modelo TCP/IP es que el modelo OS1 es prescriptible más que descriptivo. Esto es dicta que los protocolos dentro de un nivel dado ejecuten ciertas funciones, lo cual no es siempre deseable. Es posible definir más Universidad Autónoma Metropolitana. Unidad lztapalapa 27 Capítulo 1 de un protocolo de la misma jerarquía y la funcionalidad de ellos puede no ser igual o siquiera semejante. Algo que es común acerca de un grupo de protocolos es que pueden compartir el mismo conjunto de protocolos de jerarquía inferior. En lo queconciernea mencionarse que: las relaciones entre niveles,quese presentanen OSI, pueden 1. La entidad de nivel (N) puede intercambiar datos usando los servicios de la entidad del nivel (N-I). Otraformade decir estoesque la entidad del nivel (N-I), debeestar implicada en cada transferencia de datos deentidad de nivel (N). 2. La entidad del nivel (N-I) da servicio intercambiando datos que, contienen información de control y de datos de entidad (N). Por su lado en el modelo TCPAP se permiten las siguientes operaciones: los servicios de otra jerárquicamente más baja, aún sin ser adyacentes. 2. Puede utilizarse caracteres de escape para colocar caracteres de control dentro de una cadenade datos. Esta situación no sedescribe completamente en OS1 dentro del concepto de unidad de datos deprotocolo. 3. Pueden separase las trayectorias de control y de datos. Con estos se ofrecen diferentes servicios para cada tipo de conexión. 4. Jerarquías superiores. Por ejemplo el cierre de una conexión en una entidad baja puede implicar la clausura de una conexión isomorfa en una jerarquía superior sin requerir que está ultima pase la información de control. 5. Se permite la cooperación de múltiples de entidades de la misma jerarquía. Por ejemplo, un protocolo de aplicación puede emplear los servicios de otra entidad en el inicio de una secuencia de transferencia de datos, pero no requerirla después de iniciar la transferencia y por otro lado, hacer uso de otra nueva. 1. Una entidad puede usar directamente Una diferencia histórica entre el modelo TCP/IP y el OS1 es la importancia que el primero concede a la interconexión. La interconexión ocurre cuando dos sistemas de comunicación no están unidos a la misma red. Así los datos transferidos deben atravesar al menos dos redes que, además pueden ser distintas. Los requisitos de interconexión entre redes se manejan por un protocolo. Los documentos actuales de OS1 hacen una breve referencia a la posibilidad de redes de tándem y consideran un protocolo entre redes como un subnivel de la red. Esta no es una solución clara, pero es la única posible dentro de la arquitectura de los 7 niveles. Un servicio sin conexión como sunombre lo indica, es aquelen el que los datos se transfieren deuna entidad a otrasin quele procedael establecimiento de un camino dedicado.En el modeloTCP/IP tienen igual importancia losservicios sin conexión y los servicios orientados a conexión, mientras 'que el modelo OS1 esta expresando solamente en términos deestos últimos. Eluso principal del serviciosin conexiónen TCP/IPes en la interconexión entre redes, ya que no es seguro suponer que todas las redes intermedias son confiables, como para construir una ruta dedicadacomo pordondepueda transferirse una secuencia ds datos. Una diferencia final entre el modelo TCP!IP y OS1 es la forma en la cual son tratadas las 28 Implementación un de shell remoto Protocolos de comunicación. Conceptos básicos funciones de administración. Ejemplo de tales funciones son la designaciones, el control de acceso y la contabilidad de los recursos de la red. En el modelo OS1 estas se clasifican por nivel y se localizan como tareas de administración en cada uno. El modelo TCP/IP no excluye este enfoque,pero va más lejos. Desde el puntode vista de TCP/IP, muchasdeestas funciones pueden ofrecerse a través de un protocolo de tipo "sesión". Este enfoque refleja el hecho de que esos protocolos usan servicios de transporte. ORGANIZACIóN DE TCPllP , El modelo TCP/IP puede describirse por la interacción de 3 agentes: procesos, anfitriones y redes. Los procesos son las entidades fundamentales de la comunicación y se ejecutan en los anfitriones (estaciones) que pueden soportar varios procesos simultáneos. La comunicación entre procesos se lleva a través de redes a las que se conectan los anfitriones. Los tres conceptos constituyen un principio fundamental del modelo:la transferencia de información a un proceso se realiza primero, llevándola al anfitrión donde reside el proceso fuente, el anfitrión leentregaa la red que la hace llegar hasta al anfitrión final donde es ofrecida al proceso de destino. La red se ocupará del direccionar de datos entre los anfitriones, mientras estos acuerdencomo dirigir los datos a sus procesos. El modelo organiza a sus protocolos en 4 niveles. Aquí se enfatiza que el hecho importante es el ordenamiento jerárquico de los protocolos, la designaciónde niveles solo sirve para este contexto no tiene conducir la exposición y poder establecer comparaciones. Fuera de sentido hablar de niveles en TCPAP, no por lo menos como se entienden el OSI. Así pues los 4 niveles del modelo son: 1. 2. 3. 4. Nivel acceso a red. Nivel Internet. Nivel anfitrión-anfitrión. Nivel proceso/aplicación. Nivel acceso a red. Este nivel comprende aquellos protocolos que gestionan el uso de los servicios en red y residen en un anfitrión o su equivalente lógico. Una función de todos estos protocolos es el de direccionar los datos entre IT anfitriones que pertenecen a la misma red. Otros servicios que ofrecen son el de control de flujo y errores entre anfitriones, así como varías características de calidad de servicio como prioridad y seguridad. Una entidad a nivel red se invoca regularmente por una entidad de nivel Internet o de nivel anfitrión-anfitrión, pero también puede invocarse desde unaentidad a nivel proceso /aplicación. Nivel lnfernef. El nivel Internet soporta los procedimientosquepermiten el tránsito de datos a través de múltiples redes. Así, este debe proporcionar una función de direccionar. Los protocolos se implantan entre los anfitriones y los puentes. Un puente es un procesador que conecta a dos redes y garantiza el flujo de datos entre estos. Universidad AutónomaMetropolitana. Unidad lztapalapa 29 Capítulo 1 Nivel anfifrión-anfitrión. Este nivel contiene los protocolos con capacidad para enviar datos entre dos procesos en diferentes anfitriones. Pueden ofrecer una conexión lógica entre entidades de alto nivel. Otros posibles servicios incluyen control de errores, flujo y la capacidad de manejar señales decontrol no asociadas conuna conexión lógica de datos. Son necesarios 4 tipos de protocolos generales en este nivel, cada uno tiene diferentes requerimientos de servicio: Un protocolo de datos. Orientadoaconexión caracterizado por la necesidaddeuna entrega confiable de datos. Muchasaplicaciones de procesamiento de datos puedenusar este servicio. Unprotocolo para datagramas. Son protocolos de mínima funcionalidad que puede ser apropiados, para algúntráfico, particularmente aplicaciones que no se orientan a conexión. Un protocolo de lenguaje. Se caracteriza por la necesidad de manejar un flujo constante de datos con unavariación mínima de retardo. Un protocolo de datos en tiempo real. Tiene las características del protocolo orientado a datos y del protocolo de lenguaje. Nivel proceso/ap/icación. Comprende protocolos - para compartir recursos(i.e. computadora a computadora)y garantizar acceso remoto (¡.e terminal a computadora). - ~ La Figura 9 representa el modelo de la arquitectura TCPAP y varios de sus protocolos más importantes. La manera en que se apilan las capas del modelo puede variar dependiendo de las necesidades de los usuariosde la red y de las decisioneshechaspor los diseñadores. Nótese que están normas encajan en los 3 niveles superiores a la arquitectura. Los protocolos que descansansobreTCP (y UDP) sonejemplosde nivel de aplicación. Por su parte los protocolos de los 2 niveles inferiores garantizan el acceso a los medios físicospara la transmisión de la información y pueden implantarse con una amplia selección de normas y protocolos. Los sistemas pueden tener interface con una gran variedad de redes. De un modo general TCP/IP confiará en los estándares nacionales e internacionales a este nivel, tal como X.25 para paquetes conmutados en redes de gran cobertura geográfica, así como IEEE 802 para redes locales. Son muchos los que piensan que la serie TCPAP es un enfoque más viable por un cierto número de razones. Primero por que ha demostrado que funciona, segundo porque hay un gran númerodeproductosenelmercadobasadosen TCPAP, tercero porque es fácil el acceso a su documentación y finalmente porque está asociado con UNIX. Frente a los partidarios de TCPAP se encuentran los convencidos de OSI, que insisten en sus bondades. En todo caso no se discute la operatividad de este, por lo menos en los niveles inferiores, donde la misma serie TCP/IP puede confiar el acceso a red, en protocolos como X. 25 (redes publicas deconmutación de paquetes) o Q.931 (Red Digital de Servicios Integrados (RDSI)) estructurados con el enfoque de OSI. También es cierto que el modelo de 7 capas vino a marcar una direcci6n en la comprensijn del problema de las arquitecturas de 30 Implementación de shell un remoto Protocolos de comunicación. Conceptos básicos red. Remarcamos que en OS1 no se describen como deben hacerse las cosas en cada nivel, si noquecosasdebenhacerse. Esdecir, clasifica las tareas del sistema. OS1 no es una implantación, debeentenderse como un "lenguaje informal" de descripción deredes de telecomunicaciones. Hablamos de un lenguaje porque el modelo designa la terminología con que se aborda el diseño. Decimosquees informal para diferenciarlos de las técnicas de descripción formal como ESTELLE, LOTOS ó SDL. En contraste TCPAP es una implantación. PRESENTACIóN GENERAL Como su nombre lo indica, el concepto Internet, busca el interconectar redeshaciendo posible, a priori, la comunicación entre dos máquinas cualesquiera. Esto supone la existencia de máquinas bisagra, llamadas pasarelas (gateway), que aseguran,el enlace entre redes. Ver Figura 7. Pasarela I Pasarela 2 Figura 7. Concepto Internet de interconexión de redes. N direccionarniento. Las redes interconectadas no tienen ninguna razón para disponer del mismo mecanismo de direccionamiento de los diferentes nodos. Por tanto, es necesario dar una dirección lógica acada máquina huésped (cualquier computadora que se conecta a una red. Puede ser desdeuna micro hastaunasupercomputadora). Constituida poruna dirección de una red y por una dirección de una máquina en la red, se forma la dirección Internet (Internet esla colección deredes ypasarelasque utilizan la serie de protocolos TCP/IP y funcionan como una red virtual simple y cooperativa). La dirección Internet completa de una máquina ocupa 32 bits, la de red 8, 16 ó 24 bits sobre estos 32, según la importancia dedicha red (entérminos del número de máquinas que la componen). En general, las direcciones se dan bajo la forma nl,n2.n3.n4 (cada ni es el valor de un octeto). Aunqueen el cuadrode utilización de protocolos Internet yde su mecanismode direccionamiento en una red local no abierta al exterior (es decir, sin pasarela a otra red) es posible elegir una dirección cualquiera, no ocurre así si existe una pasarela. Entonces hay que dirigirse a un organismo central para que ébte suministre una dirección a una red (NIC: Cenfro de Control de información de Red). Dos identificaciones de la máquina tienen una interpretación particular, cualquiera que sea la importancia de la red: 1. La dirección nula permite hacer referencia a la red o a la máquina actual. 2. La dirección donde todos los bits son iguales a 1 permitedesignar elconjuntode máquinas. ÉSta última se utiliza para direccionar un mensaje a todasias máquinas de la red. (Difusión o broadcast). 1 Universidad Autónoma Metropolitana. Unidad lztapalapa 31 Las redes pueden ser de las clases A, B o C. Las redes de clase A son las de tamaño grande; el primer octeto tiene asignada la dirección de la red y las máquinas son identificadas con los siguientes tres octetos. La red ARPANET de dirección 10.0.0.0 es una red particular de tipo A. En las redes de clase 6, los dos primeros octetos de la dirección se ocupan designar la dirección de la red, mientrasque los dosúltimos contienenla dirección de la máquina. Finalmente las redes de clase C designan la dirección de la red con los tres primeros octetos, y la de la máquina con el último octeto. Ver Figura 8. c Las direcciones Internet aparecen como números enteros (largos en el sentido del lenguaje C). Donde la representación de estas cantidades es variable de una máquina a otra en lo que concierne al orden de escritura de los bits. Para simplificar, podemos imaginar que se escriben imaginar de izquierda aderecha b0bl...b31 (notación Liffle Endian). Igualmentesepueden variaciones en lo que concierne al orden delos octetos. La notación elegida a nivel de los protocolos Internet es la Big Endian (b31b l...bO). Por tanto, es particularmente importante en los intercambios el efectuar la conversión de la representación local a la de red antesdehacer elenvío, y laconversión inversa tras la recepción. - - (a) Clase A. O I I 7 8 31 _ . Dirección de la red I Identificación de la máquina (b) Clase B. O 1 15 16 31 I I Identificación de la máquina Dirección red la de tc) Clase C. o 23 24 31 1 2 I I I I Dirección de la red Identificación máquina la de 1 Figura 8. Las diferentes clases de redes (direcciones). Arquifecfura. En la Figura 9 siguiente se representa la arquitectura en niveles Internet y la relación que se puede establecer entre ella y los diferentes niveles del modelo OSI. - =n los párrafos siguientes se estudiaran en detalle estos diferentes niveles. En lo referente 32 Implementación un de shell remoto Protocolos de comunicación. Conceptos básicos al nivel base, hablando con propiedad, no forma parte de los protocolos de la familia Internet. Aquí, se encuentran los protocolos relativos a los nivelks físicos. I I Internet Niveles Aplicación Presehtación I Aplicaciones ~ I TCP I I UDP I I Niveles OS1 5 Sesión Transporte I Figura 9. Arquitectura Internet comparada con el modelo OSI. LOS INTER.FACES IP Aquí se asegura la gestión de los protocolos específicos a cada tipo de red física. Uno de los papeles que les incumbe es la fragmentación de los mensajes que se van a emitir. Se trata de dividir los mensajes para enviarlos mediante unatrama física (ver el inicio de este capítulo). A continuación se trazan los rasgos generales de los tres interfaces principales. N inferfacelP/Efhefnet. Se tienen queañadirdos protocolos específicos afinde encontrar la dirección física Ethernet (se analiza posteriormente) correspondienteauna dirección Internet o a la operación inversa. Evidentemente esta dirección física es necesaria para realizar las comunicaciones. El protocolo ARP (Protocolo de Resolución de Dirección) Y , cuya funciona bajo una idea simple:si una máquina X quiere comunicarseconuna realmentecon ella, se ha dirección física, o bien ya conoce (comoyasehacomunicado encontrado en la segunda situación, ha obtenido su dirección física y la conservado en una tabla), o bien sólo conoce su dirección Internet I,. Entonces el interface envía a la red una trama Ethernet de difusión (dirección del destinatario constituida de 48 bits iguales a 1) de un tipo convenido, que contiene la dirección Internet de la máquina Y y las direcciones Internet y Ethernet de la X. Y reconocerá su dirección Internet y enviará a X un mensaje de respuesta que contiene su dirección Ethernet (este mensaje también tiene un tipo específico). Por otra parte, el protocolo RARP (ARP en Reversa) permiteque una estación sin disco queno reconoce su propia dirección Internet, la pida mediante la difusión de un mensaje Ethernet de un tipo especificado. Sólo una máquina (servidor RARP) está autorizada para responder a un mensaje de este tipo. El interface lPM.25. Esta interface divide los paquetes de 576 octetos enviados por el protocolo IP en paquetes de 128 octetos que es el tamaño máximo de paquete enX.25. El interface SLlP (Protocolo Internet Local Rápido). Permite utilizar los protocolos de la familia Internet en líneas asíncronas dirigidas por el protocolo RS-232N.24. Universidad Autónoma Metropolitana. Unidad lztapalapa 33 Capítulo 1 EL PROTOCOLO IP Se trata de un protocolo del nivel de la red para intercambio de datagramas en modo no conectado: por tanto, no garantiza la llegada a buen puerto de los mensajes. Esta funcionalidad se introducirá en el nivel superior cop el protocolo TCP. A continuación se dan las principales funciones y características. Los datagramas /P. Undatagrama IP es launidadde transferencia a este nivel. El protocolo especifica el formato de un objeto de este tipo, constituido esencialmente, por un encabezamiento que permitesu identificación y por los propios datos. Estedatagrama, al bajar a los niveles inferiores, será encapsulado en unatrama física (eventualmente el módulo del interface tiene que dividir el datagrama): el datagrama completo constituirá la parte dada de una trama (el resto está constituido por diversas informaciones específicas sobre el protocolo físico utilizado). Entre las informaciones que se encuentran en elencabebamiento figuran las necesarias para el control de la fragmentación: en efecto, un mensaje que proviene del nivel superior al IP tiene que ser dividido en varios datagramas. Por tanto, el encabezamiento tiene que contener las informaciones que permiten la reconstrucción de un mensaje apartir de los fragmentos que lo constituyen. Además, los datagramas que "navegan" por la red contienen un campo destinado a evitar que lo hagan indefinidamente. 1 A fin de poder multiplexar los mensajes IP entre diferentes protocolos del nivel superior, a los datagramas correspondientes se les da un tipo de la misma manera que el tipo de una trama Ethernetpermiteencaminar, informaciones que contiene. hacia el módulo correspondiente (IP-ARP-RARP), las E/ direccionamiento de /os datagramas. En el momento que una máquina tiene que comunicarse con otra que no pertenece a la misma red (y, por tanto, inaccesible directamente mediante una trama que encapsula la trama IP), es necesario hacer transitar los mensajes por una o varias pasarelas. Toda máquina puede saber si la máquina destinataria pertenece a la mismaredcomparando la dirección Internet de la red de dicha máquinacon la suya. El algoritmo de direccionamiento de Internet se basa en las tablas de direccionamiento que se gestionandinámicamenteencada máquina pormediacióndemensajes difundidos por las pasarelas. 34 lmplementación de un shell remoto Protocolos de comunicación. Conceptos básicos LOS PROTOCOLOS DEL NIVEL DE TRANSPORTE Los dos protocolos (protocolo UDP y protocolo TCP) del nivel que se va a presentar tienden a permitir la comunicación entre actividades (procesos)sobre máquinas distantes. Una actividad tal constituye un punto de entrada en el sistema. Para saber dialogar con ella, es necesario poder designarla. En el concepto Internet, evidentemente es necesario permitir el diálogo entre actividades en sistemas diferentes. Comola designacióndeprocesosdeun sistemaa otro es diferente se hace indispensable definir un métodode identificación independiente de los sistemas. El principio consiste en separar la identidad del proceso que realiza una función de la propia función; la noción ‘de servicio es privilegiada con respecto a la de proceso. Una última ventaja consiste en permitir reiniciar un proceso servidor cuando el servidor iniciado previamente ha terminado accidentalmente. El concepto Internet correspondiente es el de puerto. Para cada uno de los dos protocolos de transporte existe un conjunto de puertos identificados mediante un número entero. A cada aplicación Internet estándar le correspondeun número de puerto específico. Por tanto, los módulos TCP y UDP realizarán el multiplexado por mediación de los números de los puertos. El protocolo UDP (Protocolode Datagrama de Usuario) Caracferísticas generales. Permite que una aplicación envíe mensajes a otra en modo datagramanoconectado.Proporciona el mismotipodeservicioque el protocolo IP y, por su destino. En tanto, no garantiza de manera alguna, la llegada del mensajeenviadoa particular, no hay algún mecanismo de entrega ni de control de flujo en caso de “embotellamiento” de la máquina receptora, integrado en el protocolo. Por tanto, los datagramas corren el riesgo de perderse o de llegar en un orden arbitrario. Un datagrama UDP, que será encapsulado en uno I r , en particular contendrá los números del puerto fuente y del de destino. Los puerfos reservados. Un cierto número de puertos están reservados para aplicaciones estándares Internet o para aplicaciones ulteriores. En principio están reservados los números inferiores a 256 (en UNlX son los números inferiores a 1024). El resto de los puertos utilizados para las diferentes aplicaciones serán reservados dinámicamente. El protocolo TCP (Protocolode Control de Transporte) Introducción. Se trata de un protocolo del nivel de transporte orientado a conexión, que ofrece un servicio seguro de transporte de grupos de octetos; los octetos que se emiten desde un lado de la conexión se liberan en el mismo orden del otro lado de ésta. Además, este grupo de octetos no tiene estructura alguna. La conexión se realiza en modo dúplex; por tanto, soporta una comunicación simultánea en los dos sentidos. El protocolo utiliza, como UDP, el mecanismo de puerto. Universidad Autónoma Metropolitana. Unidad lztapalapa 35 Caracferísficas generales del protocolo. El problema principal que tiene que resolver es el asegurar una transferencia fiable de información apoyándose en mecanismos que no lo son. Los diferentes mecanismossubyacentes son: 1 1. Reconocimiento (acuse de recibo). Esta técnica de base consiste en esperar, antes de emitir un nuevo paquete, la llegada de un acuse de recibo por parte del destinatario del anterior. Si éste no llega en un lapso de tiempo dado (principio de temporización o timeout), se retransmite el paquete. Se le otorga un número de orden a cada uno con el fin de detectar duplicaciones de paquetes o de entregas. 2. Las ventanas deslizantes. Esta técnica es utilizada por el protocolo TCP. Los servicios que se proporcionan. Corresponden a los diferentes valores posibles de un'campo particular de un segmento TCP (unidad de transferencia a nivel TCP): I Módulo UDP Mddulo TCP Selección del módulo por el tipo de datagrama IP I I Datagrama IP I Módulo IP Módulo RARP Módulo ARP Selección del módulo porel tipo de la trama A Trama física Figura I O . Esquema general de funcionamiento de UDP y TCP 1. Petición de apertura de la conexión que tiene forma activa (del lado del que inicia la conexión) y forma pasiva (dellado que es llamado). 2. La expedición con posibilidad de enviar mensajes urgentes y de forzar el envío de un mensaje (para que se emita sin que el módulo TCP lo reagrupe con otro). 3. La recepción conla posibilidad de acceder directamente a un mensajeurgente. 4. El cierre de la conexión. 36 Implementación de un shell remoto Protocolos de comunicación. Conceptos básicos f.os puertos reservados. Como en el caso del protocolo UDP, se reservan un número de puertos TCP para servicios estándares (por ejemplo ECHO {puerto 7}, FTP {puerto 2}, o TELNET {puerto 23)). ESQUEMA GENERAL DE FUNCIONAMIENTO La Figura 10 siguiente recopila los mecanismos de multiplexado y selección que intervienen entre los diferentes niveles de protocolos de Internet. EL MODELO CLIENTE-SERVIDOR Es el modelo de interacción más corriente entre aplicaciones en una red. Aunque, hablando con propiedad, no forma parte de los conceptos Internet como lo forman los protocolos IP, TCP o UDP, no porello no le corresponde un lugar aquí: todos los servicios estándares de alto nivel propuestos en Internet funcionan según este modelo. Un servidor es un programa que ofrece un servicio en la red, es decir, que realiza una función específica. En ciertas circunstancias, este término designará a una máquina. Esteserá el caso si dichamáquina está dedicadaaun servicio particular (por ejemplo, se hablade servidor de archivos). Un cliente es un programa que dirige a ut1 servidor una petición específica que corresponde a una demanda de servicio. De este modo, en el caso de aplicaciones que se comunican utilizando protocolos Internet, se enviará una petición de un cliente a un servidor por mediación de un paquete que contiene, en particular, un número de puerto que corresponde al servicio y el número del puerto donde espera la respuesta. Se dedicará más adelante, un capítulo entero al modelo cliente-servidor. LAS APLICACIONES Está disponible un cierto número de aplicaciones que se apoyan bien en el protocolo UDP, bien en el TCP. Se les puede dividir en tres categorías: 1. Servicios estándares disponibles en toda implantación de Internet. 2. Servicios generales disponibles, potencialmente, en toda implantación. 3. Servicios específicos de UNIX. 1 Universidad Autónoma Metropolitana. Unidad lztapalapa 37 I Los servicios estándares Transferenciadearchivos. El protocolo FTP (Protocolo qle Transferencia de Archivos) es el protocolo de transferencia interna de Internet. Permite establecer una sesión de transferencia de archivos entre dos máquinas bajo sistemas diferentes. La seguridad está asegurada por mediación de identificaciones y palabras de paso en los dos sistemas. Permite ejecutar diferentes órdenes en cada uno de los sistemas (contenidos de directorios, copias de archivos en los dos sentidos con conversiones eventuales). Este servicio se apoya en el protocolo TCP. También está disponible un protocolo simplificado adaptado a la transferencia de pequeños archivos apoyándose en el protocolo UDP.Se trata de TFTP (Protocolo de Transferencia de Archivos Simple). Correo electrónico. El protocolo SMTP (Protocolo de Transferencia de Correo Simple) permite el intercambio de correo entre máquinas distantes. Este protocolo está constituido sobre el protocolo TCP para establecer un enlace entre los procesos de las dos máquinas entre las que se tiene que intercambiar el correo. Especifica el formato de los mensajes intercambiados. Terminal virtual. La función “terminal virtual” se reqliza a través del protocolo TELNET (Protocolo de Terminalde Red) que permite hacer de un terminal físicamente conectado a un sistema dado, un terminal “lógico” de otro y de esta manera trabajar de forma remota en otro sistema. La implantación de este protocolo sobre un sistema supone que dispone del concepto de pseudoterminal (punto de entrada en un sistema simulando un terminal). Los servicios generales I Los protocolos XDR/RPC/NFS. Estos tres protocolos, corresponden a los niveles de aplicación, presentación y sesión respectivamente. El objetivo del protocolo NFS (Sistema de Archivos en Red) consiste en permitir la repartición de archivos en la red independientemente de los sistemas de gestión de archivos. Este protocolo se basa en una representación y un mecanismo estándar de los objetos (protocolo XDR {Representación de Datos Externa}) de llamada a procedimientos remotos (protocolo RPC {Llamada Procedimientos a Remotos}). Implementación de un shell remoto 38 ....lll__ _.”””” - ~ . ...~... Protocolos de comunicación. Conceptos básicos Los sisfemas mulfivenfana. Los protocolos X-Window de MIT y News de Sun se basan en protocolos Internet y permiten la gestión de ventanas en pantallas bitmap en una red. Otros servicios. Servicios tales como t a l l . : o finger permiten el diálogo entre usuarios o la obtención de informaciones sobre un usuario dado de una máquina huésped. Los servicios UNlX Junto a estasdoscategorías de servicios, que son accesiblessobre todo sistema que soporte los protocolos Internet, se han desarrollado otro cierto número para el entorno UNIX. . Estos servicios, se presentan a los usuarios bajo la forma de órdenes remotas como r l o g i r l (permite hacer una conexión a distancia sobre una máquina dada), rsh (permite la ejecución de unaorden shell en la máquina designada), rwho (permitever la lista de usuarios conectados a la(s) máquina(s) de la red), etc. ' REDES DE ORDENADORES Prentice Hall I-lispanoamericana S.A. [ I 9911 Andrew S.Tanenbaum Págs. 2, 5, 11-12, 31-34. COMUNICACIONES EN UNlX McGraw-Hill [1992] Jean-Marie Rifflet Págs. 192-201. LAS REDES DE COMPUTADORAS Monografía [I9941 Ricardo Marcelín Jiménez Orestes Téllez Analco Rubén Vázquez Medina Págs. 20-25, 28-32. CONTROL DE ENLACE DE DATOS Mollografía [I 994] Ricardo Ma1cclíl1 Jirr16ncz Págs. 7, 9-17 , 19-20, 25-33. DISTRIEUTED OPERATING SYSTEMS THE LOGICAL DESIGN Addison-Wesley Publishing Company [I 9911 Andrej Goscinski Prigs. 5-6, 44-46. DESIGN AND VALIDATION O í COMPUTER PROTOCOL Prentice Hall [ I 9911 Gerard J. Holzrnann P3gs. 32-32. Universidad Autónoma Metropolitana. Unidad lztapalapa 39 CAPÍTULO 2 FUNDAMENTOS DE REDES DE COMPUTADORAS I FUNDAMENTOS COMPUTADORAS DE REDES DE [TOMADO DE Tanenbaum,Marcelín, Peterson y Coulouris]* I Una red de computadoras es una colección interconectada de computadoras autónomas. Enun principio las redesdecomputadoras surgieron comosolucionesanecesidades . estratégicas del conjunto limitado de organizacionesque poseían varias computadoras que debían interconectarse, con el objetivo fundamental de compartir recursos, es decir, permitir al usuario de cualquier terminal dentrode la organización, acceder y utilizar todas las posibilidades del conjunto de aparatosque constituyeran la red. Como primera alternativa se utilizaron los medios de comunicación queya existían. En 1956 tuvieron lugar los primerosexperimentoscontransmisionesde larga distancia para datos, los medios mediante líneas telefónicas. Sin embargo, pronto sevioque estosnoeran indicados para cursar el tipo de tráfico generado (datos, en este caso) y que presentaban diferentes problemasde control. Seis añosmástardese realizó la primera transmisión de datos vía satélite (Telstat). Un satélite de comunicaciones es una estación de conmutación de radio en órbita a 35 900 km. sobre la línea ecuatorial; viaja a la misma velocidad de rotación de la Tierra (se dice que es geosincrónico). Por otro lado, un conmutador es un dispositivo o estado de programa mecánicoo electrónico que puede estar en uno de dosposibles estados Los primeros procedimientos de comunicación eran soluciones del problema de coordinación "maestro-esclavo" entre un equipo queera responsablede las tareas de transferencia, recuperación, sincronización y control dela conexión y varias terminales pasivas. En1960,con la conexión directa entre computadorasaparecen las redes de computadoras propiamente dichas, con velocidades detransmisión superiores, mayor tráfico y donde no era operante el procedimiento de coordinación usado hasta entonces. Las primeras redes de computadoras de gran escala fueronlos sistemas de reservación de las aerolíneas, a principios de los años 60. El sistemaSABRE deAmerican Airlines, por ejemplo, fue construido en1961.Posteriormente surgieron proyectoscomo ARPANET y TYMNET a finales de la década de los 60's y CICLADES a principios de los 70's que indican el gran interés de la comunidad de las telecomunicaciones (comunicación de información que incluye datos, voz y video), por encontrar soluciones que permitieran interconectar máquinas situadas a distancia, en condiciones técnica y económicamente favorables. Baste un ejemplo como prueba de la penetración de las redes de computadoras. Desde sus inicios en 1969, hasta1985, el proyecto ARPANET, financiado por el Departamentode la Defensade los Estados Unidos había conectadocasi 1200 pomputadoras, su sucesor Internet, crecería de 25 O00 computadoras en 1987 aun estimado de250 O00 a fines de 1989. La experiencia alcanzada en el campo de la Teleinformática, durante sus primeros años, Capítulo 2 tuvo influencia importante sobre un tipo particular de redes de computadoras conocidas como Redes de Área Local (LAN). E n éstas, se trató de optimar las ventajas que representa tener una distancia rolativarrlonto poquciía critro equipos do córnputo. Entre los trabajos piorlcros ct1 ésta área se encuentra el proyecto ALOHA de la Universidad de Hawai que se llevó a cabo a principios de la década de los 70's. El auge actual delasredesde computadoras es unaconsecuenciade la cantidad de pequeñasorganizaciones que,a finales de la décadapasada, disponían deimportantes inventarios de microcomputadoras y que representaban un mercado de grandes potenciales comunicaciones entre para poner su a alcance todos los desarrollos en mbteria de computadoras, fruto de los años anteriores. La aplicación de la tecnologia digital para el manejo de señales analógicas, como la voz y el video, marco un hito en las telecomunicaciones y definió la tendencia de fines de siglo en la materia. Con la disponibilidad de nuevos métodos y el crecimiento de los volúmenes de información que se almacenan y transmiten, surge la conveniencia de crear redes flexibles, de gran capacidadde transporte, que evolucionen a partir de la ihfraestructura existente, aprovechando la capacidad instalada y de que puedan adaptarse dinámicamente incorporando servicios básicos y de valor agregadopara la transmisión de información bajo un formato Único independiente de la fuente. Los servicios de valor agregado son aquellos que proporcionan servicios más allá de latransmisión normal, como la detección y corrección automáticade errores, y el almacenamiento y despacho de mensajes. Una razón que ha favorecido el desarrollo de las redes digitales es que la tecnología de base ha demostradouna disminución de costos considerable en los últimos años. Además existe un uso creciente de las computadoras y los servicios de tipo digital. S e han estudiado diversas opciones de integración, introduciendo voz en las redes de datos y viceversa pero, debido a los propósitos distintos conque se creó cada tipo, se piensaen la necesidad de aprovechar al máximo sus posibilidades actuales y emigrar gradualmente hacia nuevas redes. Ya en 1980 varioscomités nacionales de telecomunicaciones propusieron unconjunto de normas para el desarrollo de un nuevo tipo de infraestructura, que se espera sea la columna vertebral delastelecomunicaciones del futuro. No consiste en una aplicación tecnológica particular, se trata másbien, deun accesoa los serviciosdigitales decomunicación, con independenciadelasredes a las que se suscriban. E s decir, garantiza una compatibilidad internacional a niveldel interfaz deconexión.En suprimera etapa, la RDI (Red Digital Integrada) ofrecerá servicios de transporte de información de origen analógico o digital (voz y datos sobretodo);en su segundaetapa, la RDSI(Red Digital deServicios Integrados) ofrecerá además, servicios de valor agregado relacionados con el contenido de la información transportada y su aplicación (correoelectrónico [transmisión de memorandos y mensajes mediante una red] y conferencia múltiple, por ejemplo), para finalmente ofrecer en su última etapa la RDSI-BA (RDSI de Banda Ancha) servicios devalor agregado con requerimientos técnicos superiores (videoconferencia). Cuando un bien deconsumohacesu aparición, pasa algún tiempo antes de quese demuestre su utilidad y por tanto, tenga éxito. Si lo logra, su precio se determinará mediante la oferta y la demanda; salvo algunas fluctuaciones, éste llegará a una situación estable.Sin embargo, la aparición deunanueva tecnologia queabarate su costo de producción y/o 44 remoto shell un Implementación de Fundamentos de redes de computadoras operación producirá undescensoensu precio y portanto será asequible paraun mayor número de compradores, pudiéndose convertir incluso, en un bien de consumo masivo. Estas observaciones pueden aplicarse muy bien, tanto a las computadoras, como a los equipos de telecomunicaciones. Si no se considera a las modernas supercomputadoras (la computadoras más veloces disponibles) poseídas por algunos grupos de investigación repartidos en los países industrializados y se piensamás bien en las computadoras personalesque tienen una utilización masiva, se encontrará que, desde su aparición, el precio de éstas se redujo en tres órdenesde magnitud, de $ I O 6 a $ I O 3 (dólares), gracias a los constantes desarrollos en la tecnología del estado sólido y aquí se halla la causadesu amplia difusión. Consu abaratamiento se multiplicóelnúmero de usuarios que tuvieron a su disposición nuevas capacidades para manejo de la información. Todavía en los 70’s parecía cuento de ciencia ficción la idea de tener una computadora en casa. Aunque los precios de los equipos de telecomunichciones han descendido también, por razonessemejantes, los cambios nohan sido tan pronunciados comoen el caso de las computadoras, por tratarse de un mercado más maduro y en donde tradicionalmente se hacen compras esperando que la inversión se amortice en plazos más largos. Hasta hace poco, el costo de las redes estaba dominado por la etapa de transmisión, pero con el desarrollo gradual de la fibra óptica (filamento de vidrio muy delgado, diseñado para la transmisión de luz, capaz de transmitir miles de millones de bits por segundo), los costos de transmisión han descendido y se esperaque la tendencia sigaen los próximos añoshasta llegar a ser el medio de transmisión más utilizado y que la transmisión no represente el porcentaje más importante del precio de la comunicación. Esto no significa que los otros medios de transmisión, como el más bien en una satélite y las microondas, vayan a caer en desuso. S e piensa complementación de las capacidades que cada uno ofrece. S e concluye por tanto, que las redes de computadoras actuales crecieron hasta convertirse en un mercado que se desarrolló con el uso de las microcornputadoras y de una tecnología de comunicaciones que aprovechó la experiencia delas investigaciones precursoras. E n su primera etapa comercial se pudieron conectar los equipos pertenecientes a una misma organización, con la instalación de redes locales, y posteriormente, se utilizó la infraestructura de cobertura internacional para ofrecer conexión mundial. E n el camino recorrido puede observarse un inicio más bien caótico, en el que no existían normasde compatibilidad; hasta llegar a una convergencia entre la computación y las comunicaciones en donde se propone un sólo tipo de redes de computadoras y donde existe un consensoen el uso de normas que garanticen la independencia entreel usuario y el prestador de servicios. Universidad Autónoma Metropolitana. Unidad lztapalapa 45 CaDítulo 2 OBJETIVOS DE LAS REDES Compartir recursos. Son muchas las organizaciones que ya cuentan con un número considerable de computadoras en operación y con frecuencia alejadas unasde otras. Por ejemplo una compañía con varias fábricas puede tener una computadora en cada una de ellas para mantener un seguimiento de inventarios, observar la productividad y llevarla nómina local. Inicialmente cada una de éstas computadoras puede haber estado trabajando en forma aislada de las demás pero, en algún momento, la administración puede decidir interconectarlas para tener así la capacidadde extraer y correlacionarinformaciónreferente a toda la compañía. I Puesto en unaforma más general, el tema aquí consiste en compartir recursos, y el objetivo es hacer que todos los programas, datos y equipo estén disponibles para cualquier usuario de la red que as¡ lo solicite, sin importar la localización física del recurso y del usuario. E n otras palabras, el hecho de que el usuario se encuentre a 1000 km. de distancia de los datos, no debe evitar que éste los pueda utilizar como si fueran originados localmente. Otro aspecto de compartir recursos es el relacionado con el compartimiento de la carga.‘Este objetivo se puede resumir diciendo que es un intento para terminar con la “tiranía de la geografía”. Fiabilidad. Un segundo objetivo consiste en proporcionar una alta fiabilidad, al contar con fuentes alternativas de suministro. Por ejemplo, todos los archivos podrían duplicarse en dos o tres máquinas,de tal maneraque si una de ellas no se encuentra disponible (como consecuencia de un fallo de hardware), podría utilizarse alguna de las otras copias. Además la presencia de múltiples C P U significa que si una de ellas deja de funcionar, las otras pueden ser capaces de encargarse de su trabajo, aunque se tenga un rendimiento global menor. Para aplicaciones militares, bancarias, de control de tráfico aéreo y muchas más, es muy importante la capacidadde los sistemas para continuarfuncionando a pesarde existir problemas de hardware. Ahorro económico. Otroobjetivo es el ahorro económico. Las computadoras pequeñas tienen una mejor relación costohendimiento, comparadacon la ofrecida porlasmáquinas grandes.Estasson, a grandes rasgos, diezvecesmás rápidas que el más rápido de los microprocesadores, pero su costo es miles de veces mayor. Este desequilibrio ha ocasionado quemuchosdiseñadores construyan sistemas constituidospor poderosas computadoras personales, una por usuario, con los datos guardados et3 una o más máquinas que funcionan como servidor de archivo compartido. Un puntomuy relacionado es la capacidadpara aumentarelrendimiento del sistema en forma gradual a medida que crece la carga, simplemente añadiendo más procesadores. Con máquinas grandes, cuando el sistema está lleno, deberá reemplazarse con uno más grande, operaciónque por lo normal genera ungrangasto y una perturbacióninclusive mayor al trabajo de los usuarios. Medio de comunicación. Otro objetivo del establecimiento de una red de computadoras no tiene que ver con la tecnología. Una red de computadoras puede proporcionar un poderoso medio decomunicación entre personas que se encuentranmuy alejadas entre sí. Con el 46 Implementación remoto shell de un Fundamentos de redes de computadoras empleo de una red es relativamentefácil para dos o máspersonas,que viven en lugares separados, escribir un informe juntos. Cuando un autor hace un cambio en un documento que se mantiene en línea, los otros pueden ver el cambio de inmediato, en lugar de esperar varios días para recibirlo por carta. Esta rapidez hace que la cooperación entre grupos de individuos que se encuentran alejados, y que anteriormente había sido imposible de establecer, pueda realizarse ahora. A la larga el usode las redes, comoun medio para enriquecer la comunicación entre sereshumanos,puede ser más importante que los mismos objetivos técnicos, como por ejemplo la mejora de la fiabilidad. Finalmente, a la conexión de dos o más redes se le denomina interconexión de redes. APLICACIONES DE LAS REDES El reemplazo de una máquina grande por estaciones de trabajo sobre una red de área local no ofrece la posibilidad de introducir muchas aplicaciones nuevas, aunque podrían mejorarse la fiabilidad y el rendimiento. Sin embargo, la disponibilidad de una red de gran cobertura sí genera nuevas aplicaciones viables, y algunas de ellas pueden ocasionar importantes efectos en la totalidad de la sociedad. Para dar una idea sobre algunos de los usos importantes de redes de computadoras, se verán ahora tres ejemplos:el acceso a programas remotos, el acceso a bases de datos remotasy facilidades de comunicación. Acceso a programas remotos. Una compañía que ha producido un modelo que simula la economía mundial puede permitir que sus clientes se conecten usando la red y corranel programa para ver cómopueden afectar a susnegocioslas diferentes proyecciones de inflación, de tasas de interés y de fluctuaciones de tipos de cambio. Con frecuencia se prefiere este planteamiento que vender los derechos del programa, en especial si el modelo se está ajustando constantemente o necesita de una máquina muy grande para correrlo. Utilización de bases de datos remotas.Otra área principal para la utilización de redes es el acceso a bases de datos remotas. E n el futuro próximo no será difícil ver, por ejemplo, a cualquier personahacerdesde su casa reservas de avión, autobús, barco y hoteles, restaurantes, teatros, etc., para cualquierParte del mundo y obtener confirmación de forma instantánea. E s esta categoría caen las operaciones bancarias que se llevan acabo desde el domicilioparticular, así como las noticiasdelperiódicorecibidas de formaautomática. Los periódicos en la actualidad ofrecen un poco de todo, pero con los de tipo electrónico se puede fácilmente adaptar el contenido de acuerdo con el gusto particular de cada lector. Por ejemplo, que elcontenidoincluyatoda la informaciónreferente a las computadoras, a los principales temas sobre política y epidemias, pero que excluya los temas relacionados con el fútbol. El paso posterior a la automatización de periódicos (además de las revistas de divulgación y científicas) es la automatización de las bibliotecas. Dependiendo del costo, tamaño y peso de la terminal, la palabra impresa puede llegar a ser obsoleta. Los escépticos deberían tomar nota I Universidad Autónoma Metropolitana. Unidad lztapalapa 47 del efecto que la letra impresa tuvo sobre el manuscritoImedieval. Todasestas aplicaciones operansobreredesporrazones económicas: el llamar auna computadora remota mediante una red resulta más económico que hacerlo directamente. La posibilidad de tener un precio más bajo se debe a que el enlace de una llamada telefónica normal utiliza un circuito caro y en exclusiva durante todo el tiempo que dura la llamada, en tanto que elaccesoa través deuna red, haceque sólo se ocupen los enlacesde larga distancia cuando se están transmitiendo los datos. Utilización de las redes de computadoras como medio de comunicacidn. Una tercera forma que muestra el amplio potencial del, uso de redes, es su empleo como medio de comunicación. Los científicos informáticos yatoman como hechogarantizadopoder enviar correo electrónico, desde sus terminales, a sus colegas situados en cualquier parte del mundo. En el futuro, será posible para todos enviar y recibir correo electrónico, y no sólo para aquellas personas que se encuentran en el mundo de las computadoras. Además, este tipo de correo también será capaz de transmitir voz digitalizada, así como fotografías e imágenes móviles de televisión y video. Uno puede imaginarse muy fácilmente a los niños de diferentes países, tratando de aprender el lenguaje de los otros, dibujando la imagen de un niño en una pantalla compadida y poniéndole una etiqueta en otro idioma. En la actualidad ya existen tablones de anuncios electrónicos, pero éstos tienen cierta tendencia a ser utilizados por expertos en computadoras,ser orientados hacia temas técnicos y con frecuencia están limitados desde el punto de vista gedgráfico. En el futuro los sistemas serán tanto nacionalescomo internacionales y millones depersonas los utilizarán sin necesidad de tener un conocimiento técnico, cubriendo además una gama de temas mucho más amplia. El uso de un tablón de anuncios será entonces tan común como leer una revista. Algunasvecesse dice que seestá llevando acabouna carrera entre el desarrollo del transporte y el de la comunicación,y que el gane de los dos hará al otro innecesario. El uso de las redes de computadoras como un sistema de comunicación sofisficado puede reducir la cantidadde viajes realizados, ahorrandode esta manera energía. Las oficinas y escuelas comoson ahora, pueden llegar adesaparecer.Lasórdenesmediantecatálogopor correo electrónico pueden llegar a reemplazarlas tiendas comunes y corrientes. Las ciudades podrían dispersarse con relativa facilidad, dado que la alta calidad de los recursos de comunicación tenderán a reducir la necesidad de una proximidad física. ESTRUCTURA GENERAL DE UNA RED Desde el punto de vista del usuario y de una forma muy general, una red de computadoras ' está constituida por un conjunto de elementos, capaces de realizar la tarea de comunicación entre dos entidades que así lo requieran. Dichos elementos serán programas o equipos entre los que pueden establecerse relaciones específicas. Por ejemplo, comunicación entre 48 . Implementación de "_._.-.- un shell remoto Fundamentos de redes de computadoras programas con objeto de intercambiarinformación para cooperaren la resolución de una función; comunicaciones entre programas y equipos, con el objeto de que los primeros hagan uso de los servicios de los segundos. E n la Figura 1 se puede ver un sencillo sistema de comunicación de datos. El “Proceso de Aplicación”(PA)que maneja el usuario final, suele tratarse de un programa de computadora o a veces de una terminal de usuario, con un programa de contabilidad, de nómina, un sistema de reservaciones para avión, etc. I ’ La aplicación reside en el Equipo Terminal de Datos o ETD. Estas siglas suelen emplearse de manera genérica para aludir a la máquina que emplea el usuario final. Un E T D puede ser una gran computadora, del tipo IBM, o una máquina máspequeña, como una terminal o computadora personal. La misiónde las redes’ detransmisiónde datos es interconectar distintos ETD. Así mismo, se ve en la figura un Equipo de Terminación del Circuito de Datos o ETCD. Su misión es conectar los ETD a la línea o canal de comunicaciones. El canal de comunicaciones llamado circuito o línea, es una vía sobre la cual se transfieren datos entre dispositivos remotos. Los E T C D , en un principio, eran dispositivos exclusivamente decomunicaciones, sin embargo,en losúltimos añoshan ido incorporando más funcimes deusuario; hoy en día algunos E T C D contienen parte de los procesos de aplicación. De cualquier modo, la principal misión de un E T C D es servir de interface entre el ETD y la red de comunicaciones. ,............................................................................................ Archivo datos de - PAA2 6.O Bases Conexione II I I I Red de 1 ............................................................................................. cornunicacione I Archivo S : S Conexiones lógicas físicas Conexiones Figura 1 . Sistema de comunicaciones. S e hace hincapié en que el ETD es el equipo de usuario donde se desarrolla la aplicación que originala necesidad de comunicación. El ETCD es el equipo medianteel cual el ETD ingresa a la red que transporta la información. Una red de computadoras, como cualquier red de telecomunicaciones, puede cumplir sus Universidad Autónoma Metropolitana. Unidad lztapalapa 49 Capítulo 2 objetivos mediante una combinación muy rica de soluciones materiales (canales, equipo, etc.) y lógicas (arquitectura, organización, etc.). La arquitecturadeunared, es un diseñode sistema de comunicaciones, que incluye el hardware, el software, los métodos de acceso y los protocolos empleados.También define el métodode control: si las computadoraspueden actuar en forma independiente o si son controlados por otras computadoras que monitorean (un monitor essoftware que proporciona utilidades y funcionesde control comoel establecimiento de parámetros de comunicaciones)la red. La arquitectura de red determina la futura flexibilidad y conexión a redesextranjeras. Finalmente el ETD puede tener comosinónimos terminal, computadora, estación, sistema final, anfitrión o huésped (estos dos últimos provienen de la terminología ARPANET); y el de ETCD puede llamarse nodo, lnterfaz de Hardware (de la Red) o Procesador Intercambio de Mensajes(IMP) -&te último también de la terminología ARPANET-. CLASIFICACIONES DEREDES En su forma más simple, las comunicaciones toman lugpr entre dos dispositivos que se conectanenalgunamodalidaddeenlace punto a punto.En este casocada línea de comunicaciónde la redconectaados ETCD. Si dos ETCD deseancomunicarse y no comparten una línea de comunicación común, deberán hacerlo a través de otros ETCD; sin embargo, si se trata deungruponumerosode aparatos, enelqueno todossevan a comunicar simultáneamente, no resulta práctico pensar en una configuración punto a punto que una a cada equipo con resto el del conjunto. La solución del problema consiste en conectar los dispositivos a una red de comunicación ( llamada también subred de comunicaciones o simplemente subred). Se tiene un grupo de pueden ser aparatos deseando comunicarse entre sí (estaciones). Las estaciones computadoras, terminales, teléfonos o cualquier otro aparato de comunicación. Cada estación se conecta a un nodo de la red. La red de comunicación no tiene que ver con el contenido de la información que por ella circula, su propósito es transportar información entre origen y destino. Con la redse comparten las instalaciones de transmisión entre 'estaciones con lo que se reducen los costosde funcionamiento. Las redes de comunicaciones puedenclasificarse empleando diferentes criterios tales como su topología, cobertura, el método de envío de información, velocidad o bien por su tipo de tráfico cursado. 50 Implementación de un shell remoto L. Fundamentos de redes de cornputadoras TOPOLOGiA Por topología debe entenderse la forma en la cual habrán de interconectarse físicamente los diferentes componentes que constituyen una red de 'comunicaciones. Existen fundamentalmente cinco topologías, que son (ver Figura 2): a) b) c) d) e) Anillo Árbol Bus Estrella Malla @ Fig. l. Conexión total (Malla) Fig, 2. Conexión Parcial .x-Q Enlaces Dobles Fig. 4. Estrella Fig. 3. Jerarquía [Arbol] I PPPP Canal lineal Enlace I Sencillo Fig. 6. Canal multiacceso Fig. 5. Anillo Figura 2. Topologías deredes. Topología en anillo. La estructura en anillo es una configuración bastante extendida. Como se ve en la Figura 2, la topología en anillo toma su nombre del aspecto circular del flujo de datos. En la mayoría de los casos, los datos fluyen en una sola dirección, y cada estación recibe la seña1.y la retransmite a la siguiente estación d I anillo. 7 Laorganizaciónen anillo resulta atractiva porquecon ella sonbastantes Universidad AutónomaMetropolitana. Unidad lztapalapa I raras las 51 Capítulo 2 situaciones decongestión o bloqueo, tan frecuentesen las topologías de estrella y árbol. Además, la lógica necesariaparaponerenmarchauna red de este tipo es relativamente simple. Cada nodo sólo ha de llevar a cabo una serie de tareas muy .sencillas: aceptar los datos y retransmitirlos al próximo componente delmismo. Sin embargo,comotodas las topologías, la red en anillo tiene algunos defectos. El problema más importantees que todos los componentes del anillo están unidos por un mismo canal. Si falla el canal entre dos nodos,toda la red deja de funcionar. Por esoalgunos fabricantes han ideado diseños especiales queincluyen canales de seguridad, de modo que si se produce la pérdida de algún canal, existen otros de respaldo. Otros fabricantes construyen conmutadores que redirigen los datos automáticamente, saltándose el nodo averiado, hasta el siguiente nodo del anillo, con el fin deevitar que el fallolafecte a toda la red. Topología en árbol. La estructura árbol es una de las más extendidas en la actualidad. La ‘infraestructura que controla la red es relativamente simple y la topología proporciona un punto de concentración de las tareas de control y de resolución de errores. En la mayoría de los casos, el nodo situado en el nivel más elevado de la jerarquía es el que controla la red. En la Figura 2, el flujo de tráfico entre los distintos nodos arranca del que está arriba. Muchos fabricantes incorporan a esta topología un cierto carácter distribuido, dotando a los nodos subordinados deun control directo sobre los nodos situados en niveles inferiores dentro del árbol (control distribuido), lo cual reduce la carga de trabajo del nodo central de arriba. Aunque la topología en árbol resulta interesante por ser fácil de controlar, puede presentar ciertos problemas en cuantoala posibilidad de cuellos de botella. En determinadas situaciones, elnododemayor jerarquía hade controlar todo el tráfico entre los demás (enfoque centralizado). Estehechono sólo puede crear saturacionesde datos, sino que además plantea serios problemas de fiabilidad. Si el nodo principal falla, toda la red deja de funcionar. Pesea todo, las topologías de árbol se hanvenidousadoampliamentedesdehace bastantes años, y seguirán empleándose durante muchotiempo, ya que permiten la evolución gradual hacia una red más compleja, puesto que la adición de nuevos nodos subordinados es relativamente sencilla. I Topología en bus. En la Figura 2 se muestran topologías tipo bus. Esta estructura es frecuente en las redes de área local. Es relativamente fácil controlar el flujo de tráfico entre las distintas estaciones, ya que el bus permite que todas reciban cualquier transmisión, es decir, una estación puede difundir la información a todaslas demás. La principal limitación de esta topología eselhechode que suele existir un sólo canal principal. Otro inconveniente deesta configuración estriba en la dificultad de aislar las fallas de los componentes individuales conectados al bus, la falta de puntos de concentración complica la resolución de este tipo de problemas. Topología en estrella. La topología en estrella es unade las más empleadas en los sistemas de comunicación dedatos, principalmente por razoneshistóricas. 52 Implementación de un shell remoto Fundamentos deredes de computadoras I La topología en estrella se utilizó a lo largo de los años sesenta y principios de los setenta, porque se consideraba fácil de controlar, debido a que su programación para funcionamientoy mantenimiento no es complicada y su flujo de tráfico es sencillo. Todo el tráfico atraviesa el núcleo de la estrella, que en la Figura 2 es el nodo central. El nodo central, por lo general una computadora, poseeel control total de los ETD conectados a él. Dicho nodo es responsable de enrutar el tráfico hacia el reSto de los componentes; se encarga además, de localizar las averías. Esta tarea es relativamente sencilla en el caso de una topología estrella, ya que es posible aislarlaslíneas para identificar el problema. Sin embargo, una red enestrella puede sufrir saturaciones y problemas en caso de unaavería del nodo central. Algunas redes en estrella construidas en los años setenta experimentaron serios problemas de fiabilidad, debido a su carácter centralizado. En otros sistemas se estableció redundancia en el nodo central, como medida de seguridad, con lo cual la fiabilidad aumentó considerablemente. Topología en malla. La topología en malla se ha venido empleando en los últimos años; la Figura 2 representa casos particulares de este tipo de redes. Enuna topología en mallacada estación puede estar conectadacontodas las demás estaciones (red completa o red total) o con sólo algunas (red incompleta o red parcial) formando una estructura que puede ser regular (simétrica) o irregular. Cuando se desea implantar una red con topología en malla, el diseñador ha de plantearse tres objetivos fundamentales: 1. Proporcionar la máxima fiabilidad posible para garantizar la recepción correcta de la información quese transmite; uso de vías alternativas. 2. Encaminar el tráfico entre el equipo terminal de datos que transmite y el que se recibe a través del camino más económico dentro de la red. 3. Proporcionar al usuario final un tiempo de respuesta y una capacidad de transmisión óptimos. Lo que hace atractiva a este tipo de topología es su relativa inmunidad a los problemas de congestión y fallas. Gracias a la multiplicidad de caminos que ofrece, en esta topología es posible orientar al tráfico por trayectorias alternad en caso de que algún nodo esté fuera de operación. A pesar de que la realización de este método es compleja y cara, muchos usuarios prefieren la fiabilidad de una red en malla a otras alternativas. Universidad AutónomaMetropolitana. Unidad lztapalapa 53 _" - - -- ' ... -.. " " Capitulo 2 COBERTURA Existen redes de comunicación que ofrecensu servicio a una amplia zona territorial junto a redes cuya coberturase limita a uno o a varios edificios. I A partir de su extensión territorial se identifican dos clases de redes: 1. Las de gran coberturageográfica, denominadas WAN (Redes de Área Ancha). 2. Las redes de árealocal, denominadas LAN (Redes de ÁreaLocal). Estos tipos de redes se estudiarán más detalladamente en una secciónposterior REDES CONMUTADAS Y REDES DE DIFUSIóN El método con que se realiza el enrutamiento de la información, desde su origen hasta su destino, ofrece otro criterio para clasificar a las redes, separándolas en dos grandes grupos, a saber: A) Redes conmutadas. 1. Conmutación de circuitos. 2. Conmutación de paquetes. 3. Conmutación de mensajes. I B) Redes de difusión. 1. Radio paquetes 2. De satélite. 3. Locales. I Se entiende por red conmutada a aquella colección de nodos en la cual la información se transmiten de la fuente al destino enrutándose através de varios nodos de la red. Losnodosque constituyen lared se conectandeacuerdoa los requerimientosde comunicación entre ellos, debido a esto, la interconexión no necesariamente es entre todos. Por eso se dice que en este tipo de redes la topología puede ser de conexión completa o parcial. Dentro de las redes conmutadas se da una clasificación en términos de la forma en la cual los nodosconmutan los datosde un enlace a otro, de ahíque existan las redes de conmutación de circuitos, de mensajesy de paquetes. Estos tipos de redes se analizarán brevemente en la sección de comunicación. El número de estaciones(ETD) conectadas a un nodo, dependerá desu tipo. Si se trata de unpuntodeacceso a red (ETCD), podrá tener varias estaciones abonadas (es decir, Implementación de 54 * " un shell remoto Fundamentos de redes de comwtadoras conectadas a éI). Por otro lado, si se trata simplemente de un elemento de conmutación interno de la red,no tendrá unasola estación abonada. Los enlacesesfaci6n-nodo son enlaces punto a punto dedicados, en cambio, los ?#/aces nodo-nodo son comúnmente enlaces de mayor capacidad y de uso compartido. E n las redes de difusión, no existen elementos de conmutación. Es éstas, cada estación se conecta a un transmisor-receptor y se comunica sobre un medio común a otras estaciones. E n estas redes, en principio, cada estación tiene la capacidad de recibir la información que todas las demás envían, pero sólo la aprovecha si le corresponde.,Las redes de sat6lites y las redesderadiopaquetes emplean el espacio aéreo como medio comúnde transmisión. (cablede alta Existen también lasredes que emplean medios como el cablecoaxial capacidad utilizado en comunicaciones y video, generalmente llamado co-ax), la fibra óptica o el par de cables trenzados(alambres aislados del grosor de un diámetro [de medida entre 22 y 261, utilizado comúnmente en alambrados telefónicos). Loscasos característicos son las redes de anillo y de bus vistas anteriormente. VELOCIDAD Las redes de comunicación se pueden clasificar también por su velocidad en: 1. Redes de baja velocidad (LSLN: Red Local de Baja Velocidad). 2. Redes de alta velocidad (HLSN: Red Local deAlta Velocidad). Las redes de baja velocidad emplean como medio de transmisiónel cable coaxial y en menormedida la fibraóptica. S u velocidad de transmisión puede ser de hasta 10 Mbps., y pueden soportar hasta 1000 estaciones. E n este tipo de redes pueden considerarse las redes un sistema de locales y a los PBX(Intercambio Privado deRamificación). Una PBX es conmutación telefónica interna que interconecta en forma electrónica las extensiones telefónicas entre sí, así como a la red telefónicaexterna. Puede incluir funciones como ruta menos costosa para llamadas externas, redireccionamiento de' llamadas, llamadas de conferencia y contabilidad dellamadas. LasPBX modernas utilizan métodos totalmente digitales de conmutación, y a menudo pueden operar terminales y teléfonos digitales, así como teléfonos analógicos. I Las redes de alta velocidad emplean como medio de transmisión el cable coaxial y la fibra óptica, y actualmente el par trenzado de nivel 5. S u velocidad de transmisión es entre los 10 y 1000 Mbps., y puede soportar hasta 1000 estaciones. E n este tipo de redespueden considerarse las redes locales FDDl (Interface de Datos Distribuidos por Fibra Óptica), las cuales son un caso particular de las redes locales de anillo. Universidad Autónoma Metropolitana. Unidad lztapalapa 55 - .. . . . . .. . -. . TIPO DE INFORMACIóN QUE CURSAN i Por cuestiones de exposición, se considera también como criterio de clasificación el tipo de información que pueden cursar las redes. Aún cuando se ha visto, de acuerdo a su evolución, quo no os ut1 pardtnolro soparado, puos de rnariera natural la loridencia es llacia la intoyraciitl y con ello, la información que se transmite no es de un sólo tipo. Hecha la advertencia, se pueden dividir las redes entres categorías: 1. De voz. 2. De datos 3. De imágenes. El diseñador de una red de comunicaciones debe considerar cuatro aspectos básicos: 1. Estrategias de enrutamiento. ¿Cómo se enviarán los mensajes porla red? 2. Estrategias de conexión. ¿Cómo envían dos procesos unaserie de mensajes? 3. Conflictos. Puestoque la red es un recurso compartido, ¿Cómo solucionamos las demandas de usoconflictivas? 4. Estrategias de diseño. ¿Cuál es el diseño global para la comunicación entre de redes, vistas aplicaciones? Aquí entran las arquitecturas y normalización anteriormente. ESTRATEGIAS DE ENRUTAMIENTO 1 Cada instalación tiene una tabladeencaminamiento (o enrutamiento)que indica las alternativas de rutas que pueden emplearse paraenviar un mensaje aotras instalaciones. Ésta tabla puede incluir información acerca de la velocidad y costode las diversas rutas de comunicación y puede actualizarse manualmente o por medio de programas. Los tres esquemas de encaminamientomás comunes son los descritos a continuación: Encaminamienfo fíjo. Se especifica por adelantado una ruta de A a B y no cambia a menos que una falla en el hardware invalide esa ruta. Generalmente se escoge la ruta más corta por economía. Éste esquemaes poco flexible, sin embargo asegura que los mensajes de A a B sean entregados en el orden en el que fueron enviados. Implementación de 56 ~ . - ,I. ._ un shell remoto I Fundamentos de redes de computadoras Circuito virfual. S e fija una ruta de A a B durante una sesión. Sesiones distintas donde aparecen mensajes de A a B pueden tener rutas diferentes. Éste esquema es más flexible que el de encaminamiento fijo, y también asegura que los mensajes de A a B se reciban en el orden de envío. Encaminamiento dinámico. La ruta para enviarun mensaje dela instalación A ala instalación B se escoge en el momentodeenviar el mensaje. Éste esquema es totalmente flexible, pudiéndose enviar un mensaje de una instalación a otra, usando el enlacemenos utilizado en ese momento. La desventaja es quelos mensajespueden llegar en cualquier orden;sepuede anexar unnúmerode secuenciaa cada mensaje para solucionar éste problema. Los paquetes que circulan en este tipo de encaminamiento se denominan datagramas. ESTRATEGIAS DE CONEXIóN I Hay varias maneras de conectar pares de procesos que desean comunicarse por la red; los esquemas más comunes son los que se describen a continuación: Conmutación de circuitos. Si dos procesos quieren comunicarse entre ellos,se establece un enlace físico permanente. Éste enlace se asigna par todo el tiempo que dura la comunicación y ningún otro proceso puede utilizarlo durante ese período. Éste esquema es semejante al quese utiliza en el sistema telefónico. La conmutación de circuitos requiere tiempo de preparación, pero provoca menos tiempo de procesamiento adicional para enviar cada mensaje y puede desperdiciar parte del ancho de banda de la red. La conmutación de circuitos utiliza el encaminamiento fijo. Conmutación de mensajes. Si dos procesos quieren comunicarse, se establece un enlace temporal durante el tiempo que dura la transferencia de un mensaje. Cada mensaje es un bloque de datos, junto con ciertainformación (comola fuente, el destino y códigos de corrección de errores). Es posible enviar muchos mensajes(de varios usuarios) por el mismo enlace. Éste esquema requiere menos tiempo de preparación y mayor tiempo de procesamiento adicional por cada mensaje. El sistema de conmutación de mensajes es similar al usado por la oficina de correos. Conmutación de paquetes. Los mensajes generalmentetienenlongitud variable. La conmutación de paquetes es similar a la de mensajes, pero en aquella los mensajes se dividen en mensajes de longitud fija llamados paquetes. Es posible que un mensaje lógico tenga que dividirse en varios paquetes, cada unode los cuales se envía por separado a su destino y pueden seguir rutasdiferentes por la red. Para formar el mensaje hay que reensamblar los paquetes conforme llegan. AI igual que en la conmutación de mensajes se requiere un menor procesamiento. Esta estrategia de conexión tiempo depreparación y untiempomayorde utiliza los circuitos virtuales y el encaminamiento dinámico (datagramas). Universidad Autónoma Metropolitana. Unidad lztapalapa 57 CONFLICTOS Ya que un enlacepuedeconectar varias instalaciones, es posible queéstasquieran transmitir simultáneamente información por un enlace. Si no se toman medidas especiales, ésta situación se puede repetir, dando como resultado una degradación del rendimiento. Las principales técnicas para evitar colisiones repetidas son las que se citan en seguida. CSMNCD(CSMA = Detección de PortadoraconAccesoMúltiple) '(CD = Detección de Colisión).Antes de transmitir un mensaje porun enlace, una instalación debe escuchar para determinarsi en ese momentose está transmitiendo otro mensaje por el mismo enlace, a ésta técnica se le llama CSMA. Si el enlace está libre, la instalación puede comenzar a transmitir; de lo contrario debe esperar (y seguir escuchando) hasta que el enlace quede libre. Si dos o más instalaciones comienzana transmitir en el mismo instante (cadauna pensandoqueninguna otra utiliza el enlace), entonces registrarán una CD y dejaránde transmitir. Cada instalación intentará hacerlo de nuevo, después de cierto período aleatorio de tiempo. El problema principal con ésta estrategia es que, cuando el sistema está muy ocupado, pueden ocurrir muchas colisiones con mensajes de otras instalaciones y degradarse el rendimiento. No obstante, CSMAICD se ha utilizado con éxito enEthernet (ver Tecnología Ethernet másadelante). Paso de testigo (ficha). Un tipo de mensaje Único, conocido como testigo o ficha, circula continuamente por el sistema (casi siempre una estructura anular). Una instalación que desee transmitir información debe esperar a que llegue el testigo; luego quita el testigo del anillo y comienzaa transmitir sus mensajes.Cuando la instalación terminade transmitir, vuelvea transmitir el testigo, lo que permite que otra instalación reciba y quite el testigo para repetir el proceso. Si se pierde el testigo, el sistema debe detectar ésta situación y generar uno nuevo. En los sistemas IBM y Apollo se ha adoptado un esquema de paso detestigo. Ranuras de mensajes. Por el sistema (casi siempre una estructura anular) circulan constantemente varias ranuras de mensaje de longitud fija. Cada ranura puede contener un mensaje de longitud fija e información decontrol (como cuáles son la fuente y el destino y si la ranura está vacía o llena). Una instalación que esté lista para transmitir debe esperar a que llegue una ranura vacía, en la cual insertará su rpensaje, ajustando la información de control adecuado. La ranura consu mensaje prosigue entonces porla red y al llegar a una instalación, esta examina la informaciónde control para determinarsi le correspondeo no el mensaje en la ranura. Si no es para esa instalación, la ranura con el mensajevuelvea circular; de lo contrario, la instalación toma el mensaje, restablece la información de control para indicar que la ranura está vacía, y luego puede enviar un mensaje propio o liberar la ranura. Éste esquema se ha adoptado experimentalmente enel Anillo de ComunicaciónDigital de Cambridge. Implementación de 58 " - Y_"".-.* un shell remoto " Fundamentos de redes de computadoras TECNOLOGíAS DE REDES Redes de área ancha. Las primeras redes de computadora, fueron redes de área ancha (WAN). Estándiseñadasparaproporcionarcomunicación entre computadorasqueestán separadas por grandesdistancias y usualmente localizadas en organizacionesseparadas. Una red de área ancha consta de una colección de canales de comunicación enlazados a computadorasde propósito especial, conocido6 individualmente como Conmutadorde Paquete o lntercambiador de Conmutación de Paquete (PSE), introducidos primero en la red ARPA conelnombredeProcesadordeInterfacedeMensaje (IMP). Un PSE está tarea de localizado encadanododela red (Figura 3). Los PSEs estándedicadosala comunicación de datos. Ellos envían y reciben paquetes de datos através de la red en nombre de otras computadoras. Los PSEs operan la red por la reexpedición de paquetes desde un PSE a otro a lo largo de una ruta desde el emisor a el receptor. Ellos son responsables de definir la ruta tomada por cada paquete. Este modo de operación de red es aludido como comunicación de almacenamiento y reenvio, porque cada paquete de datos es almacenado temporalmente por cada PSE durantesu ruta antes de que sea reexpedido aotro PSE. Los sistemas de red de almacenamiento y reenvío pueden ser usados para comunicación de computadora a computadora sobre cualquier distancia donde existan circuitos que lleven los paquetes. e la red 1____3 Anfitri6n 4 Figura 3. Una red deárea ancha. Las computadoras que usan una red paraenviar y recibir datos se denominarán anfitriones Universidad Autónoma Metropolitana. Unidad lztapalapa 59 Capítuio 2 (como se vio antes, el nombre proviene de la terminología ARPANET). Los anfitriones están normalmente localizadoscerca deun PSE y conectados directamente a él. Ellos pasan los paquetes de datos a los PSEs para que éstos los transmitan a travbs de la red a otros anfitriones y reciben paquetes desde los PSEs que son direccionados a ellos. 1 e" Anfitriones "+ Topología de bus simple. Topología de bus ramificada. Figura.4. Topologías de bus. y la mayoría de las actuales operan a velocidades de Las primeras redes de área ancha transmisión en el rango de 20-500 Kbps., obteniéndose tiempos de transmisión mínimos para un mensaje de 1000 bytes a través de un circuito simple entre 16 y 400 ms. Pero el método de conmutación de paquetes involucra retardos adicionales de el orden de unos pocos milisegundos en cada PSE en la ruta detransmisión. En consecuencia, los tiemposde transmisión de mensajesson relativamente largos y puedendepender incluso de la ruta tomada por cada mensaje. Los mensajes cortos son transmitidos en 100-200 ms. en redes de 60 remoto shell un Implementación de Fundamentos de redes de computadoras área ancha típicas. Los satélites de transmisión necesariamente involucran una latencia (es el tiempo entre la iniciación de una solicitud de datos y el comienzo de la transferencia efectiva de datos) adicional porque el tiempo de vuelo de una sefial electrónica a un satélite síncrono en órbita y de regreso a la tierra es del orden de 200 ms. Si son usados los canales del satélite o la ruta es compleja, se involucran muchos PSEs, y el tiempo de transmisión para un mensaje puede ser hasta de 500 ms. Se espera que las redes de área ancha basadas en ATM ofrezcan velocidades de transferencia en la región de 150 Mbps. con latencia abajo de I ms. para la transmisión de paquetes una vezque una conexión ha sido establecida. I Redes de área local. Las redes de área local fueron desarrolladas en respuesta a las ' mismas necesidades que permitieron el desarrollo de sistemas distribuidos (los cuales fueron diseñados para habilitar a los usuarios a trabajar en computadoras personales dedicadasy en estacionesdetrabajo paracompartir recursos). Las estaciones de trabajo y las computadoras dedicadas son aquellas micro o minicomputadoras para un sólo usuario, de alto rendimiento, que han sido especializadas para gráficas, diseño o aplicaciones científicas. Estación monitor Figura 5. Topología en anillo. Las redes locales están estructuradas ya sea como buses o anillos (Figura 4 y Figura 5) con circuitos de comunicacióndedicados,normalmente enun lugar sencillo y extendiéndose alrededor de unos pocos kilómetros. Los mensajes son transmitidos directamente desde una computadora fuente a una computadora destino sin almacenamientointermedio y sin Universidad Autónoma Metropolitana. Unidad lztapalapa 61 Capítulo 2 procesamiento. No hay PSEs enlas%redeslocales; en vezdeello, los anfitriones son responsables colectivamente del control de tráfico o de la red usando interfaces de hardware de propósito especial para transmitir y recibir los datos en los circuitos de la red. El modo de operación está basado en comunicación de difusión más que en el modo de almacenamiento y reenvíousado en redesdeáreaancha. Estoes,cada paquete es transmitido a cada una de las computadoras de la red y cada computadora es responsable de la identificación y recepción de paquetes que son direccionados a ella. La comunicación en redes locales es efectuada sin la necesidad de computadoras especializadasdedicadasalas tareas de comunicación. Los anfitriones sonconectados directamente a un canal de comunicación por una interface de hardware relativamente simple. La interface de hardware y elsoftware que maneja la red en cada anfitrión puede enviar y recibir datos a altas velocidades con tasas de errores bajas y sin retardos de conmutación, implementando la capa física, la capa de enlace de datos y la capa de red con un protocolo simple. E s posible proporcionar softwarerelativamentesimple a cada computadora que pueda llevar a cabo la tarea completa de la transmisión o recepción de mensajes. Estas importantes características de las redes locales dan ventajas considerables encosto, velocidad e integridad en comparación con las redes de área ancha. Los circuitos usados en redes locales pueden ser par trenzado, cable coaxial o fibra óptica, capaces de transmitir datos a velocidades en un rango desde 0.2 a 100 Mbps. Ya que todas las redes locales están diseñadas para proporcionar comunicación directa entre dos anfitriones cualesquiera, la topología usada (anillo, bus o bus ramificado)tienerelativamente poca influencia en el comportamiento visto por el usuario. Redes de &ea metropolitana (MANS). Esta clasederedes está basada en la fibra óptica conectandopueblos y ciudadespara la transmisiónde video,voz y otros datos en distancias de hasta 50 km. Las facilidades de transmisión de datos de dichas redes pueden ser explotadas para proporcionar tasas de transferencias de datos que son comparables a las requeridas por los sistemas distribuidos. Sus tasas de transferencias de datos son similares a las de las redes RDSI-BA y usan las técnicas de conmutación ATM (se verá posteriormente). El enrutamiento de mensajes y otros retardos son mucho más cortos que los de redes de área ancha, produciendo latencias típicas de menos de un milisegundo. Las’redes MAN encuentran necesidades similares a aquellas que encontraron las actuales redeslocales mientras se expandían grandes distancias. El enfoque se hará en las redes de área local porque han proporcionado la infraestructura decomunicacionesnecesariapara los sistemas distribuidos. .Las ventajas de la tecnología RDSI-BA y delastécnicas de conmutación ATM, ofrecen mecanismosdecomunicación compatibles con las necesidades de los sistemas distribuidos que son independientes de la distancia geográfica. 62 ” remoto shell un Implementación de “.““”l(”l -. Fundamentos de redes de computadoras TECNOLOGIAS E-I’HERNE-I’,TOKEN RING Y ATM S e describen aquí los principiosde operación de dos tecnologías importantes de redde área local y de la surgiente tecnología ATM pararedes ISDN debanda ancha. Primero se discutirán los principios generales de operación de redeslocales basadas en topologías de bus y anillo. * E n redes con topología de bus simple o bus ramificado, hay un circuito compuesto de un cable sencillo o de un conjunto de cables conectadQs pasando cerca de todos los ETDs en la red. Cuando se usamás deun cable las conexiones puedenhacerse por repetidores (unidades simples de amplificación y conexión que no causan efectos en la sincronización o comportamiento lógico de la red). El cable es pasivo, y cada ETD tieneun cabledecaída conectado al cable principal por medio de una conexión T o llave. Los datos son transmitidos por una señal de difusión sobre el cable como una secuencia simple de pulsos. Esta forma de señalización es análoga de alguna manera a los sistemas de bus (genéricamente un bus es un canal o ruta común entredispositivosdehardware) de datos que fueron desarrollados originalmente paraconectar las partes del sistema de una computadora convencional. La diferencia principalentre las redes de bus y los sistemas debuses usados dentrode los sistemas de computadoras es que éstos QltiTos son buses paralelos permitiendo la 16 ó 32 bits simultáneamente y la transmisiónde datos sobre ellos está transmisiónde sincronizada por una unidad de arbitraje central, mientras que en las redes locales de bus no haycomponentes centralizados y el uso del cable se sincroniza porunmétodo de control distribuido que involucrar cooperación entre todas las computadoras conectadas a la red. Esto ha conducido a la descripción detales redes como buses de contencich, porque todas las computadoras de la red necesitan enviar un mensaje en cualquier momento contenido para el uso del cable. E n redes con topología de anillo el cable está compuesto de enlaces conectando estaciones adyacentes. Los datos son transmitidos en una dirección alrededor del anillopor señalización en las estaciones. Cada nodo envía la señal que recibe a la siguiente sección del los remueve de el cable.Los datos circulan alrededor del anillo hastaqueunaestación circuito; la estación receptora hace esto en algunos sistemas del anillo, pero en otros los datos pueden completar elciclo y ser removidos por la estación emisora. E n la mayoría de los sistemas de anillo una estación monitor es incluida para asegurarse que los datos no circulen indefinidamente (por ejemplo, en caso de que la estación receptora o la emisora fallen) y permitir otras funciones “domésticas”. Las redes locales han sido objeto de mucho trabajo de desarrollo, ya que cerca de los años 70’s un número de tecnologías de red han surgido con un desempeño adecuado para soportar sistemas distribuidos. I La Ethernet, originalmente desarrollada en Xerox P A R C , principios de los ~ O ’ S , ha sido adoptada como la Norma IEEE 802.3 y es la tecnología de red local más ampliamente usada para sistemas distribuidos. Está basada en la difusión sobre un circuito pasivo simple, con un cablede alta velocidadconectando todas las computadoras delared. La Cambridge Ring desarrolla en la Universidad de Cambridge a mediados de los 70’s ejemplifica otra clase de red Universidad Autónoma Metropolitana. Unidad lztapalapa 63 Capítulo 2 local,conocida como anillo deapertura, puede transmitir paquetesgrandes y de tamaño variable, y ha sido adoptada como la Norma IEEE 802.5, por IBM y algunos otros fabricantes . para el enlace de computadoras personales y estaciones detrabajo. Las redeslocales actuales son capaces de transmitir datos avelocidades de 0.2-10 megabits por segundo (Mbps.),y algunas redes recientes que lo hacen a velocidades mayores velocidades detransmisión no ocasionan conflictos de tráfico de de 200 Mbps.Estas comunicación o con los protocolos o en el costo del software, pero indicanel potencial de rendimiento de las redes de área local, ofreciendo velocidades básicas de transmisión para un mensaje de 1000 bytes en una rango que vade 4 milisegundos (ms.) a 40 microsegundos ( p . ) en las redes más rápidas. E n las topologias usadas en redes de área local nohayretardos conmutación. por almacenamiento o Las redes locales con velocidades detransmisiónantes mencionadas de alrededor de 1 Mbps. deberían ofrecer un desempeño aceptable para su uso en sistemas distribuidos ligeramente cargados (carga es una medida del rendimiento, del uso normalde un sistema como un porcentaje de la capacidad total), ya que 10 Mbps. ofrece una capacidad razonable para soportar sistemas que generan tráficosustancia4. Los experimentos con redes de área local en sistemas distribuidos soportan esta conjetura. TECNOLOGjA ETHERNET Ethernet fue desarrollada en Xerox en 1973 como parte del programa intensivode investigación llevado a cabo en estaciones detrabajo personales y sistemas distribuidos. El piloto Ethernet fue la primer red de área local de alta velocidad, demostrando que es factible el uso de redes locales de alta velocidad enlazando computadoras en un sitio simple, permitiéndoles comunicarse a altas velocidades de transmisión con bajas tasas de error y sin retardos por conmutación. S e describirá Ethernet como se especifica en la Norma IEEE/ISO 802.3. Opera a velocidades de 10 Mbps. usando cable coaxial de baja pérdida, dispositivos de alta velocidad en las computadoras conectadas a éI; el prototipo original Ethernet corrió a 3 Mbps. y muchas redes posteriores han sido implementadas usando elmismométodo básicoparauna gran variedad de aplicaciones. E n el nivel más bajo de costo son usados los mismos principios de operación para conectar computadoras de bajo costo con velocidades de transmisión de 100200 kilobits por segundo (Kbps.). I Ethernet es una redde bus simple o ramificado y usa un circuito que consta de varios segmentos continuos de cable coaxial de baja pérdida conectados por repetidores. Es un bus laclase de redes descritas por la frase 'Detecciónde de contención y es unmiembrode Colisión/ Detecciónde Portadora con Acceso Múltiple" (CSMACD). remoto shell Implementación un de 64 "..- Fundamentos de redes decomputadoras Difusión de paquetes. El método básico de comunicación enredes CSMAlCD es por difusión de paquetes de datos en un cable que es accesible a todas las estaciones de la red. Todas las estaciones están continuamente ‘C;scuchando”elcable para detectar paquetes que sean dirigidos a ellas. Cualquier estación que desee transmitir un mensaje difunde uno o mas paquetes (llamados tramas en la Especificación Ethernet) en el cable. Cada paquete contiene la dirección de la estación destino, la dirección de la estación emisora y una secuencia de bits de longitudvariable representando el mensaje a ser transmitido. La transmisióndedatos produce IO millones de bits por segundo y los paquetes varían en longitud entre 64 y 151 8 bytes, así que el tiempo para trasmitir un paquete en Ethernet tiene un rango de 50-1200 ps dependiendo de su longitud. La dirección de la estación destino normalmente se refiere a una interface de red simple. Cada estación recibe una copia de cada paquete, pero ignora los paquetespara otras computadoras y pasan hasta su estación correspondiente solamente aquéllos paquetes que le son direccionados. La dirección de la estación destino también podría especificar direcciones de difusión o difusión restringida. Normalmente las direcciones se distinguen de las direccionesde difusión y difusiónrestringidaporelvalor desus bits demáspeso (O y 1 respectivamente). Una dirección consta totalmente de 1’s si está reservada para usarse como una dirección dedifusión y esusada cuando un mensaje va aser recibido por todas las estaciones de la red. Cualquier estación que recibe un paquete con una dirección de difusión la pasará a la siguiente. Una dirección de difusión restringida especifica una forma limitada de difusión la cual es recibida por ungrupode estacionescuyas interfaces de red han sido No todas las configuradas para recibir paquetes con direcciones dedifusiónrestringida. implementaciones de interfaces deredEthernet puedenreconocer direcciones de difusión restringida. El protocolo de red Ethernet (proporcionado para la transmisión de paquetes Ethernet entre pares de estaciones) es implementado en lainterfacedehardware Ethernet,así que el software del protocolo es requerido para la capa de transporte y capas superiores a ésta. EstructuradeunpaqueteEthernet. Los paquetes (o tramas) transmitidos estaciones en Ethernet tienen la estructura de la Figura 6. [ 6 bytes Dirección destino I 6 bytes Dirección fuente I 246bytes Tipo -1518bytes Datos por 4 bytes Secuencia de vcnlicaci6n de Innu Figura 6. Estructura de un paquete Ethernet. contiene un Aparte delas direcciones destino y fuente yamehcionadas,lospaquetes campo de tipo, campo de datos y una secuencia de verificación de trama. Note que la longitud de los paquetes no es transmitida. Es vez de ello, la estación receptora detecta elfinde transmisión (hay un intervalo obligatorio de 9.6 ps entre paquetes y se asume que los últimos 4 bytes recibidos constituyen la secuencia de verificación de trama. (En la Norma IEEE/802.3la Universidad Autónoma Metropolitana. Unidad lztapalapa 65 Capítulo 2 longitud del campo de datos es transmitido en lugar de el campo de tipo, pero la información de tipo es importante en interedes [conjunto de redes conectadasentre sí] ya que permite que protocolos de transmisión múltiple sean transmitidos sin interferencia y dicho campo ha sido conservado en la mayoría de las implementaciones Ethernet). El campo de tipo es usado por las capas superiores de protocolos para distinguir paquetes devarios tipos. La especificación no permite más de 1024 estaciones en una red Ethernet simple, pero las direcciones ocupan 6 bytes, y cada interface de hardware Ethernet es dada como una dirección única por el fabricante, con el fin de permitir que todas las estaciones en un conjunto de redes Ethernet interconectadas tengan direcciones únicas. El IEEE actúa como una autoridad de distribución de direcciones Ethernet, asignando direcciones enrangos separados de48 bits para los fabricantes de interfaces de hardwareEthernet. El campo de datos contiene o todo parte (si la longitud del mensaje exceda de 1518 bytes) de el mensaje que está empezando a transmitirse. Es el Único campo cuya longitud puede variar entre límites definidos. El límite inferior de 46 bytes enla longitud del paquete es necesaria para asegurarse que las colisiones puedan ser detectadas por todas las estaciones' de la red. La secuencia de verificación de la trama es un verificador general, insertado por el emisory usadoporel receptor para validar paquetes. Los 'paquetes de validación incorrecta son simplemente ignorados porla capa de enlace de datos en la estación receptora. Este es un ejemplo de el potencial de falta de integridad de los protocolos de datagramas simples usados en redes locales; para garantizar la transmisión de un mensaje, la capa de aplicación debe usar un protocolo que reconozca la recepción de cada paquete y retransmitir cualquier paquete no reconocido. La incidencia de corrupción de datos en redeslocales es tan pequeñaque el usode este métododerecuperacióncuando la entregagarantizada es requerida es perfectamenteaceptable. Colisiones de paquefes. Aúnenel tiempo relativamente corto quetoma transmitir paqueteshayuna probabilidad finita dequedosestacionesde la red intenten transmitir mensajes simultáneamente. Si una estación intenta transmitir un paquete sin verificar si el cable es usado porotras estaciones, puede ocurrir una colisión. Ethernet tiene tres mecanismospara tratar ésta posibilidad. La primeraesllamada detección de portadora; el hardware de interface en cada estación escucha para detectar la presencia de una señal (conocida como portadora por analogía con la radiodifusión) en el cable. Cuando una estación desea transmitir un paquete espera hasta que ninguna señalesté presente en el cable y entonces empieza a transmitir. las colisiones. La Desafortunadamente, la deteccióndeportadoranoorevienetodas ser posibilidad de colisión se mantiene durante el tiempo finito z que le toma a una señal insertada en el cable (viajando a velocidad electrónica: aproximadamente 2x108 metros por segundo) para alcanzar todoslos otros puntos. Considérense dos estacionesA y B que están ya listas para transmitir paquetes casi al mismo tiempo. Si A empieza a transmitir primero, B puede verificar y no encontrar señal en elcable en el tiempo t<r después de que A empezó a 66 Implementación de un shell remoto Fundamentos de redes de comwtadoras I transmitir. B entonces empieza a transmitir, interfiriendo con la transmisión de A. Tanto los paquetes deA como los de B serán dañados porla interferencia. La técnica usada para recuperarse da tal interferencia es llamada detección de colision. Cada vez que una estación está transmitiendo un paquete a través de su puerto de salida de hardware, también escucha ensu puerto de entraday las dos señales son comparadas.Si son diferentes, entonces ha ocurrido una colisión. Cuando esto sucede la estación detienela las transmisión y produce una señal de obstrucciónen el cable para asegurarse de que todas estacionesreconozcan la colisión. Como se hadetectado ya, esnecesario un paquetede longitud mínima, para asegurarse que las colisiones siempre son detectadas. Si dos estaciones transmiten casi simultáneamente desdeextremos opuestos de la red, no llegarán a enterarse de la colisión por 2.s segundos (porque el primer emisor debe estar aún transmitiendo cuando recibe la segunda señal). Si el paquete que las estaciones transmitan tomamenosde T para ser difundido, la colisión no será notificada, ya quecada estación emisora no podrá ver el otro paquetehasta después dequehaya finalizado su propia transmisión, mientrasque las estacionesenpuntos intermedios podrían recibir ambos paquetes simultáneamente,resultando una corrupción de datos. Despuésde la señal de obstrucción, todas las transmisiones y estacionesde escucha cancelan el paquete actual. Entonces las estaciones transmisorastienen que intentar transmitir sus paquetes otra vez. Surge ahora una dificultad posterior. Si las estaciones involucradas en la colisión intentan retransmitir sus paquetesinmediatamentedespuésdela serial de obstrucción probablemente ocurra otra colisión. Para evitar esto,es usadauna técnica conocida como cerrar a la inversa. Cada una de ¡as estaciones involucradas en una colisión elige esperar un tiempo n.r antes de retransmitir. El valor de n es un entero aleatorio escogido separadamente en cada estación y limitado por una constante L definida en el software de la red. Si ocurre una colisión posterior, el valor de L es duplicado‘ y el proceso es repetido si es necesario hasta 10 intentos. Finalmente, la interface dehardwareenla estación receptora computa la secuenciade verificación y la compara con lasumatransmitida en el paquete. Si la comparación falla el paqueteesrechazado (esto es, no es transmitido). Usandotodasestas técnicas, las estaciones conectadas a Ethernet son capaces de manejar el uso del cable sin algún control centralizado o de sincronización. I Eficiencia Ethernet. La eficiencia deuna red Etherneteslarazónde el númerode paquetes transmitidos correctamente con respecto al número teórico máximo que podría ser transmitido sin colisiones. La eficiencia es afectada por el valor de T, ya que el intervalo de 2r segundos después de la transmisión de un paquete inicia la Ventana de oportunidad”para las colisiones (una colisión no puede ocurrir después de 2r segundos después de queun paquete empieza a ser transmitido). También es afectada por el número de estacionesen la red por su nivel de actividad. Para un cable de 1 km. el valor de T es ’menor que 5 ps. y la probabilidad de colisiones es enormemente pequeria para asegurar una gran eficiencia. Ethernet puede lograr la utilización de un canal entre un 80% y 95%, aunque los retardos debidos a la contención llegan a ser perceptibles cuando es excedido el 50% dela utilización. Como la carga es variable, es Universidad Autónoma Metropolitana. Unidad lztapalapa 67 Caritulo 2 imposible garantizar la entrega de un mensaje dado dentrode un tiempofijo, ya que la red podría estar completamente cargada cuando el mensaje ya está listo para la transmisión. Pero la probabilidad de transferir el mensaje con un retardo dado es tan buena, o mayor que otras tecnologías de redes. Las mediciones empíricas de eficiencia de una red Ethernet en Xerox PARC y reportada por Shoch y Hupp confirman este análisis. E n la práctica, las redes Ethernet usadas en sistemas distribuidos están relativamente cargadas. La mayoría de las veces no operan con estaciones esperando transmitir y cerrar el canal de utilización. Ethernets inferconecfadas. Ya que las direcciones permitidas para todas las interfaces Ethernet sonúnicas,puedenser interconectadas dos o más Ethernets, permitiendo alas computadoras de las redes interconectadas comunicarse sin temor de que existan direcciones duplicadas. Hay dos tipos de conexión en este nivel: repetidores y puentes (dispositivos que conectan redes de igual tipo). Mientras que un repetidor es un dispositivo electrónico analógico que simplemente reemite lasseñales eléctricas que ;ecibe, un puente es una computadora que pasa paquetes entre lasredes que están interconectadas. Los puentes tienen muchas o distorsión ventajas: como operan digitalmente en elnivelde paquete norepitenelruido eliminando el problema de retardo de extremo a extremo: cualquier número de redes Ethernet de cualquier longitud pueden ser interconectadas usando puentes. La mayoría de los puentes pueden hacer algo mejor que sólo tomartodos los paquetes recibidos en la interface de una red Ethernet y retransmitirlos en la interface a otra Ethernet. Pueden por ejemplo guardar una lista de las direcciones de cada red Ethernet y retransmitir solamente aquellos paquetes que estén destinados a una Ethernet diferente. Un puente puede también ser programado para filtrar mensajes de 'salida a destinos particulares. TOKEN RING Las Token Rings fueron exploradas a principios de la época del desarrollo de redes locales, pero su explotación ha sido más lenta que la deotras tecnologías de redde árealocal. Empero, han sido usadas en varios productos comerciales e IBM ha adoptado un token ring que conforma la Norma IEEEllSO 802.5 como una bafe para productos de sistemas distribuidos. Pueden ser transmitidos mensajes de casi cualquier longitud como paquetes sencillos. Esto se ha logrado con la ayuda de una ficha circulando permanentemente que tiene un formato distribuido. Puede ser útil una analogía con eltransportede carga por tren en la comprensión de la operación de token rings. La analogía tomael paquete ficha como una locomotora que está circulando eternamente alrededor de una pista cerrada (circular) y a los paquetes dedatos como vagones de carga. La locomotora está marcada como 'ocupada'lo 'libre'. Cuando no hay vagones pegados a la locomotora, está libre, en otro caso está ocupada. Los vagones contienen datos que pueden ser unidos a la locomotora cada vez que pasa una estación y no está ocupada.Cuando los vagonesson unidos la locomotora semarca como llena y la 68 remoto shell un Implementación de Fundamentos de redes de computadoras dirección de destino de los vagones semarca en la locomotora. La estación destino debe separar los vagones cuando pasany marcar la locbmotora comolibre. Una ficha simple es usada en la mayoría de los token rings. Circula continuamente y hay una estación monitor que introduce una ficha libre si ésta es omitida (para inicializar la red y para prevenir la pérdida del token cuando una estación falla). En el Token Ring IEEE la ficha ocupa tres bytes y es usado un bit sencillo en el token para indicar si está ocupada o libre. Cuando el token está libre, no circulan otros datos en el anillo. Cuando está ocupado, el token es seguido de una secuencia de campos de bytes de direcciones y datos. El formato de los paquetes y fichas se muestra en la Figura 7 3 bytes 6 bytes 6 bytes Token Dirección Dirección fuente destino S 4 bytes 5000 bytes Datos para 1 byte Delimitador verificaci6n transmisi6n final Secuencia de 1 bvte Estado de la trama de trama Figura 7. Formato de un paquete o ficha en una red TokenRing. Un token tiene el siguiente formato: I 1 byte I 1 byte Delimitador inicial Control acceso de 1 byte I Control trama de 1 Figura 8. Formato de Token. El byte delimitador inicial tiene un patrón fijo de bits que habilita a las estaciones para reconocer el inicio de la trama y sincronizar la velocidad de transmisión para datos. Los ocho bits del campo de confrol de acceso son usados para distinguir entre fichas ocupadas y libres, para identificar la prioridad de la trama que está siendo transmitida (3 bits) y para reservar la siguiente trama libre con una prioridad dada (3 bits). La estación monitor usa el octavo bit para ayudar a verificar que el anillo esté funcionando correctamente. La operación del token ring sigue el patrón en la analogía del ‘tren de carga:’ Una estación que desea enviar un mensaje verifica el campo de control de acceso y coloca el bit a ocupado si dicho bit está libre. Los campos de dirección destino y fuente son insertados por la estación emisora, y los datos del mensajesonagregadosa ellos, seguidospor la secuencia de verificación de trama y el delimitador final. La estación destino coloca el campo de control de acceso a libre y quita los campos arrastrados de el token. No se detallará el uso de la prioridad y reservación de bits en el campode control de acceso; su propósito es habilitar una variedad de regimientos para compartir la capacidad del Universidad Autónoma Metropolitana. Unidad lztapalapa 69 CaDítulo 2 canal entre las estaciones de la red. Una consecuencia importante es que pueden ser usados para asegurar una distribución correcta de la capacidad del canal entre estaciones esperando o dos transmitir mensajes',previniendo la apropiación total del anchodehandaporuna estaciones. El tokenring no sufre de las desventajas de paquetes pequeños o de tamaño fijo (los paquetes pueden en principio ser de casi cualquier longitud1 la limitación a 5000 bytes es un valor de defecto, para un parámetro que puede ser configurado en una preinstalación básica). El requerimiento para una estación monitor es la más fuerte desventaja que queda. MODELO DE TRANSFERENCIA ASíNCRONO (ATM) ATM ha sido diseñada para llevar una grancantidad de datos, incluyendodatos de multimedia tales como voz y video. Es una red deconmutación de paquetes rápida basada en el método de enrutamientoconocidocomo celda de relevo que puede operar muchomás rápido que la conmutacióndepaquetes convencional.Lograéstasvelocidadesevitando la verificación de control de flujo y de errores en los nodos intermedios en una transmisión. La transmisión los enlaza y así los nodos deben tener una baja probabilidad de corrupción de datos. Otro factor que afecta el desempeño es la pequeña longitud fija de unidades de datos transmitidas, lo cual reduce el tamaño del buffer, la complejidad, y los retardos de la cola en nodos intermedios. A I M opera en modo conectado, pero solamente una conexión puede ser establecida si los recursos suficientes están disponibles. Una vez que una conexión es establecida, su calidad (esto es, sus características de latencia y ancho de banda) pueden ser garantizadas. Está hecha para ser estratificada sobre, RDSI-BA,conforme la NormaCCITT 1.150, pero puede ser implementada como una red de conmutaciónATM pura (llamada también modo nativo). En ambos casos, el medio de transmisiónpara el quese ha diseñadoes la fibra óptica, permitiendo anchos de banda de varios gigabits por segundo con latecnología de fibra actual. RDSI-BA ha sido diseñada para soportar un amplio rango de servicios con varias velocidades.Estos incluyenvoz (32 Kbps.), fax, servicios de sistemas distribuidos, video, televisión de alta definición (100-150 Mbps.). Para la implementación de ATM sobre RDSI-BA, la norma ha seleccionado velocidades de transferencia de datos de 155 Mbps., pero también es recomendada una velocidad futura de622 Mbps.. El servicio ATM puede ser visualizado en tres capas como se muestra en la Figura 9. La capa de adaptación ATM está ideada paraproporcionar interacción con protocolos de alto nivel tales como TCPAP y X.25 sobre la capa ATM. La capa debería ser capaz de proporcionar varias funcionesdeadaptación diferentes para una seriede requerimientos de diferentes organizaciones. Incluirá algunas funciones comunes tales como ensamblado y desensamblado de paquetes para usaren laconstrucción específica de protocolos de capas superiores. 70 Implementación de un shell remoto Fundamentos de redes de computadoras MENSAJES CAPAS Aplicación Protocolos de capas superiores I Capa de adaptación ATM I CapaATM I les ATM Figura 9. Capas del protocolo ATM. La capa ATM proporciona unservicioorientado a conexión que transmite paquetes de longitud fija llamados celdas. Una conexión consta de unasecuenciade canales virtuales (VC)dentrode caminos virtuales (VP). Uncanal virtual es una asociación unidireccional lógica entre dos puntos extremos de un enlace en la ruta física desde el fuente hasta el destino. Un camino virtual es una Bnvoltura”de canales virtualesque estánasociadoscon un camino I físico entre dos nodos de conmutación. Los caminos virtuales están hechos para soportar conexiones semipermanentes entre pares depunto extremos. Los canales virtuales son colocados dinámicamente cuando se establecen las conexiones. Los nodos en una red ATM pueden jugar tres roles distintos: 1 . Anfitriones que envían y reciben mensajes. 2. Conmutadores VP que mantienentablasquemuestran caminos virtuales entrantes y salientes. 3. Conmutadores V P N C quemanejantablassimilares canales virtuales. la correspondencia entre tanto para caminos como para En ATM una celda tiene una cabecera de 5 bytes y un campo de datos de 48 bytes (Figura I O ) . El campo dedatos siempre es enviado completoaún cuando sólo esté lleno con datos parcialmente. L a cabecera contiene unidentificador parauncanal virtual y unidentificador para un camino virtual; los cuales juntos proporcionan la información requerida para enrutar las virtual celdasa través de la red. El identificador de camino virtual se refiere auncanal especifico dentro del camino virtual. Otros campos de la cabecera son usados para indicar el tipo de celda, si se pierde la celda, prioridad y la frontera de la celda. Universidad Autónoma Metropolitana. Unidad lztapalapa 71 Capítulo 2 < ldentificador del camino virtual Cabecera: 5 bytes _______j ldentificador del canal Banderas virtual 53 bytes . Datos > Figura I O . Estructura de una celda ATM. Cuandounacelda llega a un conmutador VP, el identificador delcamino virtual en la cabecera es buscado en su tabla de enrutamiento para preparar el identificador del camino virtual correspondiente para el camino físico de salida (ver Figura 11). El conmutador VP pone el nuevo identificador de camino virtual en la cabecera y entonces transmite la celda en el camino físico de salida. Unconmutador VPNC puede ejecutar un enrutamiento similar en ambos, el identificador de caminovirtual y en el identificador del canal virtual. Note que los identificadores de camino virtual y de canal virtual son definidos localmente. Este esquema tiene la ventaja de que no son necesarios identificadores de red área ancha Un esquemade locales, en cuyocaso sería necesariousarnúmeros muy grandes. direccionamiento global podría introducir gastos administrativos y requeriría cabecerasde celdas y las tablas en los conmutadores mantendríanmás información. VPI = ldentificador del camino VPI = 2 VPI = 5 Entrada Salid " " " " " " " Camino virtual1 " " " " " " " " " " " " " " E C a n a l e s virtuales Figura 1l . Conmutación decaminos virtuales en una red ATM. ATM proporciona un servicio con baja latencia (el retardo de conmutación sería alrededor de 25ps por conmutador, dando por ejemplo unalatencia de 250 ps cuando un mensaje pasa a través de 10 conmutadores).Comparar esto con los requerimientosderendimiento estimados para un sistema distribuido 72 " Implementación de un shell remoto Fundamentos de redes de computadoras REDES DE ORDENADORES Prentice Hall HispanoamericanaS.A. [1991] Andrew S . Tanenbaum Págs. 3-6. LAS REDES DE COMPUTADORAS Monografía [I9941 Ricardo Marcelin Jiménez Orestes Téllez Analco Rubén Vázquez Medina Págs. 2-4, 7-17. SISTEMAS OPERATIVOS. CONCEPTOS FUNDAMENTALES Addison-Wesley Iberoamericana [I9941 Abraham Silberschatz James L. Peterson Peter B. Galvin Págs. 452-456. DISTRIBUTED SYSTEMS. CONCEPTSAND DESIGN Addison-Wesley Publishing Company [1994] George Coulouris Jean Dollimore Tim Kindberg Págs. 66-69, 75-84. I I Universidad AutónomaMetropolitana. Unidad lztapalapa 73 CAPÍTULO 3 EL SISTEMA OPERATIVO UNIX 1 I EL SISTEMA OPERATIVO WNlX [TOMADO Y ADAPTADO DE Coffin, Peterson y RiffletI3 Características del sistema UNIX: Herramientasdesoftware. Los problemas pueden ser resueltos y las aplicaciones creadas mediante la interconexión de unas cuántas piezas simples, las cuales realizan bien y completamenteuna tarea. Enel dominio de desarrollo, las subrutinasempaquetadasse combinanpara formar nuevos programas ejecutables (este conceptobásicosedenomina reutilización de software). Porfabilidad. El sistema UNlX ha sido trasvasadoa casi cualquier computadora de tamaño moderado o grande. El aumento en el potencial de proceso en las microcomputadoras, hace natural la aplicación del sistema UNlX a dichas máquinas. Generalmente se reconoce queel sistema UNlX proporciona el entornoadecuado para permitir el fácil traslado de aplicaciones desde micro hasta maxicomputadoras, independientemente del tipo y antigüedad entre las arquitecturas de las máquinas y las diferentes versiones del sistema UNIX. Flexibilidad. UNlXes muy flexible para los creadores de hardware y software: se ha adaptado a aplicaciones tan diversas como automatización de fábricas, sistemas de conmutación telefónica y los juegos personales. Se extiende fácilmente añadiendo funciones y órdenes a paso rápido, y se le considera un banco de trabajo” paralas aplicaciones en general. Potencia. Tiene una sintaxis de órdenes clara y concisa, lo cual permite realizar muchas cosas rápida y sencillamente. Es extremadamente potente (posiblemente el sistema operativo más potente). Mulfiusuario y multifarea. UNlX es un entorno multitarea de tiempo compartido, por lo cuál se puede hacer más de una cosa a la vez. También es un entorno multiusuario que soporta las actividades de más de una persona a l a vez (cientos de usuarios). Elegancia. Una vez que los usuariosentiendenalgunos de los conceptosbásicos sistema UNIX, pueden realizar muchas y grandes tareas de un modo sencillo y elegante. del Orientación a red. Las versiones modernas de UNlX están organizadas para un uso de red fácil y funcional. El sistema UNIX proporciona herramientas internas de comunicación, fácil aceptación de rutinas de dispositivos de bajo nively organización flexible de ficheros. Capítulo 3 EL SABER Y LA CONTROVERSIA QUE RODEAN AL SISTEMA UNlX Los “entusiastas” de UNlX alaban su elegancia, potencia y flexibilidad, y son comúnmente expertosencomputadoras.Los principiantes deUNlXsongeneralmente sus “enemigos” y critican su sintaxis mínima, los extraños nombres de sus órdenes, su documentación escasa y la complejidad desu administración. El sistema UNlX está orientado en principio a usuarios expertos, sin embargo en las últimas versiones de UNlX se ha manifestado la preocupación por los usuarios novatos, incorporando mejoras en las siguientes áreas principalmente: Robustez. El sistemaUNlXha sido endurecidodemodoque se requiere muy poco mantenimiento de software para mantener el sistema ajustado y operando al máximo. Se han automatizado muchastareas. Consistencia. Las órdenes han evolucionado para adodtar una sintaxis más consistente. Agentesdeusuario. Seproporcionangeneralmenteherramientas ayudar a laconfiguración y administración del sistema UNIX. simplificadas para Nuevas características.Muchas capacidades y órdenes nuevas se han introducido en el sistema UNlX en las últimas versiones: nuevas características y una, nueva organización del sistema para soportar conexiónen red;. el entornode desarrollo ha sido mejorado y está creciendo el soporte para procesamientocompartido en múltiples máquinas. lnteroperabilidad. Las interfaces binarias de aplicaciones (AB0 y la interfaz de sistema evolucionarásegún vías programación de aplicaciones (AM) aseguranqueel predecibles. Por lo tanto, los programadorespueden confiar enque sus inversiones en productos de software mantendrán su valor. El sistema UNlX se está desplazando hacia un mayorcompromisoconelestándar internacional POSlX desistemas operativos, el cual proporciona un conjunto mínimo de funciones. Cornparfición del sistema operativo. La compartición de sistemas operativos significa que las capacidades multitarea del sistema UNlX pueden ser utilizadas para ejecutar MS-DOS entero (o el FINDER de Macintosh) como un proceso bajo el sistema UNIX, permitiendo así quetodas las funciones“subordinadas”del sistema UNlX se ejecutenmientrasestén ejecutándose programas enel otro sistema operativo. LA FILOSOFíA TRAS EL SISTEMA UNlX El principio fundamental de UNIX, fue diseñar órdenes que sólo hicieran una cosa, pero que la hicieran deforma simple, silenciosa y bien. Porejemplo, unaordenparaconcatenar y visualizar ficheros, no debería tratar de paginar la salida o de imprimir los ficheros sobre una impresora. 78 Implementación de un shell remoto El sistema operativo UNlX I Como consecuencia de implantar esta filosofía se tienen los siguientes efectos importantes: 1. La salida dealgunadelasherramientas (órdenes de propósito simple) debe ser canalizada a la entrada de otras herramientas. De esto surge el concepto de cauce de órdenes. 2. El desarrollo de nuevas órdenes y otras aplicaciones fue mucho más fácil que en otros sistemas operativos, de modoqueUNlXhaexperimeqtadoavances y crecimiento substanciales, facilitando el desarrollo y mantenimiento de software. 3. El sistema UNlXcontiene un grannúmero de órdenes de propósito sencillo. Las dificultades asociadas a la existencia de muchas órdenes están más que equilibradas con la flexibilidad y potencia que el planteamiento de las herramientas proporciona. EL SISTEMA UNlX MODERNO El sistema UNlX esmásgrande y complejo que MS-DOS u OS12,sin embargoofrece muchas características que dichos sistemas operativos no ofrecen. La filosofía de “hacer una cosa bien” en el sistema UNlX primitivo se ha perdido hasta cierto punto en las versionesmodernas, y las órdenesactuales contienen un grannúmerode opciones y controles; por tanto, aunque. las órdenes pueden ahora ser más difíciles de utilizar, también pueden ser adaptadas a nuevas situaciones sin cortosiones o ineficiencias. El sistema UNlXestá orientadoprincipalmentea terminales basadas en cardcfer. Se requiere un software especial denominado sistema de ventanas X para hacer que el sistema UNlX funcione con pantallas gráficas de cada mapa de bits. En consecuencia la mayoría de herramientas y procedimientos son orientados a líneas de órdenes y las herramientas de ratón y menús que utiliza la pantalla gráfica están apenas apareciendo masivamente. Por otra parte, elsistema UNlX permite a un usuario invocar una máquina remota desde un terminal barato, sobre líneas telefónicas baratas. El sistema UNlX va contra la tendencia actuallde hacer los sistemas operativos “invisibles” al usuario. La interfaz deusuario orientada a la ventana y menús ayuda a ocultar las órdenes, los sistemas de ficheros y las herramientas administrativas del usuario. Ahora, aunque el en sistema UNlX se han preparado herramientas tales como los agentes del usuario para aislar a este de muchas complejidades del sistema operativo, se piensa que mientras más consciente se es de las funciones internas del sistema, mejor se pueden controlar en beneficio propio y para mejorar suproductividad. Universidad Autónoma Metropolitana. Unidad lztapalapa 79 Capitulo 3 HISTORIA DEL SISTEMA UNlX * Los avances importantes en el sistema UNlX no han venido principalmente de discusiones burocráticas, sino más bien de lasnecesidades y la creatividadde los usuarios. El sistema UNlX fue diseñado por un grupo de personas que eran representantes de AT 8, T. Ken Thompson y Dennis Ritchie construyeron el sistema basado en un diseño que ellos mismos elaboraron junto con Rudd Canaday. Como muchos de los mejores proyectos, este comenzó con la creaciónde un juego. El nombre UNlX fue pronto aplicadoa los resultados, ya que su trabajo era una simplificación delsistema MULTICS. La implementaciónoriginalfuecodificada en lenguaje ensamblador, peropronto se desarrollóel lenguaje de programaci6n C dentro delgrypo, comenzando en 1971. Casi inmediatamente, el lenguaje C fue utilizado en la continuación del desarrollo del sistema UNIX, y en 1973 se recodificó el núcleo en C. Este fue el primer intento de codificar un sistema operativo completo en un lenguajede alto nivel, aumentando su portabilidad. , En estos mismos años se introdujeron las herramientas de procesamiento de texto que posteriormente dieron lugar a troff. El primer cliente de UNlX fue la oficina de abogados de patentes de los laboratoriosBELL, y AT & T comenzó a soportar el proyecto interno dentrode los laboratorios BELL, en la familia de máquinas PDP. Simultáneamente,AT & Tremitió numerosas copias del sistema UNlXatodaslas universidades del mundo y una generación completa de informáticos aprendió su profesión, a finales de los setenta, con el sistema UNIX. Aparecieron innovaciones eimplementaciones como la BSD (Software DistribuidoBerkeley) en la Universidad de California en Berkeley. A finales de los setenta, AT & T introdujo un nuevo esquema de denominación para su versión en UNIX. Las versiones más recientes se denominan sistema V revisión 3 y sistema V revisión 4 que se abrevian como SVR3 y SVR4, respectivamente. A finales de los setenta y comienzo de los ochenta, una o ambas versiones BSD y AT & T fueron portadas a casi todas las computadoras con potencia para soportarlas. Hoy en día se puedenadquirir versiones de UNlXparalas mayores supercomputadoras, lasmáquinas centrales más ampliamente utilizadasy casi todas las minicomputadoras. Las versiones BSD fueron plataforma dominante para experimentación en conceptos de red, por lo que algunas de las mejores redes de área local están disponibles para el sistema redes de área extensa, el ARPANET, fue UNIX. El primerexperimentoimportanteen principalmente orientada hacia el sistema UNIX. El NFS (Sistema de Ficheros de Red) creado por Sun Microsystems, y el RFS (Compartición Remotg de Ficheros), creado por AT & TI son los productos finalesde esta evolución. AI incrementarse en velocidad y potencialas microcomputadoras y disminuir su costo, estas máquinas se han desplazado al rango del sistema UNIX. 80 Implementación de un shell remoto I El sistema operativo UNlX Cuando los sistemas SVR3 y SVR4 estuvieron disponibles en máquinas dearquitectura PCAT a finales de los ochenta, la popularidaddel sistema UNlX dio un gran paso hacia adelante. Lasmáquinas 80386 de tipo AT proporcionabanciertamente un entornoasequiblepara el sistema UNIX, y más de la mitad de los sistemas UNlX que corren hoy en día utilizan esta popular computadora. Otro paso importante ha sido la aparición del sistema de ventanas X como pieza de amplia aceptación del sistema UNIX. Otros sistemas de ventanas orientadas a ratón fueron creadas Apollo, perocomoestándarde la industria no en el entorno del sistema UNlXporSuny propietaria, X ha dominado. Recientemente, los laboratorios BELL AT & T han desarrollado una nueva versión genérica denominada Edición Décima, o sistemaUNlX de investigación. Esta versión no se vende comercialmente, perose ha distribuido a universidades. En las últimas revisiones de SVR3 se inició una mezcla de las tres variantes principales del sistema UNIX, y esta convergencia está casi a punto de terminar en SVR4. Hoy día, como resultados de los acuerdos entre AT & TI Sun Microsystems y Microsoft, los sistemas BSD y XENIX estánfundidosdentro del sistemaV. Esteproducto tombinado” también permite compatibilidad de código objeto entre variantes producidas parael mismo tipo de máquina. A la vez que se producía la fusión de BSD y el sistema VI otros vendedores de UNlX se preocupabandehacer otro tanto en elmercadodeAT & T y SunMicrosystems.Estos vendedores (principalmente IBM, Hewlett-Packard y DEC) fundaron un consorcio llamado la Fundación de Software Abierto (OSF). En respuesta AT & T y su grupo han formado UNlX International, para normalizar y dar a la publicidad revisiones del sistema V en la década de los noventa. Algunas compañíasparticipan en varios grupos. Apple Computer ha adaptado SVR4 para su familia de computadoras Macintosh, de modo similar a como MS-DOS hasido incorporado enlos productos Merge y Simultask. I La potencia del sistema UNlX para acomodarse a diferencias en hardware se ilustra bien con la aparición de las Computadoras De Repertorio de Instrucciones Reducido (RISC) a máquinas RISC hanadoptadoel sistema principios de los noventa. Virtualmentetodaslas UNIX. Como resultado, lasmicrocornputadorasmás rápidas y mejores disponibles hoy, son máquinas RISC. Con el avancede la décadade los noventa, el desarrollo más significativo serán las características de multiproceso que permiten a las máquinas contener más de un chip de CPU central (sistemas distribuidos). Lossistemas multiproceso seránciertamente un factor importante en la vida de SVR4. Lasideas y herramientasde éxitoquese originen enunode los sistemasserán eventualmente adoptados por el otro, pero probablemente no de inmediato. Esto mismo es cierto para otros sistemas operativos. Las innovaciones en MS-DOS, OS/2, NeXT, el entorno de Macintosh y las versiones IBM16000 del sistema UNlX están con frecuencia disponibles Universidad Autónoma Metropolitana. Unidad lztapalapa 81 Y Capítulo 3 comopaquetesañadidospara SVR4. . LA VERSION SVR4 La versión SVR4 es la versión más actualizada del sistema UNlX de A T & T. Muchas de las características novedosas son principalmente de interés para creadores de software y administradores del sistema, pero la mayoría,sona nivelde usuario enaplicaciones más fáciles,másrápidas,mejores, o menoscaras.Algunasdelasmás importantes sonlas siguientes. Soponte de conexión en red. La mejora más importante de SVR4 es la adición de soporte completo para redes de área local. Tanto el sistema RFS de A T & T como el sistema NFS estándar en la industria para redes, soporta SVR4. La administración remota es posible ahora a través de la red. Las herramientas de multiproceso (que se añadirán posteriormente) pronto permitirán que las máquinas conectadas en red compartan sus cargas de trabajo. Unificación. SVR4 hadadopasos importantes hacia la unificación de las diferentes versiones del sistema UNIX (especialmente BSD y XENIX). Esto permite a los programadores y crear aplicacionesparauna versión del sistema envezdemuchasversionesseparadas diferentes. 1 El entorno de desarrollo en lenguaje C ha sido ampliamente mejorado en SVR4. Existe un nuevo compilador C que cumple la norma ANSI y que funciona significativamente mejor que las versiones más antiguas. Nuevoentornodedesarrollo. /nternaciona/izacic)n.El lenguaje de los mensajes del sistema, los convenios de fecha y moneda, y otras variantes locales están incluidas por el sistema por primera vez. El sistema se acerca globalmente al cumplimiento de los estándares internacionales para sistemas operativos. Sistema de ventanas X. SVR4 incluye la interfaz gráfica X. Órdenes o Comandos. S e han añadidomuchasórdenesnuevas “tradicionales”del sistema UNIX. y características Sisfema de ficheros virtual. El esquema VFS (Sistema de Archivos Virtual) permite que numerosos tipos de sistemas de ficheros diferentes sean utilizados simultáneamente, y se han incluido mejoras, incluyendo la eliminación del antiguolimite de catorce caracteres para los nombres de ficheros. Procesos en tiempo real.E n SVR4, un nuevo sistema de planificación permite procesos aplicaciones desde en tiempo real y rnicrofemporizadores, ampliando el rangocompletode sistemas de tiempo compartido multiusuario hasta controladores dedicados al alto rendimiento. 82 lmplementación de un shell remoto El sisterrla operativo UNlX Configuración e instalación mejoradas. En el futuro, debería ser más fácil instalar un nuevo sistema y añadir nuevohardware y paquetes de software a un sistema existente. Seguridadmejorada. Laseguridad sistema UNlX satisface ahoramuchasde Estados Unidos. del sistemaha sido extensamente mejorada y el las exigencias de seguridad delgobiernode los 1 TEMAS AVANZADOS ’ Un sistema SVR4 requiere significativamente másmemoria real y discos rigidos mucho mayoresqueSVR3u otras versiones. En contrapartida, SVR4 entrega un sistema actual, nuevas características de red y mejor soporte de herramientas de administración y desarrollo. Requerimientos para microcomputadoras Generalmente, una máquina SVR4requiere al menos 4 MB de memoria real (RAM) y 80 MB de espacio en disco rígido rápido. El almacenamientotemporal de disco duro, seefectúa generalmente por paginación. Un sistema UNlX totalmente configurado puede contener más de40 MB de programasalmacenados y datosasociados. Existen más de 2000 órdenes distintas, y alrededor de 6000 ficheros directorios en SVR4; el software añadido tal como el entorno de desarrollo C estándar y los diferentes paquetes de red consumen casi un cuarto del espacio de disco total. Sin embargo, es aconsejable disponer de al menos 80 MB de espacio de disco rígido antes de cargar un sistema SVR4. Se requiere una memoria real grande, ya que el nljcleo del sistema UNIX que reside en memoria y media en todas las conexiones entre los programas del usuario y el hardware de la máquina, consume más de 1 MB por sí mismo. La arquitectura incluye muchos buffers. Algunossistemas UNlX grandes configurados para altas prestaciones conmuchos usuarios simultáneos tienen más de 40 MB de memoria real. Ensamblaje de un sistema unix Generalmente, un sistema operativo se elige sobre la base de las aplicaciones que están disponiblespara prestaciones con muchosusuariossimultáneos tienen más de40 MB de memoria real; sin embargo, el entorno del sistema UNlX anima a la realización de modificacionesy mejorassobre parte del software del sistema básico, y hay disponibles muchos paquetes software que sustituyen a subsistemas importantes. Universidad Autónoma Metropolitana. Unidad lztapalapa 83 Capítulo 3 Los vendedores individuales con frecuencia han añadido o modificado el sistema bien para personalizar el producto, o simplementeporquealgunaorden o subsistemapodía ser mejorado. Esto ocurre confrecuencia en tres áreas: 1. Los programadores individuales o usuarios tienden a 'tecolectat'versiones de órdenes que prefieren a las órdenes estándar. Estosprogramasamedidaaparecencon frecuencia en las revisiones que se pueden adquirir. 2. El sistema de ficheros se reorganiza frecuentemente, dándose varios cambios, como en los nombres de ficheros de dispositivos. 3. Los vendedores de UNlX suelenproporciondrherramientaspersonalizadaspara administrar el sistema. Con esto se gestiona más fácilmente la máquina, pero parte de la flexibilidad y potencia incorporadas en las herramientas originales manuales se pierde. Estos agentes de usuario suelen diferir notablemente unos deotros. En general todos los aspectos de UNlX cambian con eltiempo. Lasórdenes y herramientasestándarque se aparecen aquí son los estándaresque aparecen en la base de transporte del sistema V Versión 4, tal como lo entrega AT 8, T para máquinas PC-AT 80386 y 80486. Nota sobre compatibilidad BSD y XENIX Históricamente las versiones BSD han sido significativamente diferentes de las versiones delsistema VI sin embargo SVR4 está efectuando un serio intento de incorporar las características de éstas dosversiones. Las herramientas BSD y XENIX disponen de paquetes de compatibilidad especiales que permiten a los administradores del sistema permanecer en el sistema V o añadir los paquetes de compatibilidad. La compatibilidad de XENIX ha sido más fácil de lograr que la compatibilidad de BSD. , TUTORIAL 1. AI final de este capítulo, se debería ser capaz de entrar y salir al sistema UNlX sin dificultad. 2. Los tipos de terminales para los cuales se proponela sesión de éste capítulo pueden ser de varios tipos: una consola del sistema, un terminal orientado a carhter conectado directamentea un puerto RS-232 en la máquina, un terminalremoto conectado vía 84 -_I. Implementación de un shell remoto _~ El sistema operativo UNlX . -.. " -. - ." . .-. " telefónica y módem, o un terminal conectado a través de una red de área local(LAN). Debido a que el sistema UNlX fue desarrollado originalmente para terminales de impresión 'tontos'; gran parte del sistema sigue suponiendo terminales orientadas a carácter y las etapas iniciales del acceso al sistema requieren de tal terminal. La versión del sistema UNlX disponible en países de habla inglesa utilizaelconjuntode caracteres ASCII. Para usar el sistema de ventanas X, la interfaz usual orientada a ventanas, es preciso estar en la consola del sistema o en un terminal inteligente orientado a red. En primerlugar puede ser necesario presionar la tecla RETURN o ENTER para despertar al sistema. AI hacerlo se verá el inductor de presentación, que es como éste: Welcome to the AT&T 386 System name: mi-sis UNIX System login: Si no aparece el inductor login,algo va mal. Un id de presentación Único identifica a cada usuario que puede conectarse al sistema. Por medio de dicho id de presentación se tiene acceso a ficheros propios y se establece la sesión deacuerdoconlas preferencias que el irsuario haya seleccionado. El administradordel sistema controla las presentaciones permitidas en cada máquina. Las exigencias de unid de presentación es que tenga menos de ocho caracteres y esté formado sólo por letras y números. E n este esquema, los caracteres mayúsculas y minúsculas se distinguen de modo que el id de presentación LUIS no es igual que el id luis. Todos los idsde presentación deberíancomenzarcon un carácter minúscula; sielidde presentación comienza con un carácter mayúscula, el sistema UNlX pensará que se le está llamando desde un terminal que sólo soporta mayúsculas, y funcionará de acuerdo con ésta suposición. Cada id de presentación debe ser Único. El id de presentación es generalmente información pública. Cuando se termine de introducir el id de presentación, presiónese RETURN. Generalmente no se pueden corregir errores de mecanografía en este pupto, ya que el sistema aún no ha hecho la identificación. El sistema UNlX tratael uso de la tecla BACKSPACE, por ejemplo, como una preferencia del usuario. Si se comente u error en la introducción del id de presentación o en la contraseña, se debe completar el proceso; el sistema proporciona otra oportunidad. Después de haber introducido elid de presentación, el sistema UNlX responde solicitando una contraseña individual, como se muestra aquí: Universidad Autónoma Metropolitana. Unidad lztapalapa a5 I Capítulo 3 login: luis Password: Se introduce la contraseña y se presiona RETURN. A diferencia del id de presentación, el sistema no hará eco(no visualiza los caracteres de la contraseña mientrasse tecleen). Si se teclea incorrectamente el id de presentación o la contraseña, (puede ser también un introducido usuario no autorizado), el sistema noinforma si el id depresentaciónfue era la contraseña,perodaunasegunda incorrectamente o si loqueestabaequivocado oportunidad. Se introduce de nuevo elid de presentacióny luego la contraseña. I Cuandoelpar iddepresentación y contraseñaha sido aceptado,apareceránalgunos rótulos y mensajes iniciales. Los mensajes diferirán en cada sistema, pero pueden ser como los siguientes: t UNIX System V/386 Release 4 . 0 M i-si identificaci6n de la mdquina } } } (única para cada sistema). Derechos de copia para el software instalado en una mbquina. Listado del espacio y uso del disco. Mensaje del dfa. Preparado por el administrador del sistema. Puede estar o no presente. Se visualiza cada vez que serealiza una presentaci6n hasta que el mensaje sea modificado o suprimido por el administrador del sistema. news: nuevo-Usuario } YOU Idenlificaci6n del sistema en uso. have mail } t Noticias. Manejadas por el administrador. I Correo electrdnico. Hay un mensaje al menos, procedente de otro usuario en el buzbn. Se verl este mensaje cada vez que se haga una presentaci6n hasta que se suprima el correo. A diferencia de la lectura de noticias, la lectura de correo no suprime necesariamente el mensaje "You have mail" de la pantalla de presentaci6n. $ } Finalmente cuando el proceso de presentaci6n se completa, el sistema devuelve el control imprimiendo el inductor $ . Cada vez que se visualice el $, el sistema estar5 esperando 6rdenes, las cuales serdn enviadas al procesador de 6rdenes, el s h e l l . LA PANTALLA DEL SISTEMA DE VENTANAS X El sistema de ventanas X para el sistema UNIX, funciona en una terminal o computadora suficientemente inteligente. Aparecerá un sistema deventanasen lugar del inductor $. Generalmente habrá: Un menúWorkspace,que controla la sesióny define las preferencias. Una ventana File Manager (Gestor de Ficheros). Una o masventanas xterm, cadaunaconteniendo el inductor de shell $. Sellaman UNIX. emulador delterminal y permiten usarla linea de órdenes normal del sistema Una ventana Mailbox (Buzón) (xbiff), que muestra que haycorreo a la espera mediante 86 .- " Implementación de un shell remoto -.- , " El sistema operativo UNlX una bandera elevada enel icono del buzón. Una ventana dela hora actual. El sistema de ventanas Xestá controlado porratón y teclado. LECTURA DE NOTICIAS Loprimeroque se puedehacer es leer las noticias, ya que ello puede afectar eluso posterior del sistema. Las noticias se leen escribiendo $ news y presionando luego RETURN. Hay que recordar que los caracteres mayúsculas y minúsculas son diferentes en el sistema UNIX. Cuando se hayan leído todas las noticias, el programa news finaliza y devuelve el control al shell; otro inductor $ recuerda queel shell está listo para obedecer nuevas órdenes. LISTADO DE FICHEROS Tras la presentación, el usuario se encontrará en un lugar específico dentro del sistema de ficheros UNIX, llamado directon'o PROPlO [HOME]. Este es generalmente el lugar donde se mantendrán los ficheros y datos privados. Cada usuario tiene un directorio propio personal. Esto permite que diferentes usuarios puedan tener ficheros con los mismos nombres sin que ello sea causa de problemas. Se pueden listar los nombres de ficheros privados con la orden Is (por listar). No hay límite con respecto al número deficheros permitidos dentro de un directorio. En el sistema UNlX si no hay algo que decir, generalmente el sistema no dice algo. (Por ejemplo: si no hay archivos, se lista nada). 1 La orden IS,como la mayoría de las órdenes de UNIX, tiene varias opciones y posibilidades. Por ejemplo: $ I s -1 total 2 -rw-rw-rw-rw-rw-rw- 1 1 luis luis o t h 1e r3A8p r o t h e r 227 5 1 9 : 3 4 LEEME Apr 5 1 9 : 3 3 nota Universidad Autónoma Metropolitana. Unidad lztapalapa 87 Capítulo 3 La adición de -I (menos ele) dice a la orden Is que genere unlistadolargo (conmás información que Is a secas). -I se llama argumento. A los argumentos que les precede el signo (menos) se les denomina opción. Hay que dejar un espacio tras el nombre de la orden, pero ningún espacio entre el signo y la letra del argumento. - - E n el último listado (Is -I) el primer campo a la izquierda, -rw-rw-rw revela los permisos del fichero; h i s es el propietario del fichero, que pertenece al grupo other. El tamaño del fichero en bytes viene a continuación, seguido de una esfampacibn de tiempo para el fichero, y el último campo de la línea es el nombre del fichero. E n UNlX se utiliza el sistema UNIX. - en lugar de / que se utiliza en MS-DOS; el carácter / tiene otro uso en S e puede consultar el Manual delusuario de UNlX, la principal referencia del sistema UNIX, para conocer la sintaxis exacta de todos los argumentos de todas las órdenes. VlSUALlZAClbN DE UN FICHERO S e utiliza laorden siguiente: cat (por concatenar ficheros) para yisualizar los ficheros del modo $ cat n o t a (Nota es el nombre del fichero a visualizar). Los nombres de los ficheros son generalmente argumentos sin o algún otro marcador de argumentos. - SUPRESIóN DE UN FICHERO Para suprimir un fichero se utiliza la orden rm (por remover), como en el siguiente ejemplo: $ $. rm n o t a S e ha suprimido el fichero nota. E n el sistema UNlX no hay modo de recuperar un fichero una vezqueha sido suprimido con rm. Puede utilizarse la orden rm -i nota (la -i es por interactivo) para recibir una confirmación antes de suprimir el fichero: $ rm -i n o t a rm: remove n o t a(:y / n ) ? 88 Implementación un deremoto shell El sistema operativo UNlX Se introduce y si se desea suprimir el fichero y cualquier otra cosa si no se desea suprimir Sepuede interrumpir la ejecución de la ordenmientras ésta esperasurespuesta sise desea regresar al shell directamente; para haceresto se presiona la tecla DEL o B A C K S P A C E en el teclado. Esta acción de ruptura puede ser aplicada a casi cualquier orden UNlX que este esperando entrada. También puede utilizarse ésta técnica para detener órdenes que están generando demasiadasalida o que parezcanestar “colgadas”. LECTURA DE CORREO x El correo electrónico es similar enfuncionamiento al correo que se recibe de la oficina postal: permitecomunicación entre usuarios, cadapersona tiene una dirección de correo única, y cada mensaje tiene un sobre y un contenido. Se puede leer la orden de correo con la orden mail. Esto instruye al shell para que ejecute la orden mail, la cual busca en el buzón del usuan’o y muestra cada mensaje porturno en el terminal, como en éste ejemplo: $ mail From jim Fri Apr Bienvenido luis 6 18:24 MST 1990 ? La primera línea de este recado por correo se conoce como timbre. Informa que el mensaje proviene de jimy que fue enviado un viernes 6 de abril, a las 18:24 MST 1990. El inductor ? le hace saber que el sistema UNlX está esperando una elección acerca del mensaje de correo. Se puede suprimir el mensaje (pulsandod), pasar al siguiente mensaje (si lo hay), salvar el mensaje enun fichero, o tomar una deotras acciones. I En el sistema de ventanas X, la bandera baja después de suprimir el mensaje de correo y se levanta de nuevo tan pronto como llegue nueva correspondencia. Introduciendo ? en el inductor ?, se obtiene ayuda de todas las acciones disponibles con el inductor ? ENViO DECORRESPONDENCIA Para enviar correspondencia la orden mail se utiliza como se muestra en seguida: $ mail jim jim es el id de presentación del destinatario del correo. La mayoría de las órdenes del sistema UNlX utilizan al id de presentación para referirse a los usuarios, en vez del nombre real del Universidad Autónoma Metropolitana. Unidad lztapalapa 89 Capítulo 3 usuario. AI igual que la mayoría de las órdenesUNIX, mall permite más de un argumento: luis jim $ mail 4 Para enviar elmismo mensaje tanto a jim como al usuario mismo. Si se introduce esta orden, el programa mall comenzaráa ejecutarse y luego se detendrti, esperando que se escriba el mensaje decorreo. S e puedeusar la tecla BACKSPACE para corregir errores, siempre y cuando no se haya presionado la tecla RETURN (lo cual significa que el sistema ha aceptado la entrada). Para finalizar el texto se presiona CTRL-D. Si no hubo errores, el programa mail envía silenciosamente el mensaje y luego regresa al shell aesperar una nuevaorden. L a ausenciade noticiassignifica generalmente buenas noticias y se puede suponer generalmente que si una orden actúa silenciosamente y regresa al shell sin mostrar un mensaje de error es que probablement se ha completado con éxito. e El shell examina el buzón para determinar si ha llegado nueva correspondencia. Como el sistema UNlX es un sistema multitarea, varias cosas pueden estar ocurriendo en el sistema al mismo tiempo. QUIÉN ESTÁ PRESENTE El sistema UNlX proporciona herramientas que permiten ver quién más está presente en las terminales y proporciona cierta idea de lo que están haciendo. Los usuariosdeuna máquina pueden comunicarse fácilmente unoscon otros y pueden compartir ficheros si es necesario. El sistema UNlX proporciona excelentes herramientas para los idsde presentación de usuarios, los ficheros y identificar elstatus deseguridadde programas administrativos del sistema, y los ficheros individuales. Es posible ver quién está actualmente presente en la máquina utilizando la orden who: $ who jim luis console ttyos Apr Apr 7 7 14:O5 . 16:41 $ La salida anterior informa que hay dos usuarios actualmente presentes en el sistema, jim y el usuario mismo (luis). Además que informa a jim está en la consola y el usuario en el terminal remoto ttyos. El resto de la línea informa la fecha y hora en que cada usuario se presentó al sistema. En 90 un sistema UNlX grande puedehabermás Implementación de de un centenar de usuarios presentes un shell remoto al El sistema operativo UNlX mismo tiempo; en máquinas más pequeñas puede haber unosólo. CAMBIO DE CONTRASEÑA El par id de presentación y contraseña forman la clave de seguridad delsistema UNIX. Si eladministrador del sistema estableció el,iddepresentaciónnuevo sin contraseña, probablemente no se verá el mensaje Password:cuando se presente; se obtendrá acceso al sistemadirectamentedesde el inductor login:. En éste caso se debería añadir una contraseña tan pronto como sea posible. El sistema de contraseñas de usuario está diseñado de modo que nadie puede saber la contraseña de otro usuario, a menos que se le diga. Lo Único que el administrador del sistema puede hacer para restaurar una contraseña perdidaes suprimir la contraseña actual y asignar una nueva. Generalmente el sistema exige que las, contraseñas tengan al menos seis caracteres y contengan al menos un dígito u otro carácter no alfabético. La orden passwd permite el cambio de contraseña. Si durantealgúnpasoen la introducción deunacontraseña se produce un error, el programa passwd terminará y regresará al shell. En todo caso da dos oportunidades. Si se presiona DEL en un pasointermedio, permanecerá vigente la contraseña actual. I DESPEDIDA Cuando se acabe de utilizar el sistema, se le deberá informar que se ha terminado. A este despedida [logging out]. Cuando alguien se despidese libera la procesoseledenomina terminal. Despedirse de la terminal es una buena práctica. LOS dos factores más importantes para mantener la seguridad de un sistema UNlX son mantener las contraseñas seguras y'despedirsedel sistema siempre que se encuentre alguien ante el terminal. El procedimiento de despedida será diferente dependiendo de si la sesión 'se inició en el sistema de ventanas X o no. En el primer caso se deberá seleccionar el menú Workspace, y si es necesario se confirma la salida (exit) con una ventana deaparición [pop-up]. No hay que confundir la introducción de la orden exit dentro de una ventana xterm, (que Universidad Autónoma Metropolitana. Unidad lztapalapa 91 Capítulo 3 finaliza unaventana,nouna sesión); conla introducción delaorden exit en el menú Workspace. El sistema UNlX proporciona dos modos de despedirse del shell. Primero introduciendo la orden exit, la cual detiene la ejecución del shell,se reinicializa y devuelveal inductor de presentación inicial. Se puede apagar el terminal o presentarse de nuevo. Un método alterno consiste en presionar CTRL-D. Ésta es la marca de fin de fichero y el shell la interpreta como una señal de despedida. Algunos sistemas UNlX están configurados de modoque al apagar el terminal o la consola también se despide el usuario del sistema. Generalmente las terminales conectadasa la máquina mediantelíneas telefónicas y módems actúan deésta manera. MISCELANEA I En un terminal las órdenes u otras líneas de texto se finalizan presionando RETURN. En la jerga del sistemaUNIX, el símbolo utilizado para finalizar una línea de texto es el carácter nueva-línea. En lo sucesivo el término nueva-línea indicará la tecla fin-de-linea. Generalmente en un terminal la tecla RETURN actúa como nueva-línea, pero de hecho el carácter ASCIIpara nueva-líneaes el .carácter cambio de línea [linefeed]. Como ejercicio presionar CTRL-J (cambio-de-linea) al acabar unalínea de texto. Control de la salida al terminal. A veces sucederá que la salida de una orden contiene más líneas de las que la pantalla (o la ventana xterm) pueden visualizar. En éste caso la salida se deslizará. Hay dos herramientas que ayudan a controlar la salida. Primero usando la orden more y ensegundo lugar basta presionar CTRL-S paraque la salida se detenga inmediatamente y CTRL-Q para que se reanude; hay que asegurarse deutilizar CTRL-1 la Mima vez o el terminal parecerá estar congelado. ARCHIVOS Y ÓRDENES DE UNlX ÚTILES PARA TRABAJAR CON PROTOCOLOS Aquí se presentan los principales archivos y órdenes en las que se basa la realización de UNlX y la visión externa que los usuarios del sistema puedan tener de la implantación de protocolos. Por tanto, se trata de archivos de configuración de la red, de órdenes principales de consulta o administración, de procesos demonios necesarios, de órdenes que permiten 92 - Implementación deun shell remotó” ” Ylll-. Y f l El sistema operativo UNlX que unusuariollameaunservicio, y de objetos(estructuras y funciones) que facilitanla esta visión consultade los diferentesarchivos de configuración. Una últimacomponentede concierne a la comunicación entre usuarios de diferentes lugares UNIX. LOS ARCHIVOS DE CONFIGURACIóN N archivo /etc/host.Contiene la información relativa a las diferentes máquinas de la red locala la que pertenece el sistema. Se ha vistoque las máquinas poseenuna dirección una maquina Internet de 32 bits. Es interesantepoderledarunsentidoaladirecciónde cuando se la designa. El archivo /etc/hosts de un sistema contiene la tabla de correspondencia entre la dirección de una redestenombresimbólicocontiene una Internet y unnombresimbólico.Dentro componente unica. A cada máquina de la red le corresponde una línea del archivo etdhosts de la forma siguiente: 132.227.60.2 knuth sun # sun litp El formatoanterior corresponde respectivamente a la dirección Internet (132.267.60.2);al nombre oficial (knuth); a una lista de alias (sun) y a un comentario (# sun litp). Cuandose traspasa elcuadrode una red local, los nombressimbólicos se organizan jerárquicamente como una serie de cadenas que designan conjuntos (dominios) cada vez más generales como se verá más adelante. E/ archivo /etc/networks. Constituye la basede datos en las redes conocidas que constituyen la red lógica Internet. Existe una serie de campos que tiene cada uno: el nombre oficial de la red, su dirección Internet y un comentario, por ejemplo: main-net-. litp-ether 132.227 dolores cicrp-net 1.32.227.70 192.33.154 E/ archivo /etc/sefvices.Contiene la lista de servicios Internet conocidos. Un servicio así se caracteriza por su nombre, un número de puerto, un protocolo y una lista de alias. De esta manera se encuentran las siguientes líneas en este archivo: ftp 2l/tcp tftp 69/udp 514/tcp 517/udp shell talk cmd # no passwords u s e r s Este ejemplodescribeserviciosestándar Internet (ftp y tftp) y orientadosa UNlX (shell y talk) que se basan en los protocolos TCP y UDP. Universidad Autónoma Metropolitana. Unidad lztapalapa 93 Capítulo 3 E/ archivo /efc/profoco/s. Proporciona la listade los protocolos conocidos que se utilizan en la red lógicaInternet.Paracadaprotocolodescribesunombreoficial, un númerode protocolo, una lista de alias y un comentario. Por ejemplo: dumny for IF # control message protocol ii tcp # user datagrarr!protocol # I E 1.7 ÓRDENES DEADMINISTRACIóN Un cierto número de órdenes permiten a un usuario cualquiera la obtención de informaciones generales sobre el estado de la red. Las órdenes hostid y hostname. Permitenrespectivamenteobtenerlasdirecciones Internet y el nombre oficial del sistema local. De esta manera se obtiene: < Brumaire > cat /etc/hosts I grep brumaire 132.227.60.51 brumaire loghost .: Brumaire;, hostname brumaire < Brurnaire> hostid Ox84e33c33 # p c r t ufr p7 La orden rupfime.Permite obtener el estado de las diferentes máquinas de la red local. Sólo puede usarse si está activo el demonio rwhod. < Brumaire germinal messidor pluviose > ruptime - a up 2:02, down 5 6 + 2 1 : 4 4 up 20:46, users, load 56. 7 0. 5.5542, , 17 users, load 00. 0 . L00, , 25 La orden ping. Permite probar si una maquina dada está activa las diferentes opciones, se cita -s. < ljrumaire > ping - S ventose Ping ventose: 1 3 2 . 2 2 7 . 6 0 . 1 4 responding < Erumaire > ping - S nivose Ping nivose: Host not responding 0.00 en este momento. Entre La orden arp. Permite visualizar el contenido de la tabla de protocolos ARP, quedala e Internetdelasmáquinasconsultadas correspondenciaentrelasdireccionesEthernet previamente. A continuación se muestra un ejemplo. El sistema operativo UNIX arp -a ethernet ARP table: litp (132.227.60.1) at 2:7:1:0:73:73 trailers germinal (132.227.60.59) at 0:0:84:e3:3~:3b'trailers < Brumaire > Laorden netsfat. Como su nombre lo indica, permiteobtenerinformación sobre la actividad de la red del sistema. Más precisamente, suministra información sobre los diferentes sockets del sistema (puntos de comunicación que se estudiarán más adelante). Sin entrar en detalles, simplemente cadasocket utilizado para comunicarse enla red está unido a un puerto de uno de los protocolos TCP o UDP. Mediante la opción -I, se obtienen estadísticas sobre los interfaces del sistema local (paquetes emitidos y recibidos, errores y conexiones, red conectada y nombre del sistema). Laopción -r aportainformación sobre las tablas de encaminamiento. La opción -a suministra información sobre los diferentes puertos TCP y UDP (además de las informaciones sobre sockets utilizados para la comunicación local al sistema). < Brumaire > netstat -i Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Collis 1500 en0 dolores germinal 1539 lo0 1500 loopback localhost 5146 O O 18437 51463 12 9 O O I LOS PROCESOS DEMONIOS La utilización de servicios estándares (por ejemplo, TELNET o FTP) por un usuario, se realizan por mediación de órdenes(telnet o ftp), que necesitan para funcionar la existencia de procesos particulares (demonios) sobre la mhquina distante. A continuaci6n se presentan los principales procesos demoniossusceptibles de encontrarse enun sistema UNIX. EL SUPERDEMONIO inetd En las primeras implantaciones de los servicios de la red, se lanzaban los demonios de una vez para siempre. Por tanto, esta estrategia conllevaba la creación de un número importante de procesos y su mantenimiento en estado durmiente (en espera de ser solicitados). En las crear versionesmas recientes, un demonio principal (/etc/inetd) es elencargadode automáticamente el servidor correspondiente a un servicio solicitado, este servidor particular termina una vez que el servicio se ha proporcionado. Por tanto, el proceso está a la escucha en los diferentes puertos correspondientes alos servicios disponibles. I El archivo /etc/inetd.conf es utilizado por el proceso lnetd cuando se lanza para conocer el conjunto de puertos sobre los que se tiene que poner a la escucha. Este archivo contiene una línea por servicio, cada línea suministra sucesivamente la siguiente información: el nombre Universidad Autónoma Metropolitana. Unidad'lztapalapa 95 del servicio; el tipo de socket; el protocolo subyacente; una opción wait/no wait que se utiliza para las comunicacionesenmodoconectado (dgram), las otras se utilizan siempre con la opción no wait (la opción wait evita, en el modo no conectado, lacreación de varios servidores a la escucha sobre un mismo puertoy los conflictos que se podrían desencadenar);un nombre de usuario que será propietario del proceso demonio asociado al servicio cuando se cree; la referencia absoluta del archivo que contiene el programa de servicio (la mención "internal " indica que el servicio es interno al proceso inetd); una lista de parámetros para el programa (correspondientes alos parámetros argv[O], argv[l], ...). A continuación se muestran algunosejemplos de líneas contenidas en este archivo: ftp stream tcp nowait root /usr/lpp/tcpip/etc/ftpd ftpd /etc/rshd nowait root rshd stream tcp shell echo dgram udp wait root inter'nal 4 Una propiedad que es interesante del proceso inetd es que es reconfigurable dinámicamente. Cuando recibe la señal número uno (SIGHUP), relee el archivo /etc/inetd.conf antes de ponerse ala escucha. LOS DEMONIOS DE SERVICIOS ESTANDARES N demonio whod. El programa /etc/rwhod dialoga con sus homólogos sobre los otros sistemas, éstos diálogos permiten puesta la al día de archivos en el directorio /usr/spools/rwho, utilizados por los comandos who y ruptime. Estos demonios tienen la responsabilidad de cargar la red y en muchas máquinas no se ejecutan, por lo tanto los comandos rwho y ruptlme no se utilizan en éstas máquinas y las informaciones que les concierne no se transmiten a las otras. Los demonios telnetdy rlogind. Correspon'den a archivos del directorio /etc y permiten el protocolo DARPA de el "login"desde otro sistema. Eldemonio telnetd seapoyasobre terminal virtual mientras que rlogin proporciona un servicio específico UNIX. Los demonios ftpd y tffpd. Son respectivamente,los servidores de los protocolos FTP y TFTP de transferencia de archivos de la familia Internet. El demonio ftpd corresponde a un proceso a la escucha sobre el puertoTCP de número 21, que reconoce un cierto número de órdenes (que leson dirigidas por clientes) tales como: HELP USER PASS XPWD QUIT 96 ayuda en línea especificación un de nombre de usuario I especificación de una palabra de paso impresión del directorio de trabajo sesión de final Implementación de , un shell remoto El sistema operativo UNlX 1 N demonio rshd. Es el demonio UNlX parala ejecución decomandosremotas (por mediación del comando rsh o de la función rcmd ) o la copia de .archivos mediante la orden rcp. I LAS ÓRDENES DE SERVICIOS ESTANDARES La orden felnef. Utilización general del comando telnet: t e l n e [t a n f i t r i ó n[ p u e r t o ] ] Este comando permite establecer una conexión con un puerto TCP dado de una máquina de nombre dado. Si no se especifica ningún número de puerto (es el caso mas común), se establece una conexión con el demonio telnetd sobre el puerto remoto TCP, de número 23. Entonces es posible crear una sesión de trabajo (el conjunto del diálogo se apoya sobre el protocolo de terminal virtual TELNET). En el caso en que nose suministre ningún parámetro, la orden pasa al modo "órdenes" La orden ffp. Este comando constituye el interfaz que se apoya sobre el protocolo FTP de la DARPA. Permite realizar las transferencias de archivos entre el sitio local (se lanza el sistema o la orden) y un lugar remoto. Para realizar una transferencia, es necesario crear una conexión con el servidor ftp de la máquina distante. Entonces es posible realizar las transferencias en los dos sentidos. La f o r m ag e n e r a ld e l comando ftp e s : ftp [-VI [-i] [-n] [anfitrión] Si no se le da un nombre de máquina anfitrióh o si el nombre dado no corresponde a una de las máquinas especificadas en el archivo /etc/host, el proceso ftp pasa al modo órdenes (prompt ftp >). En caso contrario, si es posible se establece una conexión con el demonio ftp de la máquina remota. Se insiste en el hecho de que se tiene que identificar con la máquina remota pero ésta identificación no significa que el usuario cree una sesión de trabajo sobre la máquina remota; no hay creación de un proceso shell en esta máquina. El usuario dispone de órdenes específicas que de formaeventual pueden llevar el mismo nombre que ordenesUNIX. No hay que perder de vista que el protocolo FTP tiende a permitir la transferencia de archivos entre sistemas diferentes. AI principio el usuario tiene que dar unaidentificación y la palabra clave correspondiente (es necesario que haya una palabra de paso) al sistemaremoto. Entonces en éste sistema el usuario, a través de un proceso ftp, posee los derechos de usuario mediante el cual se ha identificado. Universidad AutónomaMetropolitana. Unidad lztapalapa 97 Capítulo 3 I Sin embargo cuando se utiliza la opción -n, se lanza en el transcurso de la conexióninicial un proceso inicial de "auto-login". E n el transcurso de esta fase se consulta el archivo .netrc del directorio privado del usuario (en la máquina local). Este archivo contiene información de la forma siguiente separadas por espacios, tabuladores ó caracteres fin de línea: máquina anfifrión identificación de una máquina remota. Si la máquina dada como parámetro de ftp aparece en una especificación de éste tipo en el archivo .netrc, se explota la información que siguen en el archivo (hasta el final de archivo o la especificación del mismo tipo); login nombre identificación de usuario que se utiliza por defecto; password cadena especificación de una palabra de paso. El archivo solo puede ser legible para el usuario. Las órdenesgenerales, permitenconsultar o modificar las características generaleq del comportamiento del proceso y de las transferencias. tipo de transferencia por defecto para los archivos ASCII; para materializar cada fin de transferencia mediante AG; para la transferencia de archivos binarios; by e para cerrar la conexión y terminar el proceso ftp (<eof>tiene el mismo efecto). close para cerrar la conexión actual; disconnect proceso (el ftp no ha terminado); glob para volver activo el mecanismo de expansión de nombres para los comandos: mdelete, mget y mput; help para obtener una ayuda línea en (mismo efecto que ?); open anfifrión[puerto] para establecer una conexión con la máquina anfitrión (eventualmente en el puerto especificado); prompt Interruptor correspondiente a la peticiónho petición de confirmación en el caso de órdenes multiples; user nombre [contraseiia] paraidentificar en el sistema distante bajo el nombre dado mediante la palabra clave especificada; status para fijar las características del proceso ftp; verbose pasar para al modo "verbal". ascii bell binary LAS ORDENES DE SERVICIOS UNlX La configuración de /a fed. E n ausencia de una distribución de los archivos de los sistemas (NFS y las "pdginas arnarillas"ofrecen una solución en este sentido), se plantea el problema de identificación de los usuarios entre las diferenteslmáquinas de la red. El problema puederesolverse,ya sea globalmente a nivel del o de los administradoresde los sistemas (archivos /etc/hosts.equiv de los diferentes sistemas), ya sea al nivel de cada usuario (archivo .rhosts de los directorios privados de los usuarios). E/ archivo /efc/hosfs.equiv. Sobre un sistema dado contiene una listade 98 remoto shell Implementación un de máquinas El sistema operatiyo UNlX I equivalentes a la máquinalocal. Entonces, una identificación (es decir, un nombre de login y no un entero queidentifica a un usuario) sobre una de estas máquinases equivalente a la propia identificación (si existe) sobre la máquina local: esto significa que un usuario denombredadoen la máquinaremota se identificará, por defecto, por el mismo nombre quesobre la máquina local. El archivo .rhosfs. En el caso en que no se integren máquinas distantes en el archivo hosts.equiv (pero que la máquina local las conoce a través del archivo /etc/hosts), es posible que un usuario autorice a usuarios de éstas máquinas a que se identifiquen implícitamente bajo su nombre. Para ello, tiene que crear su directorio privado un archivo .rhosts formado por líneas de la forma : nombre-de-máquina identi~cación_de_usuano La orden m h o . Suministra la lista de usuarios conectados en las máquinas de la red donde el demonio rwhod está activo (a condición de que el propio demonio local esté también activo). Sin la opción -a, se ignoran los usuarios inactivos desde al menos una hora. Uso: rwho [-a] La copia de archivos:rcp. Se puede llamar a éste comando bajo una de las siguientes formas: rcp referencia-fuentereferencia-objeto ó rcp referencia-fuenfe ... referencia-~~~~~~~~~o~jeto Las referencias utilizadas en ésta orden son extensionesde referencias UNIX. Están constituidas por un nombre de máquinay una referencia UNlX clásica separada por elcarácter 11.!1 nombre-de-máquina:referencia-de-archivo Unallamada de laprimeraformacopia un archivo ordinario delamáquinafuentea la máquina objeto. Unallamadadelasegundaformacopia los diferentes archivos fuenteenel directorio objeto. Los archivos creados tienen como nombre en el directorio objeto la última componente de su nombreoriginal. La segunda forma puede también utilizar una opción -r que permite que se vuelva a copiar deformacompletala estructura en árbol (en tal caso referencia-fuenfe puede ser una referencia de directorio). t La ejecución de comandos disfanfes: rsh. Este comando permite la ejecución de un comando shell en la máquina designada. Si no se da ningún comando como parámetro, se lanza un shell remoto. Universidad AutónomaMetropolitana. Unidad lztapalapa 99 Capítulo 3 0 rsh anfitrión [-i identificación] [-n] orden Se puede especificar la identificación de un usuario distante con la opción -1. La utilización de la opción -n implica el cierre de la entrada estándardel comando distante. N "login"remoto:rlogin. Estecomando permite conectarsea distancia sobrela máquina deseada (bajo una identificación dada). Se trasmite un cierto número de informaciones como el tipo de terminal (variable de entorno TERM), y se asegura el control de flujo. El funcionamiento de la orden se basa sobre el mecanismo de seudoterminal. rlogin anfitrión [-I identificación] - c El carácter permite realizar unescape. La secuencia -. corta todas las conexiones y provoca un retorno definitivo sobrela máquina local. Además, enunentornoenque se dispone del control de tareas (esdecir,quepermite la suspenciónde un proceso), si el carácter A Z es el carácter de suspensión, la secuencia A Z permite detener el proceso de rlogin y volver al shell local sin cortar la sesión remota. - LAS ESTRUCTURAS DE BASE A continuación se describirán las estructuras de base y las funciones que se utilizan cuando se desarrollan aplicaciones distribuidas. Los archivos de base para estas manipulaciones son <netdb.h> y <netinet/in.h>, cuya utilización supone la inclusión previa del archivo <sys/types.h> #include <sys/types.h> #include <netdb.h> #include <netinet/in.h> El manejo de las direcciones entero largo (largo en el serItit lenguaje "C"), sin embargo por razoneshistóricas le corresponde lasiguiente estructura: La dirección de una struct !I mdiquina. Consisteenun in addr { u-long S -addr; I 1 Las direcciones Internet tendrán como indicador AF-INET (AF significa address format). IO0 . -.._- Implementación un de - shell remoto I ... El sistema operativo UNlX Laestructurahostent. Esta estructura predefinida en netdb.h correspondeauna cadena en el archivo /etc/hosts. s t r u cht o s t e n t { char * h name; / * nombre o f i c i a l de l a m á q u i n a * / char aliases; / * l i s t a de a l i a s * / int h addrtype; / * t i pdodei r e c c i ó n : AF INET * / hi n- lte n g t h ; / * l o n g i t u d de l a direcc-ión * / char *Th a d d r l i s t - ; / * l i s t a de d i r e c c i o n e s * / # # d e f i n e h -a d d r h-a d d r-l i s t / l a primera direcci6n de l a l i s t a **E [o] 1; I La función b z e r o permite inicializar a O una zona de memoria de dados. h / dirección y de tamaño b z e r o (adr, l g ) c h a r * a d r ; / * d i r e c c i ó n de l a z o n a a i n i c i a l i z a r * / int lg; / * número de b y t e s a i n i c i a l i z a r a O * / N problema de /a representación de enteros. Si las máquinas intercambian enteros (largos como las direcciones o cortos como números de puertos), es prudente que previamenteéstosenterosesténen su forma"de red". Lasfuncionesque se muestrana continuación, permiten el paso de la representación local a la representación red de un entero largo o corto, o el paso inverso: ntohl(x) Network to host long ntohs(x) Networktohost htonl(x) Host to network long htons(x) Host to network short short Paso de la representación red de un entero largo x a su representación local. Paso de la representación red de un entero corto x su representación local. Paso de la representación local de un entero largo x a su representación red. Paso de la representación local de un entero corto x a su representación red. Las direcciones de redes. La estructura n e t e n t y las funciones g e t n e t b y n a m e y g e t n e t b y a d r r permiten obtenerlas informaciones contenidas enel archivo /etc/networks. s t r u c tn e t e n t { char name; *n /* char **n aliases; /* int n-a d d r t y p e ; / * u n s i g n e ldo n g n-n e t ; /* nombre o f i c i a l de l a r e d * / l i s t a de l o s a l i a s * / t i p o de d i r e c c i ó n de l a red * / d i r e c c i ó n de l a red * / 1; Universidad AutónomaMetropolitana. Unidad lztapalapa 101 ' Capitulo 3 I El manejo de puertosy servicios Seha visto que un servicio sobre unamáquina dadase caracteriza por un número de puerto del protocolo correspondiente. Estos números de puerto juegan el papel de dirección para losservicios. Por otro lado, el archivo /etc/servlces contiene la lista de los servicios disponibles. La consulta de este archivo utiliza la estructura se vent. f struct servent { char * S -name; * * S aliases; char int S -port; char proto; *p - / * nombre oficial del servicio / * lista d e alias * / */ / * número de puerto */ / * protocolo utilizado */ 1; La estructura sockaddr-in. Por mediación de esta estructura será posible designar un servicio sobre una máquina particular. La estructura se define por: structsockaddrin{ short sin family; short u sin-port; structinaddrsinaddr; char sin-zero[8]; / * la familia d e dirección: AF- ..I N E T * / / * el número de puerto * / / * la direcciónInternet / * un campo */ de 8 ceros * / 1; Los protocolos La consulta del archivo /etc/protocols utiliza la estructura: structprotoent { char *p name; char **p-aliases; int proto; p - / * nombreoficialdelprotocolo / * lista de alias * / / * número de protocolo * / */ 1; LA COMUNICACIóN ENTRE USUARIOS En UNIX se constituye unacomunidaddonde los usuarios tienen la posibilidad de intercambiar archivos y dialogar mediante sistemas de mensajería o de foro. I Laconexióndemáquinas UNlX utilizando los protocolos INTERNET convierten a ésta comunicación en particularmente fácil. 102 Implementación de un shell remoto El sistema operativo UNlX Los mecanismos de direccionamiento Permiten asociar una cadena de caracteres para la designación de una máquina tanto, poder determinarun camino paraalcanzarla. y, por N demonio sendmail. Este es el encargado de determinar si una máquina a la que se el quiere mandar un mensaje, se puede alcanzar directa o indirectamente, enesecaso mensaje debe de ser enrutado a una máquina que actúa como puente. El proceso sendmail utiliza el archivo sendmail.cf para realizar éste direccionamiento. Existen dos sistemas principales de direccionamiento que sedescribirán a continuación: 1 . Las direcciones uucp. Imponen la escritura deuna máquina. Una dirección así tiene la forma: maquinal!maquina2! ruta quepermitealcanzar la . _ . .maquinaN!identifidacion Permitedesignar al usuario de identificación dada sobrela máquinadenombre maquinaN. Los nombres anteriores designan las diferentes máquinaspor las quese tiene que transmitir el mensaje enviado. 2. El dominio de los nombres Internet. El principio consiste en construir una estructura en árbol de nombres, donde un nodo de un nivel dado es un subdominio de un nodo de nivel superior. Las hojas del árbol son las máquinas del dominio general de Internet. Así, partiendo de la raíz, será posible alcanzar una máquina particular atravesando un cierto númerode dominios. Por ejemplo,Franciaes un subdominio particular del dominio general (como cada país del mundo). De forma general, se puede se puede designar una máquina mediante la cadena: maquina.dominiol.dominio2 .... dominioN La cadena anterior corresponde a un camino de la máquina hacia la raíz. Esta máquina constituye una dirección completa que puede truncarse si se hace referencia a una máquina de un dominio idéntico al de la máquina de donde se ha hecho esta referencia. Así ,el dominio fr se puede omitir para direccionar otra máquina situada en Francia: Y , dentro del dominio ibp, se puede omitir el sufijo .ibp. Entonces, la dirección electrónica completa deun usuario es: identificación@dirección-maquina donde la identificación es la del usuario sobre la máquina designada. Se definen unaserie de dominios principales en seguida. Universidad AutónomaMctropolitana. Unidad lztapalapa 103 Capítulo 3 I NOMBRE DE DOMINIO INTERPRETACI~N . Empresas comerciales (SUN,CDC, APPLE, ...) Educación (NIT, BERKELEY, ...) Instituciones militares (NAVY, ...) Instituciones gubernamentales (NASA,...) Dominio genérico Gran Bretaña (AC [académico], ...) Francia (INRA, IBP, ...) COM EDU MIL I GOV UUCP UK FR Por ejemplo, el laboratorio Jet Propulsión Laboratory de la NASA tiene como dirección este formato: I jpl.nasa.gov y un usuario particular sobre una máquina dada de este laboratorio identificació[email protected] NOTA: En la escritura de direcciones las mayúsculas y las minúsculas sonequivalentes. El Correo SYSTEM V globalmente equivalente a la orden mail BSD. Ofrece un interfaz más agradable que la orden mail básica para enviar correo o consultar el buzón. Sólo se describe la orden mailx Buzones. En una máquina donde tiene una cuenta, un usuario dispone de un buzón de referencia, cuya referencia se muestra en seguida. REFERENCIA SISTEMA /usr/spool/maiI/idenfificación /var/maiI/identificación BSD SYSTEM V.4 El correodel usuario, salvo petición contraria, se escribe y se lee en el archivo de referencia correspondiente. 1 Además el archivo de referencia mbox, en el directorio privado de un usuario, se usa para grabar los mensajes leídos en el buzón principal. Por fin, el archivo $home/maix.rc contiene órdenes ejecutadas al llamar a la orden (por ejemplo, la definición de alias). El envío de correo. Sea la orden: impiementación de 104 -... . . . ".".- un shell remoto El sistema operativo UNlX maixl [ -S tema ] usuario .... Lee en la entrada estándar el mensaje a enviara los usuarios que pertenecen ala lista dada como parámetro. L a opción - S permite poner un titulo a la carta : se pide un titulo si no es utilizada y la orden se lanza en modo interactivo . Los usuarios se identifican mediante las convenciones descritas anteriormente (a condición de que el demonio sendmall exista y esté bien configurado). La lectura de correo. S e realiza con la orden malxl sin parámetros. E n lailustración siguiente se presentan las principales opciones. I EFECTO ' OPCIóN Testde existencia de correo Lectura de correo en el archivo (mbox si no hay referencia) No hay inicialización en el archivo mailx.rc No hay impresión de resumen. -e -f referencia -n -N 3 Cuando se hace la consulta de un buzón, se identifica un mensaje por un número ($ es el (/cadena). E n lailustraciónsiguiente se describen las último mensaje), o porelcontexto principales órdenes sin parámetros: se aplican al mensaje actual. EFECTO lista de órdenes con resumen lista de órdenes sin resumen salida salida sin modificación alias para un conjunto de nombres supresión del mensaje edición del mensaje mensaje siguiente envío de respuesta grabación en archivo recupera el mensaje ORDEN NOTA help list quit exit alias alias nombre... . delete mensaje suprimido final al del proceso edit Utilización del editor dado por $EDITOR next Replay referencia mbox defecto por save referencia undelete Seguimientodelcorreo. El proceso sendmail interpreta el contenido del archivo .forward del directorio privado de un usuario como una lista de direcciones (dadas en uno de los formatos aceptados) donde se tiene que hacer el seguimiento del correo del usuario. De esta manera un usuario que tenga una cuenta en varias máquinas puede centralizar su correo. La orden mail de SYSTEM V.4 admite una opción -F que, seguidadeuna listade que llega al usuario hacia las diferentes direcciones,provoca la transferenciadelcorreo direcciones. Para anular la orden basta con dar una dirección vacía. Universidad Autónoma Metropolitana. Unidad lztapalapa 105 Avisos de llegada de corfeo. Habitualmente, al usuario se le avisa dela correo cuando comienza una sesión detrabajo (en el login). I LENGUAJE ORDEN Bourne Shell MAILCHECK = nb C- Shell llegada de EFECTO Comprueba cada nb segundos la llegada de correo en el buzón. set mail = (nb fic1 ... ficn ) Comprueba cada uno de los nb segundos, en el buzón indicado. Por fin, en un entorno BSD, la orden siguiente permite el aviso de la llegada de correo: biff [yn] N teléfono. Las órdenes: write usuario [puedo] talk usuario [terminal] permiten que un usuario pida un diálogo con otro. Es preferible la segunda orden que permite la comunicación con un usuario sobre otra máquina y rige el diálogo (mediante una separación de la pantalla en dos regiones: emisión/recepción). LOS PROCESOS EN EL SISTEMA UNIX A continuación se revisarán los aspectos, más importantes relacionados con los procesos, en el sistema operativo UNIX. El concepto de proceso es un tema capital como parte intrinseca del sistema operativo, pero también como tema dentro de las redes de computadoras y de los sistemas distribuidos. CONTROL DE PROCESOS Unprocesoes un programa en ejecución y se identifica por un número entero, el identificadordeproceso.Un nuevo proceso se creacon la llamadaalsistema fork (bifurcación) y consiste en una copia del espacio de direcciones del proceso original (el mismo programa y las mismas variables con idénticos valores). Ambos procesos (el padre y el hijo) 106 Implementación shell de un renhoto El sistema operativo UNlX continúan en la instrucción después de la I!amada fork con una sola diferencia: el código de retorno de la llamada es cero para el nuevo proceso (hijo), mientras que al padre se devuelve el identificador de proceso (distinto de cero) del hijo. Típicamente,unode los dos procesos emplea la llamada execve despuésdeuna bifurcación para reemplazarsu espacio de memoria virtual con un nuevo programa. La llamada al sistema execve carga en memoria un archivo binario (destruyendo el contenido en memoria del programa que contienela llamada execve) y comienza su ejecución. Un proceso puede terminar con la llamada al sistema exit (salir) y su proceso padre puede esperar ese evento usandola llamada wait (esperar). Si falla el proceso hijo, el sistema simula la llamada de la salida. La llamada al sistema wait proporciona el identificador de proceso hijo que termina, para que el padre pueda distinguir cuál dd sus hijos es el que ha terminado. Una recopilar segundallamada al sistema, wait3, essemejante a wait peropermitealpadre estadísticas de la ejecución del hijo. Entre el momento en que termina el hijo y el momento en que el padre termina una de las llamadas de espera, el hijo es un zombie. Un proceso zombie no puede haceralgo, pero existe para que su padre pueda recopilar su información de estado. Si el proceso padre deun zombie termina antes que el hijo, el proceso init hereda al zombie (y a su vez también espera). En la Figura 1 se presenta una utilización tipica de estos recursos. proceso hijo - ejecucibn del programa > Programa execve Figura 1. Un shell bifurca un subproceso para ejecutar un programa. Laformadecomunicación más sencillaentreprocesoses a través de conductos, los cualespuedencrearseantesde lallamada fork y cuyosextremos los establecen fork y execve. En esencia, un conducto es una cola de bytes entre dos procesos. El acceso a un conducto se realiza por medio de un descriptor de archivo, como sucede con un archivo ordinario. Un proceso escribe en el conducto y el otro lee de él. El tamaño del sistema de conductos original fue determinadopor el sistema. En 4.3BSD los conductos se implantan sobreelsistemadeconexiones,el cual tiene buffers detamaño variable. AI leer de un conducto vacío o escribir en uno lleno, el proceso se bloquea hasta que cambie su estado; se requieren arreglos especiales para establecer un conducto entre un padre y un hijo (para que sólo uno lea y el otro escriba). Todos los procesosde usuario desciendende un proceso original llamado init (con identificador de proceso 1). Cada puerto de terminal disponible para uso interactivo tiene un proceso getty que bifurcó init. El proceso getty asigna los valores iniciales de los parámetros Universidad AutónomaMetropolitana. Unidad lztapalapa 107 Capítulo 3 I de la línea terminal y espera el nombre de conexión de un usuario, que pasa a través de una llamada execve como argumento para un proceso login (conexión). Este proceso obtiene la contraseña del usuario, la cifra y compara el resultado con una cadena cifrada que se lee del archivo /etc/passwd. Si la comparación tieneéxito, se permite que el usuario se conecte al sistema. El proceso login ejecuta un shell, o intérprete de comandos, después de asignar el identificador de usuario numérico del proceso al cual se conecta el usuario. (El shell y el identificador de usuario se encuentran, usando elnombre del usuario, en /etc/passwd). Normalmenteel usuario se comunica a través de este Shell durante el resto de la sesión; el shell bifurca subprocesos para los mandatos que el usuario indique que deben ejecutarse. El núcleo utiliza el identificador de usuario para determinar los permisos respecto a ciertas llamadas del sistema, en especial aquéllas que comprenden el acceso a archivos. Existe también un identificador de grupo,que se usa para otorgar privilegios similares a un conjunto deusuarios. Un procesopuede estarsimultáneamente en varios grupos. El proceso loqin coloca el shell en todos los grupos que los archivos /etc/passwd y /etc/group permitenal usuario. E n realidad haydos identificadores de usuariq que utilizael núcleo: el identificador de usuario efectivo que es el que emplea para determinar los permisos de acceso a archivos. Si el archivo de un programa que carga execve tiene activo el bit setuid (asignar identificador de usuario) en su nodo, se asigna el identificador de usuario del dueño del archivo al identificador de usuario efectivo, mientras que el identificador de usuario real permanece sin cambios. Esto permite que varios procesos tengan privilegiosdistintos de los normales mientraslos ejecutan usuarios normales. La idea de la asignación de identificador de usuario fue patentada porDennis Ritchie y esuna delas característicasdistintivas de UNIX. Existe un bit setgid similar para los grupos. Un proceso puede determinar sus identificadores real y efectivo con las llamadas al sistema getuid y geteuid, respectivamente. Los otros grupos deunproceso pueden encontrarse con la llamada getgroups. I Seiiales. Las señales son un recurso para manejar condiciones excepcionales de manera semejante a las interrupciones del software. Existen varias señales diferentes, cada una de las cualescorresponde a una condición distinta. Una señalpuede ser generadaporuna interrupción desde el teclado, un error en un proceso (como una mala referencia a memoria) o por varios eventos asincronos (como los cronómetros o señales de control de trabajos shell). Además, la llamada al sistema klll (matar) puede generar casi cualquier señal. La señal de interrupción, SIGINT, se usa para detener un mandato antes de que termine. Generalmente se produce con el carácter AC o , en una configuración más tradicional, con el carácter eliminar. S e define una tabla para los caracteres más importantes del teclado de cada terminal y puede redefinirse fácilmente. La señal abandonar, SIGQUIT, casi siempre se genera en ejecución y vacíasu contenido en por el carácter A \ ; estaseñal detieneelprograma memoria a un archivo llamado core núcleo en eldirectorioactual. Este archivo puede ser utilizado por los depuradores. La señal SlGlLL se produce por una instrucción ilegal, y SIGSEGV por un intento de acceso a memoria fuera del espacio de memoria virtual del proceso. Es posible efectuar arreglos para ignorarla mayoría de las señales Ioa Irnplementación de un remoto shell (para que no tengan El sistema oDerativo UNlX efecto) o para invocar una rutinadel procesode usuario (un manejador de señales). El manejador de señales puede hacer dos cosas sin que haya peligro, antes de volver de atrapar una señal: emitir la llamada al sistema exit, o mbdificar una variable global. Existe una señal (kill, SIGKILL) que no puede ser ignorada o atrapada por un manejador de señales; SlGKllL se usa, por ejemplo, para matar un proceso sin control que ignora todas las demás señales, como SlGlNT o SIGQUIT. Es posible que se pierdan las señales: si se envía una señal del mismo tipo antes de que la anterior sea aceptada por el proceso al cual está dirigida, se sobreescribirá la primera señal y el proceso sólo verá la segunda. Además, no se presenta prioridad relativa entre las señales no es posible UNIX: si a un proceso se envían dosseñales diferentesalmismotiempo, determinar cuál será la que reciba primero. La intención original de las señales fue manejar condiciones excepcionales; sin embargo, como ha sucedido con la mayoría de las característica,s de UNIX, se ha extendido el uso de las señales. Con frecuencia grupos deprocesoscooperanpara lograr una tarea común. Por ejemplo, pueden crear conductos y comunicarse por ellos. A este conjunto de procesos se le denomina grupo de procesos o trabajo. Pueden enviarse señales a todos los procesos de un grupo. Un proceso generalmente hereda del padre su grupo de procesos, pero la llamada al sistema setpgrp le permite cambiar de grupo. Grupos de procesos. El shell C usa los grupos de procesos para controlTr el funcionamiento de varios trabajos. Cualquier grupo puede, al mismotiempo,utilizar un terminal para su E/S; este trabajode primer plano recibe la atención del usuario en ese terminal, mientras los demás trabajos, no unidos alterminal(trabajos de segundo plano), llevan acabo su funciónsininteraccióndel usuario. El acceso a la terminal se controla por señales del grupo de procesos y cada trabajo tiene un terminal controlador (heredado también de su padre). Si el grupo de procesos del terminalcontroladorequivalealgrupo deun proceso, entonces éste se ubica en elprimer plano y puede efectuar E/S;si unproceso no equivalente (segundo plano) intenta hacer lo mismo, se envíaunaseñal SlGTTlN o SIGTTOU a un grupo de proceso, lo generalmente ocasiona que el grupo se detenga hasta que el usuario lo pase a primer plano, donde recibiría la señal SIGCONT que le indica quepuede llevar a cabo la E/S. De forma parecida,puede enviarse una señal SIGSTOP para detener un grupo de procesos. Manipulación de información. Existen llamadas al sistema para asignar y obtenerel valor de un cronómetro de intervalos (getitimedsetitimer) y la hora (gettimeofday/settimeofday) en microsegundos. Además, los procesos pueden solicitar su identificador de proceso (getpid), su identificador de grupo (getgid), el nombre de la máquina donde se ejecutan (gethostname) y varios más. Rutinasdebiblioteca. La interfaz de llamadas al sistema de UNIX estáapoyada y extendida por un amplioconjunto de rutinas de biblioteca y archivos decabeceras; estos últimos proporcionan la definición de complejasestructuras de datos empleadasen las llamadas al sistema. Además, una extensa biblioteca de funciones ofrece apoyo adicional a programas. Universidad Autónoma Metropolitana. Unidad lztapalapa 1o9 , Por ejemplo, las llamadas al sistema E/Sde UNlX permiten leer y escribir bloques de bytes; sin embargo, algunas aplicaciones querrAn leer y escribir sólo un byte a la vez. Aunque seria posible leer y escribir un byte al mismo tiempo, esto requeriría una llamada al sistema por cada byte, untiempo de procesamiento adicional considerable. E n vez de hacer esto, un conjunto de rutinas de biblioteca (el paquete de E/S estándar al que se tiene acceso por medio del archivo de encabezado <stdio.h>) ofrece otra interfaz, que lee y escribe miles de bytes a la vez utilizando buffers locales, y efectúa las transferencias usando estos buffers (en memoriadel usuario) cuando desea E S . El paquete de E/Sestándar también apoya la E/S con formato. S e proporciona apoyo adicional de biblioteca para funciones matemáticas, acceso a redes, conversión de datos, etc. Aunque las rutinas de bibliotecafinalmente efectúan llamadas al sistema cuando éstas se requieren (por ejemplo, la rutina de biblioteca getchar [leer caracteres] emitirá una llamada read si el buffer del archivo está vacío), generalmente no es necesarioque el programador distingaentreelconjunto básico de llamadas al sistema al núcleo y las funciones adicionales que proporcionan las bibliotecas. ADMINISTRACIóN DE PROCESOS Uno de los principales problemas de diseño de un sistema operativo es la representación de los procesos. Una diferencia sustancial entre UNlX y muchos otros sistemas es la facilidad para crear y manipularvarios procesos,queen UNlX están representados por diversos bloques de control. No existen bloques de control del sistema a los cuales pueda lograrse el acceso en el espacio de direcciones virtuales de un proceso de usuario; los bloques de control asociados a un proceso se almacenan en el núcleo, y la información que contienen es utilizada por el núcleo para controlar los procesos y planificar la UCP. a un proceso es la estructura de proceso, que contiene todo lo que se necesita saber sobre el proceso cuando éste sale por un intercambio, como son su identificador Único, información de planificación (por ejemplo, la prioridad del proceso) y apuntadores a otros bloques de control. Existe un arreglo de estructuras de proceso, cuya longitud es definida por el sistema durante el enlace. El planificador mantiene unidas las estructuras de los procesos listos enuna lista doblemente enlazada (la cola de procesos listos), y hay apuntadores de cada estructurade proceso a su padre, su hijovivo más joven y otros parientes de interés, comouna listade procesos que comparte el mismo código de programa (texto). Bloques de control de procesos. La estructura de datos más básica que se asocia El espacio de direcciones virtuales de un proceso de usuario está dividido en segmentos de texto (código del programa), datos y pila. Los datos y los segmentos de pila siempre se encuentran en el mismo espacio de direcciones, pero pueden crecer independientemente, por lo general en direcciones opuestas:en la mayoría de los casos, la pila crece hacia abajo mientras los datos crecen hacia arriba. E n ocasiones (como en un Intel 8086 con espacios de datos e instrucciones separadas), el segmento de texto está enunespaciode direcciones distinto del de datos y la pila, y usualmente es de sólo lectura. 110 Implementación remoto shell de un El sistema operativo UNlX Todo proceso con textos compartidos tiene un apuntador de su estructura de proceso a una estructura de texto, la cual contiene el número de procesos que están utilizando el segmento de texto, así como un apuntador a una lista de sus estructuras de proceso y donde puede encontrase, en el disco, la tabla de pdginas para el segmento de texto cuando se intercambie. E n sí, la estructura de texto siempre reside en memoria principal: el sistema asigna un arreglo de estas estructuras durante el enlace. E s posible intercambiar los segmentos de texto, dntos y pila para los procesos; cuando se intercambian, se paginan. Las tablas de páginas contienen información de la correspondencia entre memoria virtual y memoria física. La estructura de proceso contiene apuntadores a la tabla de páginas, que se el usan mientrasel proceso reside en memoriaprincipal, o la dirección del procesoen dispositivo de intercambios, que se emplea al intercambiar el proceso. No existe una tabla de páginas aparte para segmentos de texto compartidos; cada uno de los procesos que comparte el texto cuenta con entradas para sus páginas en la tabla. La información sobre el proceso que únicamente se necesita mientras el proceso reside en memoria (es decir, no se ha sacado por intercambio) se conserva en la estructura del usuario (o estructura u), y no en la estructura de proceso. S e efectúa una correspondencia entre la estructura u y el espacio de datos virtual del núcleo. Allí se conserva una copia del bloque de control deprocesos VAX para almacenar los registros generales, apuntador de la pila, contador de programa y registros base de la tablade páginas correspondientes al proceso, cuandoésteno está en ejecución. Existe espaciopara almacenar los parámetros de la llamada al sistema y para devolver valores; enese espacio se conservan todos los identificadores de grupo y usuario relacionados con el proceso (no sólo elidentificador de usuario real que se almacenaen la estructura dedatos).Asímismo, allí se encuentran estructuras de datos para señales, cronómetros y límites. El directorioactual y las tablas de archivos abiertos, de mayor importancia para el usuario común, se conservan en la estructura del usuario. Cada proceso tiene unafasede usuario y una de sistema. La mayor partedeltrabajo ordinario lo realiza el proceso de usuario, pero cuando se emite una llamada al sistema es el proceso de sistema quién la efectúa. Nunca se ejecutan al mismo tiempo las fases de usuario y desistema de un proceso. El procesode sistema cuenta conuna piladistinta de la que utilizael procesode usuario. L a pila del núcleo correspondienteal proceso se encuentra inmediatamente después de la estructura de usuario: juntos, la pila del núcleo y la estructura de usuario, integran el segmento de datos del sistema para el proceso. L a Figura 2 ilustra cómo se emplea la estructura de proceso para partes de un proceso. encontrar las distintas La llamada al sistema fork asigna una nueva estructura de proceso (con nuevo identificador de proceso) para un hijo, y copia la estructura de usuario. Por lo general, no es necesaria una nueva estructura de textos, ya que los prwesos comparten su texto; basta actualizar los contadores y listas apropiados. Para los segmentos de datos y de pila de un proceso hijo se construye una nueva tabla de páginas y se asigna una nueva memoria principal. AI copiar la estructura de usuario, se conservan los descriptores de archivos abiertos, los identificadores de usuario y grupo, el manejo de señales y la mayoría delaspropiedades similaresdeun Universidad Autónoma Metropolitana. Unidad lztapalapa 111 Capítulo 3 proceso. La llamada al sistema vfork, no copia los datos y la pila al nuevo proceso; en cambio, el nuevoprocesocompartela tabla depáginas del anterior. De cualquier manera, se crean nuevas estructuras de usuario y de proceso. Una aplicación comúnpara esta llamada al sistema es que el shell ejecute un mandato y espere su terminación. El proceso padre utiliza una llamada vfork para producir el proceso hijo. Como éste quiere usar inmediatamente una llamada execve para cambiar todo su espacio de direcciones virtuales, no es necesaria una copia completa del proceso padre. Algunas estructuras de datos, como las que se requieren para manipular conductos, puedenconservarse en registros entre las llamadas vfork y execve. Un proceso puede cerrar archivos sin afectar a otros, ya que las estructuras de datos del núcleo que se requieren dependen de la estructurade usuario, la cual no se comparte. El proceso padre utiliza la llamada wait para suspender su ejecución hasta que termine el hijo, para que así el padre no modifiquela memoria que necesita el hijo. 4 Cuando el proceso padre es grande, la llamada fork puede generar ahorros considerables eneltiempode la UCP del sistema. Sin embargo,es unallamada al sistema bastante peligrosa, ya que los cambios a la memoria de ambos procesos sólo ocurren cuando se emite la llamada execve. Una alternativa consiste en compartir todas las páginas duplicando la tabla de páginas y marcando las entradas de ambas tablas como copiar al escn'bir. Se colocan los bits de protección paraqueatrapen cualquier intento de escritura enestaspáginas compartidas y,si ocurre esta trampa, se asigna un nuevo marco y a éI se copia la página compartida. Lastablas de páginas se ajustan para mostrar que la página ya no se comparte (y porconsiguiente ya no tiene que estar protegida contra escrituras) y la ejecución puede continuar. I Una llamada al sistema execve no crea algún proceso o estructura de datos nuevos, sino que reemplaza el texto y datos de un proceso. Se conservanlos archivos abiertos (aunque hay unamanerade especificar el cierre de ciertos descriptores de archivo al emitir la llamada execve); se conservan así mismo, la mayoríade las propiedadesdemanejode señales, aunque por razones obvias, se cancelan las disposiciones para llamar a una rutina de usuario específica al ocurrir una señal. También permanecensin cambios el identificador del proceso y casi todas las demás propiedadesdel proceso. 112 Implementación de un shell remoto El sistema oDerativo UNlX I I ~- estructura U pila del núcleo - estructura de usuario estructura de datos del sistema estructura tablas residentes I I I ' I I I espacio de usuario contenido intercambiable de procesos Figura 2. Componentes de la planificación de la UCP. I UNlX SISTEMA VVERSIóN 4. MANUAL DEREFERENCIA Osborne McGraw-Hill [1992] Stephen Coffin Págs. 3-23, 25-36. SISTEMAS OPERATIVOS. CONCEPTOS FUNDAMENTALES Addison-Wesley Iberoamericana[1994] Abraham Silberschatz James L. Peterson Peter B. Galvin Págs. 568-572, 576-579. COMUNICACIONES EN UNlX McGraw-Hill [1992] Jean-Marie Rifflet Págs. 203-224,226-231. Universidad Autónoma Metropolitana. Unidad lztapalapa 113 CAPÍTULO 4 SISTEMAS OPERATIVOS DISTRIBUIDOS I SISTEMAS OPERATIVOS DISTRIBUIDOS [TOMADO Y ADAPTADO DE Goscinski y PetersonI4 Los sistemasdistribuidos son desarrollados a causa de la enorme rapidez de cambio tecnológico en el áreade los microprocesadores. El término sistemas distribuidos esusado para definir un amplio rango de sistemas de computadora, desde sistemasdébilmente acoplados (los procesadoresno compartenmemoria ni reloj; cada uno tiene su propia memoria local y su reloj) tales como redes de área ancha, sistemas fuertemente acoplados (los procesadores comparten memoria) tales como redes de área local, hasta sistemas muy fuertemente acoplados (los procesadores comparten memoria y reloj)tales como sistemas multiprocesador. I Las redes de área local y las redes de área ancha rápida proporcionan una oportunidad para conectar computadoras, en particular computadoras personales, estaciones de trabajo y dispositivos periféricos, juntos. Las computadoras personales y las estaciones de trabajo han llegado a ser alternativasmuyatractivas para el enfoque de tiempocompartido (entorno computacional multiusuario que permite a los usuarios iniciar sus propias sesionesen la medidaque se requiera, comocuando se usan muchos servicios en línea. Un sistema que sirve a muchosusuarios, pero sólo parauna aplicación, es técnicamente de tiempo no compartido) porque: 1 . La construcción basada en microprocesadores es muy barata y poderosa. 2. Pueden soportar la transferencia ' de datos entre procesador y dispositivosde entradalsalida (ratón, teclado, monitor, impresora, digitalizador, etc.). 3. Cada una de ellas tiene una función dedicada. 4. Proporcionan un tiempo de respuesta predecible para las solicitudes de los usuarios. Las capacidades de las computadoras personales y de las estaciones de trabajo son muy amplias cuando se conectan por medio de una red de comunicación de datos (como una red de área local o una red de área ancha rápida) aún cuando una conexión de este tipo genera el problema de diseñar grandes sistemas compuestos de procesadores pequeños. Este problema se resuelve principalmente en el nivel de software de estos sistemas. I Capitulo 4 Los sistemas distribuidos desarrollados con base en redes de área local y redes de área ancha rápidas tienen ventajas y desventajas. de Las ventajas de los sistemas distribuidos desarrollados enbasealainterconexión computadoras personales, estaciones de trabajo, y computadoras conectadas por medio de redes de área local y redes de área ancha rápidas son: 1. El sistema entero es más confiable y aprovechable que un sistema de tiempo compartido (unas pocas partes del sistema pueden ser inoperantes sin causar disturbios a la gente que usa las otras partes). recursos de hardware costosos tales como 2. Es posible compartir unos cuantos impresoras,discos duros, graficadores, de una manera tanefectiva como la de los recursos de software compartidos. computaciónmuy considerable, pero susrecursos de 3. Una red puede tener poder de computación son distribuidos. I Las desventajas (problemas) de desarrollo de sistemas distribuidos basados en redes de área local y redes deárea ancha son los siguientes: 1. La seguridad podría prescribir que algunos datos no puedan ser transferidos todos o en parte a cualquier otra máquina, incluyendo el lugar de solicitud del usuario; así el usuario debe usar un procesador remoto para acceder datos. no armonizar conla distribución de las 2. La distribución física de recursospodría demandas de servicios. Esto implica que algunosrecursos podrían estar ociosos mientras otros estarían sobrecargados. o una estación de trabajo pudieran tener computadorapersonal 3. Aúncuandouna capacidades computacionales significativas, supoderes menor queelesperado de computadoras grandes. Todos estos problemas pueden recursos: ser solucionados mediante el compartimiento de lntercambio de información compartida. Este tipo de compartimiento está relacionado con la primera de las desventajas listadas arriba, que es la seguridad de datos. En las redes, no hay un sistema operativo central confiable. Esto implica que un propietario específico de datos debecompartiruna máquina con usuarios que necesitan acceder los datos, y para protegerdatos específicos, lamáquina del propietario restringe lo que los otros usuarios involucrados pueden hacer con la máquina. Ejemplos de este tipo de compartimiento son los programas de correo electrónico y las bases de datos locales. Distribucióndecargacompartida. Este tipo de compartimientoes resultadodel problema de conexiónrelacionado con el desbalanceo be ca@a en una red.El compartimiento puede ser usadopara distribuir la cargamásuniformemente. Un ejemplo deestetipode compartimiento es un usuariocorriendo un programa interactivo. Sihaymáquinas ociosas disponibles en la red, podría ser ventajoso usar la máquina remota para ejecutar el programa. 118 Implementación de un shell remoto I -.-"" ..." Sistemas operativos distribuidos Compartimientoparaelparalelismocomputacional. Cuando los recursosde computaciónen las redesde cornputadoilas son distribuidos paraobtenermáspoderde procesamientoque el que está disponible en cualquier computadorapersonal dada, es necesario algún grado de compartimiento para correr algunos procesos en paralelo. Ejemplos de este tipo de compartimiento es el procesamientos de seilales ghficas de computadora, verificadores de diseilo de reglas para diseiio de sistemas asistidos por compufadora y la simulación de sistemas fisicos. Un sistema operativo de un sistema distribuido desarrollado sobre la base de una red de debería soportar todos los problemas área local (o una red de área ancha rápida) representados arriba. Esto hace que efectivamente tal sistema operativo pudiera ser distribuido. El lugar de un sistema operativo en un ambiente distribuido y su distribución son ilustrados en la Figura 1. I Computadora A Computadora B Programa de usuario de Programa de usuario r1o a usuarm Ruta datos datos Sistema operativo de Sistema operativo Comunicaci6n proceso a proceso Ruta datos Dispositivo de comunicación 1 datos + de Transmisión dedatos b Dispositivo de comunicación Medio comunlcaclon Figura 1. El lugar de un sistema operativo en un ambientedistribuido. Los sistemasoperativosdistribuidos tienen muchosaspectosencomúncon los sistemas operativos centralizados, pero también difieren en muchos aspectos. Un sistema sistema operativo distribuido contiene los mismos elementos de administración queun operativo centralizado: administración de procesos (objetos), administración de memoria, administración de entrada/salida (€/S), administración de la comunicación, administración de dispositivos y administración de archivos. Esta lista de elementos de administración define también lo que un sistema operativo debería hacer. Universidad AutónomaMetropolitana. Unidad lztapalapa 119 6 Capítulo 4 Enun sistema operativo distribuido,. los recursosestán dispersos en el espacio, e interconectados por una red de comunicaciones. Además, los recursos de computación y la red son generalmente entidades de control autónomas. Así, la meta primaria de un sistema operativo distribuido es controlar la localización de recursos, y entonces integrar y controlar los recursos de computación y los servicios de la red de comunicaciones en un sistema simp!(?. Los recursos del sistema también deberían ser protegidos contra el acceso de usuarios no autorizados. Estoproporciona servicios equivalentesa aquéllos deun sistema operativo centralizado convencional. Además, un sistema operativo distribuido debería proporcionar al usuario una computadora virtual que sirva como un entorno conveniente. Estasmetasdeberían ser llevadas acaboaúncon la presenciade las restricciones impuestas por los diseñadores y usuarios del sistema, y de las limitaciones de los subsistemas componentes.Estas restricciones son normalmente: requerimientos para la fransparencia y seguridad, habilidad para funcionar con fallas,.del subsistema, capacidad de procesamiento, flexibilidad, simplicidad, integridad y algunas veces un requerimiento para integrar subsistemas área ancha rápidas, la heterogéneos.Enelcasoderedesde área local y redesde construcción de un sistema operativo que cumple con los requerimientos de la definición dada arriba implica el diseño y problemasdeimplementaciónnoconocidosen el áreade Ius sistemas operativos centralizados. UNA DEFlNlClON Y FUNCIONES DE UN SISTEMA OPERATIVO DISTRIBUIDO Un sistema operativo distribuido debería: 1. Controlar la localización de los recursos de la red para permitir usarlos de la forma más efectiva. 2. Proporcionar al usuario una computadora virtual conveniente que sirva como un entorno de programación dealto nivel. 3. Ocultar la distribución de los recursos (transparencia). 4. Proporcionarmecanismospara la protección de los recursos del sistema contra el acceso de usuarios noautorizados. 5. Proporcionar una comunicaciónsegura. Un sistema operativo distribuido es aquel que es visto por sus usuarios como un sistema operativo centralizado ordinario, peroque corre .en unidades centrales deprocesamiento múltiples e independientes, donde: l . El uso de múltiple procesadores deberíaser invisible (transparente) para el usuario. 6 2. El usuario ve el sistema como un procesador virtualÚnico, no como una colección de máquinas distintas conectadas porun subsisterna de comunicación. 120 Implementación un de remoto shell i Sistemas operativos distribuidos I Cualesquiera decísiotles de adtnlnlstracl6n (cot,trol) deberían ser hechas cut1 base et1 urla informaci6n de datos adecuada y actualizada. La falta de datos actualizados hacen que todos los problemas de administración sean muy dificiles o imposibles de resolver. Uno de los problemas más importantes de los sistemas operativos distribuidos es la falta de información de estado global y de información de datos actualizada. 1 Aspectos de la administración de recursos tales como una planificación del procesador, balanceo de carga, detección, prevención y recuperación de abrazos mortales, comunicación y sincronización entre procesos, direccionamiento y protección, tolerancia a fallas, comunicación segura, y los servicios aserproporcionados, los cualescrean la experiencia parala administración de elementos, deben ser resueltos teniendo la distribución en mente. Es bien sabido que la teoría de control para el desarrollo de algoritmos y métodos distribuidos es muy compleja. En la distribución de elementos de procesamiento y otros recursos, uno de los elementos más importantesde un sistema operativo distribuido es la comunicación entre procesos remotos (procesos en diferentes lugares) llamada comunicación entre procesos (remota) (IPC). El alto desempeño de dicha comunicación es la facilidad más crítica que debe ofrecer un sistema distribuido, y depende de las primitivas de comunicación entre procesos, y de los protocolos de transporte que soportan estas primitivas. Es arriba del protocolo de la capa de transporte donde se conjuga lo que el sistema operativo ofrece a sus usuarios y lo que el subsistema de comunicación proporciona realmente. El sistema de comunicacióndeberíaposeer ,muchas funciones especiales, tales como registrode procesos,y el establecimiento, cierre ymanipulación de rutas entre procesos comunicantes. Además este elemento debería llevar a cabo el enrutamiento de mensajes, y proporcionar una transferencia confiable. Pueden distinguirse dos tipos de sistemas operativos para redes de área local: sistemas operativos de red y sistemas operativos distribuidos. El factor más importante usado para diferenciar sistemas operativos de red de sistemas operativos distribuidos es la transparencia, esto es, la forma enque los usuarios perciben que estár: siendo usadas múltiples computadoras. La definición de un sistema operativo distribuido presentada aquí ilustra que este tipo de sistema oculta la existencia y distribución de múltiples computadoras. Los usuarios que trabajan con sistemas operativos de red están conscientes de donde está localizado cada tipo derecurso usado. El sistema operativo de red está construidosobre un conjuntose sistemas operativos centralizados (locales) existentes y maneja la interface y coordinación de operacionesremotas y las comunicaciones entre los sistemas operativos locales. Por otra parte,el sistema operativo distribuido es construido tomando en cuenta elhardware, para controlar y optimar todas las operaciones y recursos en un sistema distribuido, no solamente el nivel de comunicación de la red. Universidad Autónoma Metropolitana. Unidad lztapalapa 121 Capitulo 4 CARACTERiSTlCAS BASCAS DE,LOS SISTEMAS OPERATIVOS DE RED Los dos factores principales tomados en cuenta para desarrollar e implementar sistemas operativos de red para redes deárea local y redes de área ancha son: 1. Un deseo de mejorar el rendimiento de las computadoras sin los límites de la capacidad del procesador. 2. La necesidad de compartir recursos. Los sistemas operativos de red fueronconsiderados como una colección de sistemas operativos de computadoras conectadas a una red incorporando módulos para proporcionar acceso a recursos remotos. Unapercepción tal essimple y barata cuando se implanta, peroen general, un usuario necesita saber la localización de un recursorequerido. Un sistema operativo de red tiene el siguiente conjunto de características que lo distinguen de un sistemaoperativo distribuido: 1. Cadacomputadora tiene susistema operativo privado, en vez de correr parte deun sistema operativo, global, de un sistema grande. 2. Cada usuario generalmente trabaja en su propia computadora o en una computadora designada, usando una computadora diferente que invariablemente requiere algún tipo de “conexión remota”, en lugar de tener un sistema operativo que localice dinámicamente I en procesos las CPUs. 3. Los usuarios están generalmente conscientes de donde está almacenado cada uno de con comandos de sus archivos y deben mover archivos entre computadoras “transferencia de archivos” explícitos, en lugar de tener un administrador de colocación de archivos por parte de el sistema operativo. 4. El sistema tiene poca o ninguna tolerancia a fallas; si un porcentaje de las computadoras personales fallan, un porcentaje de los usuarios estará desocupado, en vez de que cada uno simplemente sea capaz de continuar su trabajo normal, aunque con un porcentaje de rendimiento más bajo. red es ilustrado en la Figura 2. Pueden ser El ambientede un sistemaoperativode distinguidos los siguientes módulos estructurados jerárquicamente: el de comunicación, uno del sistema operativo de red, uno delsistema operativo local y unode los procesos del usuario. El módulodecomunicaciónen el sistema opwativode red proporcionaunaentrega comunicación para las confiable de mensajes entre computadoras y facilidades de computadoras conectadas porla red. La capa del sistema operativo de red proporciona los siguientes servicios: acepta solicitudes para operaciones remotas, determinala localización de recursos necesarios, define formas de iniciación de estas operacionesy servicios de retorno. Es necesario enfatizar que en esta etapa el sistema operativo de red liga y coordir.a las acciones remotas y la comunicación entre sistemas operativos locales. 122 . _ “ Implcmentación un de remoto shell ” “ , Sistemas operativos distribuidos El sistema operativo local es tradicional centralizado. La única diferencia (menor) entre el sistema operativo local y el centralizado es que tiene que llamar al sistema operativo de red cuando una solicitud para una operación de rendimiento no puede ser servida localmente. Esto significa que el sistema operativo local ve al sistema operativo de red como un servidor local, normal. La cuarta capa de el sistema operativo de red es creada por los usuarios. Computadora A Computadora B Procesos delusuario Procesos del usuario Sistema operativo local Sistema operativo local Sistema operativo de red Sistema operativo de red Módulo de comunicación Módulo de comunicación A Red de computadorh Figura 2. Un entorno deun sistema operativo de red. DIFERENCIAS ENTRE SISTEMAS OPERATIVOS DE RED Y SISTEMAS OPERATIVOS DISTRIBUIDOS Las diferencias entre los sistemas operativos de red y los sistemas operativos distribuidos pueden simplementeser explicados basándose enel análisis de la localización de los módulos delacomunicación entre procesosenuna estructura jerárquica desistemas operativos un sistema centralizados, y su influencia en los servicios ofrecidos a los usuariosde distribuido. Para iniciar esta explicación es útil analizar los sistemas operativos centralizados. El modelo de un sistema operativo centralizado y los servicios que están disponibles para un usuario se ilustran en la Figura 3. Universidad AutónomaMetropolitana. Unidad lztapalapa 123 Capítulo 4 Estructura jerárquica de un sistema operativo centralizado Servicios ofrecidos al usuario. accesiblesRecursos Archivos Impresoras, graficadores Procesamiento Procesos I Figura 3. Laestructurajerárquica de un sistema operativo centralizado y los servicios ofrecidos a un usuario, si los recursos adecuados están disponibles. Este modelo basado en el concepto jerárquico es muy útil cuando se analiza la influencia de la localizacióndeun sistema de comunicacribn entre procesos, tomandoencuenta los servicios proporcionados a un usuario, en otras palabras, los recursos ofrecidos a un usuario. Se supone que los diferentes recursos están conectados a una red como se ilustra en la Figura 4. Para simplificar el análisis, se ha supuesto, que al menos un recurso de cada tipo está en la red. Esto significa que un conjunto de recursos, similares a aquellos en un sistema centralizado, está disponibles para los usuarios que están trabajando en la red. La localización de los módulosdecomunicación entre procesos (IPC) en la estructura jerárquica del sistema operativo para un sistema distribuido y los servicios remotos ofrecidos a un usuario son ilustrados en la Figura 5. I Se ve que entre más bajo esté colocado el módulo de comunicación entre procesos, la transparencia de la red aumenta. Un análisis de la Figura 5.c muestra sin embargo, que solamente la estructura del sistema operativo que contiene el módulo de comunicacióv erYre procesos como unaparte integral de la capa de administración de procesos suministra servicios que completan los requerimientos del sistema operativo distribuido, que es, solamente como una estructura que oculta la localización de recursos. Un sistema de red típico es una colección de sistemas operativos centralizados locales en compañía de impresoras, graficadores y servidores de archivo conectados juntos por medio de una red. El sistema operativo dered ve los recursoscomo localizados por suspropias computadoras. Esto implica quelos usuariosque desean correr un procesoremotamente, tienenqueconocersu localización correcta en la red. Después de esto, el usuario debe asociar sus procesos con el proceso remoto, y en1:iar una solicitud para correr ese proceso en lacomputadora escogida. El sistema operativo local destino verá eseproceso como un proceso recientemente creado. Así, si se requiere alguna sincronización con cualquier proceso de la computadora fuente, esta operación es responsabilidad del usuario y sólo es parcialmente soportada por el sistema. Implementación un de 124 . ~"*.-m shell remoto -l.. . Sistemas operativos distribuidos Servidor de Archivo Disco duro Servidor de Impresora Impresora 1 Servidor de impresora Impresora 2 I I I Subsistema de comunicacion g Servidor de graficador Graficador Servidor de nombre Computadora I I I I I Procesador M o Usuario 1 I Usuario N m w Servidores de Procesamiento Figura 4. Red basada en un sistema distribuido. I Resumiendo, se puede decir que cualquier sistema operativo maneja funciones; administra procesos, la E/S, dispositivos, archivos, y en general la administración de recursos es llevada a cabo como funciones un conjunto de funciones locales autónomas. Estas funciones deben interactuar, pero las decisiones locales son hechas sin considerar los procesos y recursos remotos. Las decisiones y control orientado a operaciones remotas son hechas solamente en el nivel decomunicación de red. En cambio, un sistema operativo distribuido es un sistema operativo de red simple visto lógicamente como un sistema operativo simple que existe para todas las computadoras (componentes) distribuidos(s). No hay sistemas operativos individuales para las computadoras conectadas poruna red. Los usuarios no se enteran en dónde están almacenados sus archivos; ni tampoco donde son ejecutados sus programas por procesos remotos. La tolerancia a fallas es muy alta. Todas las decisiones y control son (deberían ser) llevadas a cabo globalmente; los recursos dentro de la red son administrados de forma global usando mecanismos globales más que mecanismos locales: en suma, la diferencia principal entre éstos dos conceptos de sistemas operativos es la forma de ser y administrar las recursos (global o localmente). MIGRACIONES EN UN SISTEMA DISTRIBUIDO usuario enla instalación A quiere acceder a datos (por ejemplo, un archivo) que residen en la instalación B, existen dos métodos básicos para que el sistema transfiera los datos. Una estrategia es transferir todo el archivo a la instalación A y, a partir de ese momento, todo acceso al archivo es local. Cuando el usuario ya no requiere acceso al archivo, se envía de regreso una copia a la instalación B (si el archivo ha sido modificado). Si se ha efectuado una modificación mínima a un archivo de gran tamaiio, hay que transferir todos los datos. ÉSta estrategia se utiliza en el sistema de archivos Andrew. Migración de datos. Siun Universidad Autónoma Metropolitana. Unidad lztapalapa 125 Capítulo 4 ESTRUCTURA JERÁRQUICA DE UN OPERATIVO SISTEMA DE RED SERVICIOS REMOTOS OFRECIDOS A UN USUARIO Administrador de archivo Operaciones de archivo 1 a) La IPC yace sobre la capa de administración de los dispositivos de EIS Administrador de archivo Administrador de dispositivos de EIS Operaciones de archivo remotas Impresi6n y graficacibn remotas ..IPC- Administrador de memoria Administrador de procesos b) La IPC yace sobre la capa de administración de memoria t Administrador de archivo Administración de dispositivos de EIS Administración de memoria Administración de procesos y de la IPC I I Operaciones de archivo remotas Impresión y graficación remotas Creación de procesos remotos, protección, sincronización, etc. I c) La IPC es una parte integral de la capa de administración de procesos Figura 5. Colocación de unIPC en una estructura de un sistema operativo. El otro enfoque consiste en transferir a la instalación A sólo las porciones del archivo que en ese momento realmente son necesarias para la tarea actual. Si más tarde se requiere otra porción se efectuará otra transferencia y, cuando el usuario ya no quiera acceder al archivo, todas las porciones modificadasse deberán enviar de regreso a B. El protocolo del Sistema de El sistema también debe Archivos en Red (NFS) de Sun Microsystemsutdizaéstemétodo. realizar varias traducciones de los datos si las instalaciones no son directamente compatibles. Migración de cáilculos. En ciertas circunstancias puede ser más eficiente transferir los cálculos por el sistema, en vez de los datos. Por ejemplo, considérese un trabajo que necesite acceder a varios archivos degran tamaño que residen en instalaciones diferentes, para obtener un resumen de ésos archivos. Sería más eficiente que el acceso a los archivos se efectuara en las instalaciones donde residen yluego enviar los resultados deseados a la instalación que inició los cálculos. Hay varias maneras de llevar a cabo éstos cAlculos. Suponga que el proceso p requiere acceder a un archivo en la instalación A. El acceso al archivo se lleva a cabo en la instalación A y podría iniciarse mediante una llamada a procedimiento remoto; el proceso p invoca un a procedimiento predefinido de la instalación A, el cual se ejecuta y devuelve a p los parámetros necesarios. ! Implementación de 126 ",- un shell remoto Sistemas operativos distribuidos Como alternativa, elprocesoppuede enviar un mensajeala instalación A. El sistema operativo en A crea un nuevo proceso q, cuya función es realizar la tarea especificada; cuando q termina su ejecución, envía a p el resultado requerido par medio del sistema de mensajes. En éste esquema, los procesos p y q pueden ejecutarse concurrentemente y, de hecho puede haber varios procesos concurrentes endistintas instalaciones. Puedenusarse ambos esquemaspara el acceso a archivos que residen en varias instalaciones. Unallamadaaprocedimiento remoto puedegenerar otra llamada del mismo tipo, o incluso la transferencia de mensajes a otra instalación. De manera parecida, el proceso q puede, durante su ejecución, enviar un Fensaje a otra instalación, creándose otro proceso a que a su vez puede repetir el ciclo o enviar un mensaje de regreso q. ’ Migración de procesos. Cuando se presenta un proceso para su ejecución, no siempre se ejecuta en la instalación que lo inició. Puede ser provechoso ejecutar todo el proceso, o alguna parte, en instalaciones diferentes por varias razones: 1. Equilibrio de cargas. Distribución de subprocesos (particiones de un proceso mayor) en una red. 2. Aceleracidn de c8lculos.Ejecución concurrente de subprocesos. 3. Preferenciasdehardware. El proceso podría ejecutarse más eficientemente en determinado hardware. 4. Preferencias de software. Cierto software para 1un proceso podría estar sólo disponible en determinada instalación. \ Básicamente existen dos técnicas complementarias que se empleanparamoverprocesos en una red. El sistema puede intentar ocultar el hecho de que el proceso se ha movido del lugar donde está el cliente. Éste esquema tiene la ventaja de que el usuario no necesita codificar su programa explícitamente para lograr la migración, y generalmente se emplea para equilibrar las cargas y acelerar los cálculos entre sistemas homogéneos. El otro enfoque consiste en permitir (o requerir) que el usuario especifique explícitamente como debe migrar el proceso. Por lo general éste método se emplea cuando el proceso se debe mover parasatisfacer una preferencia de hardwareo software. ASPECTOS DE DISEÑO El reto para muchos diseñadoresha sido ofrecer al usuario transparencia en la multiplicidad de procesadoresy dispositivos de almacenamiento. Un sistema distribuido transparente, facilita la movilidad del usuario, transportando su entorno (por ejemplo, su directorio base) al lugar donde se conecte. Tantoel sistema de archivos Andrew como el proyectoAthena ofrecen esta funcionalidad a gran escala. Universidad AutónomaMetropolitana. Unidad lztapalapa 127 Capítulo 4 El término tolerancia a fallas es muy amplio. Las fallas decomunicación, las fallas de los dispositivos de máquina (del tipo que detiene su operación), los choques en almacenamiento ylas fallas en los medios de almacenamiento, se consideran fallas que deben tolerarse en cierto grado. Unsistema tolerante debe continuar su funcionamiento, quizá de manera degradada, cuando se enfrente a ellas.Dicha degradación puede ser en cuanto a rendimiento, funcionalidad o ambas, pero debe ser proporcional, de alguna forma, a las fallas detiene cuando sólo fallan uncz que la ocasionaron. No es tolerante un sistemaquese cuantos de sus componentes. El sistema DEC VAXcluster permite que varias computadoras compartan un conjunto de discos. Si falla un sistema, los usuarios pueden acceder aún a su información desde otro sistema. A la capacidad de un sistema para adaptarse a un incremento en el serviciose le llama capacidad de escalación. Por ejemplo, respecto a u? sistema de archivos, una saturación se presenta cuando la tasa de utilización de l a CPU del servidor es muy elevada o cuando los discos están casi llenos. La capacidad de escalación es una propiedad relativa, pero puede medirsecon precisión. Unsistema escalar debe reaccionar conmayorsuavidadanteun aumentode la carga que un sistema no escalar. Elproblemapuede resolverse añadiendo nuevos recursos, pero se puede generar una carga indirecta adicional en otros recursos (por ejemplo, al añadir máquinas a un sistema distribuido la red puede congestionarse y aumentar las cargas de servicio) o, lo que es peor, la ampliación del sistema puede representar costosas modificaciones en el diseño. En resumen, el diseño escalar debe resistir una elevada carga de servicio, adaptarse al crecimiento de la comunidad de usuarios y permitir una sencilla integración de recursos adicionales. La tolerancia a fallas y la escalación están relacionadas. Un componente con mucha carga puede paralizarse y comportarse como si tuviera una falla. Además, al desplazar la carga de un componente(cuando falla) a su mediodealmacenamientode respaldo, éste se puede saturar. Generalmente es esencial contar conrecursosderepuestoparaasegurar la confiabilidad y para manejar con suavidadlas cargas picos. Las consideraciones de tolerancia a fallar y capacidad de escalación requieren un diseño que presente la distribución del control y los datos. En gran medida, los sistemas distribuidos a muy gran escala son sólo teoría. Un principio paradiseñarsistemasde muy grandeescala esquela demandade servicio de cualquier componente del sistema debe estar limitado por una consfante independiente del número de nodos en el sistema. No debenemplearse los recursos centrales ni los esquemasde control central para construir sistemas escalares (y tolerantes a fallos). Cómo ejemplos de entidades centralizadas se tienen los servidores de validación centrales, los servidores de nombres centrales y los servidores de archivos centrales. La centralización es una forma de asimetría funcional en las máquinas que constituyen el sistema. La alternativa ideal es una configuración funcionalmente sirnéfrica;es decir, todas las máquinas componentes tienen un papel igual en el funcionamiento del sistema y, por consiguiente, cadamáquina tiene un cierto nivel de autonomía. En la práctica, es virtualmente imposible adherirse a este principio, sin embargo, la autonomía y la simetría son objetivos importantes que deben servir como guía. 128 Implementación un de shell remoto Sistemas operativos distribuidos La aproximación práctica a la configuración simétrica y autónoma es el agrupamiento. El sistema se divide en un conjunto de agrupamientossemiautónomos y cada uno consiste en un conjunto de máquinas y un servidor dedicado al agrupamiento. Si .un agrupamiento está bien equilibrado (es decir,si el servidores suficiente para satisfacer todas las demandas del agrupamiento), se puede emplear un bloque de construcción modular para el crecimiento del sistema. I La estructura de procesos del servidores un problema mayor en el diseño de cualquier servicio. Los servidores deben operar de manera eficiente en los períodos pico, cuando hay quedarservicio simultáneamentea cientos de clientes activos. Una opción es asignarun proceso para cadacliente; sin embargo, hay que considerar el costo de los frecuentes cambios de contexto entre procesos. Un problema relacionado es el hecho de que todos los procesos del servidor necesitan compartir información. AI parecer, una de las mejores soluc; ; i s para la arquitectura del servidores la utilización de procesos ligeros o hilos. La abstracción que presenta un grupo de procesos ligeros es que los hilos de control están asociados a algunos recursos compartidos. Usualmente, un proceso ligero no está limitado a un cliente, sino que atiende las solicitudes de varios. Los hilos de planificación pueden ser expulsivos o no expulsivos. Si se permite que los hilos se ejecuten hasta finalizar, entonces no senecesita proteger explícitamente los datos compartidos; de Io contrario, es necesario usar un mecanismodecerradura explícita. Es indispensable algún tipo deesquemade p! 'xesos ligeros para que los servidores tengan capacidad deescalación. COORDlNAClÓN DISTRIBUIDA I Aquíse analizarán los mecanismos que hacen posible la sincronización y comuniclciin entre procesos, así como los métodos para tratar con el problema de los bloqueos mutuos, y con los problemas particulares que presenta sólo un sistema distribuido a diferenciLrde un sistema centralizado. ORDENACIóN DE SUCESOS En un sistema centralizado siemprees posible determinar el ordenenqueocurren dos sucesos, ya que se disponedeuna memoria y un reloj comunes y únicos. En muchas aplicaciones la posibilidad dedeterminar el orden tiene importancia primordial, como en la asignaciónde recursos. Sin embargo, en un sistema distribuido no hay ni memoria ni reloj comunes, por lo que la relación de ocurrencia previa es únicamente una ordenación parcial de los sucesos.Como la capacidadpara definir unaordenación total es crucial en muchas aplicaciones, se presenta un algoritmo distribuido para ampliar la relacióndeocurrencia previa con el propósito de obtener una ordenación total y consistente de todos los sucesos en el sistema. Universidad Autónoma Metropolitana. Unidad lztapalapa 129 Capítulo 4 La relación de ocurrencia previa: Consideraciones: 1. Sólo se consideran procesos secuenciales, por lo que todos los sucesos que se ejecutan en un proceso están completamente ordenados. 2. Por laley de causalidad, sólo puede recibirse un mensajedespuésde quese hay? enviado. 3. Tanto el envío como la recepción de un mensajeson sucesos. La relación de ocurrencia previa (denotada con +) para un conjunto de sucesos se define de la manera siguiente: J 1. Si A y B son sucesos en el mismo proceso y A se ejecutó antes que B, entonces A+B. 2. Si A es el suceso de envío de un mensaje de un proceso y B es el suceso de recepción . de ese mensaje por otro proceso, entonces A+B. 3. Si A+B y B+C, entonces A - K . Como un suceso no puede ocurrir antes de si mismo, la relación parcial irreflexiva. + es una ordenación Si dos sucesos A y B, no están relacionados por + (es decir, A+B y B+A), entonces se puede decir que ambos procesos se ejecutan concurrentemente. Enéste caso, ninguno de los procesos afecta causalmente al otro; sin embargo, si A+B, es posible que el suceso A afecte al suceso B. Las definiciones de concurrencia y ocurrencia previa se ilustran con un diagrama espaciotiempo en la Figura 6. La dirección horizontal representa el espacio (procesos distintos) y la vertical señala el tiempo. Las líneas verticales etiquetadas denotan procesos(o procesadores), mientras que los puntos etiquetados indican sucesos. Viendo el diagrama se concluye que los sucesos A y B son concurrentes si y sólo si no existe una ruta de A a B o de B a A. (Figura 6). 1 Q P Figura 6. Tiempo relativo para tres procesos concurrentes. Observando la Figura 6, algunos de los sucesos relacionados por la relación de ocurrencia 130 Implementación shell un de I. R remoto Sistemas operativos distribuidos previa son: Algunos de los sucesos concurrentes enel sistema son: PO Y 90 90 Y rl ro Y 91 1 ' No se puede saber cuál de dos procesos concurrentes ocurrió primero, sin embargo como algunos de ellos no puede afectar al otro, esto no es importante. Lo importante es que los procesos que se interesan por el orden de dos sucesos concurrentes estén de acuerdo en algún tipo de ordenación. Implanfaci6n. Paradeterminarqueun suceso A ocurrió antesque un sucesoB, se necesita un reloj común o un conjunto de relojes perfectamente sincronizados. Como ninguno de éstos existe en un sistema distribuido, se debe definir la relación de ocurrencia previa sin emplear relojes físicos. A cada suceso del sistema se le asocia una marca de tiempo; luego, se puede definir el requisito de ordenación global: para todo par desucesos A y B, si A+B, entonces la marca de tiempo de A es menor que la de B. (Obsérvese que el caso contrario no tiene por qué ser verdadero). En un entorno distribuido para implantar la ordenación global en cada proceso Pi se define un reloj Iógico, RLi. Este reloj lógico puede implantarse como un contador sencillo que se incrementa entre cualquier par de sucesos consecutivos que se ejecuten en un proceso.Como el reloj lógico tiene un valor monbtonamente creciente, asigna un número a cada suceso, y si un suceso A ocurre antes queel evento B enel proceso P, entonces RLI(A)< RL,(B). Este esquema asegura que se cumpla el requisito ¿e ordenación global para cualquier par desucesosen un mismo proceso, peronoaseguradicho requisito entre procesos. Para ilustrar el problema, considérenselos procesos PI y P2,que se comunicanentre sí. Supóngase que P, envía un mensaje a P2 (suceso A) con RL1(A)=200, y PZrecibe el mensaje (suceso B) con RL2(B)=195(por que el procesador de Pzes más lento que el procesador de PI, y su reloj avanza más despacio). Para resolver ésta dificultad se requiere que un proceso adelante su reloj lógico cuando reciba un mensajecuyamarcade tiemposea mayorqueel valor desu reloj lógico. Concretamente, si elproceso Pi recibe un mensaje (suceso B) conmarcade tiempo t y RLi(B)<t,entoncesdebeadelantar su reloj de manera que RLi(B)=t+l. Así, enel ejemplo, cuando P2, recibe el, mensajede PI, RLzadelantarásu reloj lógico de manera que RLz(B)=201. Universidad AutónomaMetropolitana. Unidad lztapalapa 131 Capítulo 4 Para efectuar unaordenación total, se tiene queobservar que, con el esquemade ordenación propuesto pormarca de tiempo, si las marcas de tiempo de dos sucesosA y B son iguales, entonces los sucesos son concurrentes. En este caso se pueden emplear los números de identidad de los procesos para romper el empate y crear una ordenacióntotal. EXCLUSION MUTUA En esta parte se presentan varios algoritmos para implantar la exclusión mutua en un entorno distribuido. Se supone que el sistema consta de n procesos, cada uno de los cuales reside en un procesador distinto. Para simplificar el análisis, se suponetambién que los procesos tienen una numeración Qnica de unoea n, y que hay una relación uno a uno entre procesos y procesadores (es decir, cada procesotiene su gropio procesador). Enfoquecenfralizado. Con el enfoque centralizado paraproporcionar la exclusión mutua, se escoge uno de los procesos en el sistema para coordinar la entrada a la sección crítica. Cada proceso que quiere invocar la exclusión mutua envia un mensaje de solicitud al coordinador. Cuando el proceso recibe un mensajederespuesta del coordinador, puede continuar y entrar a su sección crítica. Después de salir de allí, el proceso envía al coordinador un mensaje de liberación y prosigue su ejecución. AI recibir un mensaje de solicitud, el coordinador comprueba si algún otro proceso está en su sección crítica. Si nohay alguno, el coordinador envía deinmediatounmensajede respuesta; de lo contrario, la solicitud se coloca en la cola. Cuando el coordinador recibe un mensaje de liberación saca uno de los mensajes de solicitud de la cola (de acuerdo con algún algoritmo de planificación) y envía un mensaje de respuestaal proceso solicitante. Este algoritmo asegura la exclusión mutua. Si la política de planificación del coordinador es justa (como la planificación de servicio por orden de llegada), no puede ocurrir el bloqueo indefinido. Este esquema requiere tres mensajes por cada entrada a la sección crítica: una solicitud, una respuesta y una liberación. Si falta el proceso coordinador, entonces un nuevo proceso debe ocupar su lugar. Una vez que se elige un nuevo coordinador, éste debe llevar a cabo un ondeo entre los procesos en el sistema para- reconstruir sucola de solicitudes y, después de esto, puedenreanudar los cálculos. P El algoritmo siguiente está basado ,-n el esquema de ordenación de sucesos descrito anteriormente. Enfoquecomplefamenfedistribuido. de Cuando un proceso Pi quiere entrar en susección critica, generaunanuevamarca tiempo, NIT, y envía el mensaje solicitud (Pi, MT) atodos los procesos del sistema (incluyéndose a si mismo). AI recibir un mensaje de solicitud, un proceso puede responder de inmediato (es decir, enviar un mensaje de respuesta a Pi) o puede diferir la respuesta (pues, 132 Implementación un de l"l." l. P remoto shell ."._ ___". Sistemas operativos distribuidos __ - por ejemplo, ya se encuentra en su secci6n crítica). Un proceso que harecibido un mensaje de respuestadetodos los demás procesosen el sistema puede entrar en su sección crítica colocandoenuna cola todas las solicitudes que reciba y posponiendo sus respuestas. Después de salir de su sección crítica, el proceso envía mensajes de respuesta a todas las solicitudes que difirió. " La decisión de si el proceso Pi responde de inmediato a difiere su respuesta, depende de tres factores: un mensaje solicitud (Pi, MT) o 1. Si el proceso Pi se encuentra en su sección crítica, entonces difiere su respuesta a Pi. 2. Si el proceso Pi no quiere entrar en su sección crítica, entonces envía de inmediato una respuesta a Pi. 3. Si el proceso Pi quiere entrar en su sección Crítica pero aún no lo ha hecho, entonces compara la marca de tiempo de su solicitud con la marca de tiempo MT de la solicitud efectuada por el proceso Pi. Si su propio marco de tiempo es mayor que MT, entonces envía inmediatamente una respuesta a Pj (Pi lo solicitó antes); de lo contrario, se difiere la respuesta. Este algoritmo presenta el siguiente comportamiento deseable: 1. Se obtiene la exclusión mutua. mutuos. 2. Se asegura que no haya bloqueos 3. Se asegura que no existan bloqueos indefinidos, ya que la entrada en la sección crítica se planifica de acuerdo con la ordenación de,la marca de tiempo, lo que asegura que los procesos se atiendan por orden dellegada. 4. El menor número de mensajes requeridos por entrada a la sección crítica cuando los procesos actúan independientey concurrentementees 2x(n-1). Este esquema requiere la participación de todos los procesos del sistema. Este enfoque tiene tres consecuencias indeseables: l.Los procesos necesitan conocer la identidad de todos los demás procesos. Cuando un nuevo proceso se une al grupo queparticipa en el algoritmo de exclusión mutua, hay que iniciar las siguientes acciones: a) El proceso debe recibir los nombres de todoslos demás procesos enel grupo. b) Hay que distribuir el nombre del nuevo proceso alos demás procesosdel grupo. 1. Si falla uno de los procesos, se viene abajo todo el esquema. Se puede resolver éste problema supervisando continuamente el estado de todoslos procesos en el sistema. Si solicitud. uno falla, se notifica a los demás para queya noleenvíenmensajesde Cuando el proceso se recupere debeiniciar el procedimiento que le permita integrarse de nuevo al grupo. 2. Los procesosquenohanentradoen susección critica deben efectuar pausas frecuentes para asegurar, a los demás procesos, que pretenden entrar en su sección crítica. Por lo anterior, éste protocolo es adecuadolpara pequeños conjuntos estables de procesos cooperativos. Universidad Autónoma Metropolitana. Unidad lztapalapa 133 Capítulo 4 Enfoque de paso de testigo. Un testigo es un tipo de mensaje especial que pasa por el sistema, y la posesión del testigo permite entrar en la sección crítica. Puesto que sólo existe un testigo en el sistema, únicamente. puede haber un proceso en su sección crítica al mismo tiempo. Mientras los procesos estén conectados entre sí, es posible implantar un anillo lógico, haciendo circular por éI el testigo. Cuando un proceso recibe el testigo, puede entrar en su sección critica, reteniendo el testigo. Una vez que el proceso sale de su sección critica, vuelve a pasarse el testigo. Si el proceso que recibe el testigo, no quiere entrar a su sección crítica, lo pasa a su vecino. Si el anillo es unidireccional, se asegura que no se presenten bloqueos indefinidos. El número de mensajes requeridos para implantar laexclusión mutua puede variar desde un mensaje de entrada, en el caso de un alto nivel de contiendas (es decir, todos los procesos quieren entrar a su seccióncrítica), hasta unncmero infinibde mensajes si el nivel de contienda es bajo (ningún proceso quiere entrar a su sección crítica). Hayque considerar dostiposdefallas:primero,si el trabajo se pierde, es necesario convocar una elección para generar uno nuevo; segundo, sí falla un proceso, se debe establecer un nuevo anillo lógico. PREVENCIóN DE BLOQUEOS MUTUOS Los algoritmos de prevención y evitación de bloqueos mutuos convencionales, pueden emplearse enun sistemadistribuido,si se efectúan las modificaciones necesarias. Por ejemplo, para emplear la técnica de ordenación de recursos para la prevención de bloqueos mutuos, se asignan números únicos a todos los recursos del sistema, y un proceso sólo puede solicitar un recurso de cualquier procesador con número y únicamente si no tiene un recurso con número Único menor o igual a i. De manera parecida, en un sistema distribuido, se puede utilizar el algoritmo del banquero, designando a uno delos procesos del sistema (el banquero) para que mantenga la información necesaria para llevar a cabo el algoritmo. Todas las solicitudes de recursos deben canalizares a través del banquero. I La primera estrategia es fácil de implantar y requiere poco tiempo de procesamiento adicional. La segunda estrategia también es de fácilimplantación, aunque puede requerir demasiado tiempo de procesamiento adicional. Se presenta ahora un esquema de prevención c!e bloqueos mutuos basado en el enfoque de ordenación por marca de tiempo con expropiación de recursos. Por cuestiones de sencillez, únicamente se considera el caso de un solo ejempl?r de cada tipo de recursos. Para controlar la expropiación, se asignav números de prioridad única a cada proceso, los cuales se usan para decidir si un proceso Pi debe esperar a un proceso Pi. Por ejemplo, se puede dejar que Pi espere a Pj si Pi tiene mayor prioridad que Pj, de lo contrario, se retrocede 134 Implementación de ""-.-" remoto un shell " I X - .-. Sistemas operativos distribuidos a Pi. Este esquema previene los bloqueos mutuos, pues para cada arista Pi+Pi del grafo de esperas, Pi tiene mayor prioridad que Pi, por lo que no puedeexistir un ciclo. Un problema con esta estrategia es la posibilidad de los bloqueos indefinidos, ya que es posible quesiempreretrocedanalgunos procesos con prioridad muy baja. Este problema puede evitarse utilizando marcas de tiempo, asignando una marca única ai crear cada uno de los procesos en el sistema. Se han propuesto dos esquemas complementarios que utilizan marcas de tiempo paraprevenir los bloqueos mutuos. Esquema no expropiativo. Cuando el proceso Pi solicita un recurso que en ese momento retiene Pi, se permite que Pi espere sólo si tiene una marca de tiempo menor a la de Pi (es decir, Pi es más viejo que Pj); de lo contrario, Pi retrocede. ' Esquema expropiativo. Cuando un proceso Pisolicita un recurso que en ese momento posee Pi, se permite que Pi espere sólo si tiene una marca de tiempo mayor a la de Pi (es decir, Pi es más joven que Pi); de lo contrario, Pi retrocede (Pi es expulsado porPi). Ambosesquemaspueden evitar los bloqueos indefinidos, siempreque al retroceder un proceso, no se le asigne una nueva marca detiempo. En el esquema no expropiativo, el proceso más viejo debe esperar a que otro más joven libere su recurso. Por tanto, cuanto más envejece un proceso, más tiende a esperar. Por el contrario, en el esquema expropiativo, un procesolviejo nunca espera a unojoven. Además hay menos retrocesos en el esquema expropiativo. El principal problema con estos dos esquemas es que pueden ocurrir retrocesos innecesarios. DETECClbN DE BLOQUEOS MUTUOS El algoritmo de prevención de bloqueos mutuos puede expropiar recursos, incluso si no ha ocurrido ningún bloqueo mutuo. Paraevitar expropiaciones innecesarias, se puede emplear un algoritmo de detección de bloqueosmutuos, construyendo un grafo de esperas quedescriba el estado de asignación de los recursos. Como se supone que sólo hay un recurso de cada tipo, un ciclo en de el grafo esperas representaun bloqueo mutuo. El mayor problema con un sistema con un sistema distribuido es decidir como mantener el grafo de esperas. Se requiere para ello, que cada instalación cuente con un grafo de esperas local. Los nodos del grafo correspondenatodos los procesos (locales o no) queen ese momento poseen o solicitan algunos de los recursos locales de la instalación. (Ver Figura 7). Estos grafos locales de esperas están construidos1 de la manera usual para procesos y recursos locales. Cuando un proceso Pi de la instalación A necesita un recurso que retiene el proceso Pi en la instalación B, Pi envía un mensaje de solicitud a la instalación B; luego se inserta la arista Pi+Pj en el grafo local de esperas de la instalación B. Universidad Autónoma Metropolitana. Unidad lztapalapa 135 Capítulo 4 Si un grafo de esperas local tiene un ciclo, ha ocurrido un bloqueo mutuo. Sin embargo, el sistema completo, se debe para demostrar quenoha ocurrido un bloqueomutuoen demostrar que la unión de todos los grafos locales es acíclica. En la Figura 8 se muestra que ha ocurrido un bloqueo mutuo, aunquesus correspondientes grafos locales son acíclicos. x-x PS Instalación B Instalación A Figura 7. Grafos locales de esperas. Figura 8. Grafo global de esperas para la Figura 7. i Enfoquecentralizado. En el enfoque centralizado, un grafo global deesperas se construye como la unión de todos los grafos locales de esperas, y se mantiene en un proceso Único: el coordinador de detección de bloqueos mutuos. Puesto que existe una demora en las comunicaciones del sistema, se debe diferenciar entre dos tipos de grafos de espera: el grafo real, pero desconocido del sistema en un momento determinado; el grafo construido en una aproximación generada por el coordinador durante la ejecución :de un algoritmo. No es fácil hacer los grafos construidos. Existen tres instantes de tiempo diferentes en los quese esperas: 136 " Implementación un de puede construir el grafo de shell remoto " " , " -x___ . " " " " - Sistemas operativos distribuidos . "" .-. " " I - .." , .. I.Al hlsorlctr o olimitrar urlu urivttr do UI~Od~ los grctlos locales de espora. 2. Peri6dicamente, cada vez que ocurra determinado número de cambios en el grafo de esperas. 3. Cada vez que el coordinador necesite invocar el algoritmo de detección deciclos. Considerando la opción 1, al invocar el algoritmo de detecdión debloqueosmutuos, el coordinador busca en su grafo global; si encuentra un ciclo, se selecciona una víctima para retroceso. El coordinador debe notificar a todas las instalaciones que se ha seleccionado un proceso determinado como víctima; a su vez, las instalaciones deben retroceder el proceso víctima. Con este esquema puedenocurrir retrocesos innecesarios debido a dossituaciones: 1. Pueden existir ciclos falsos en el grafo global de esperas, debido a que se presente una inserción antes de unaeliminación de un recurso. 2. Sirealmenteha ocurrido un bloqueomutuo y se haseleccionado la víctima, pero al mismo tiempo alguno delos procesos ha abortado por razones ajenas al bloqueo mutuo, se presenta retroceso innecesario. Obsérvese que estos otras dos opciones. mismos problemasse heredan en las soluciones que emplean las Se presenta ahora un algoritmo centralizado de detección de bloqueos mutuos,utilizando la opción 3, que detecta todos los bloqueos mutuos que realmente ocurren, y no los falsos. Para evitar que se notifiquen falsos bloqueos mutuos, se requiere que las solicitudes procedentes de distintas instalaciones cuenten con identificadores únicos (marcas de tiempo). Cuando el proceso Pi dela instalación A, solicita un recurso de Pi, enla instalación B, seenvía un mensaje de solicitud con marca de tiempoMT y se inserta una arista Pi+Pi con la etiqueta MT en el grafo local de esperas de A. Esta arista se inserta en el grafo local de B únicamente si B ha recibido el mensaje de solicitud y no puede concederel recurso de inmediato. Una solicitud de Pi a Pi, en la misma instalación, se maneja de la manera habitual, sin asociar marcas de tiempo a la arista Pi+Pj. Entonces, elalgoritmo de detecciónes el siguiente: El controlador envía un mensaje deinicio a aada instalación del sistema. AI recibir éste mensaje, una instalación envía al coordinador su grafo local de esperas. Cada uno de estos grafos contiene toda la información local que tiene la instalación respecto al estado del grafo real. El grafo refleja un estado instantáneo de la instalación, pero no está sincronizado respecto a ningunaotra. Una vez que el controlador ha recibido una respuesta de cada instalación, construye el grafo de la siguiente manera: El grafo construido contiene un vértice para cada proceso enel sistema. El grafo tiene una arista P+Pj si y sólo si existe una arista Pi+Pj en uno delos grafos de esperas ii) aparece una arista P+Pj con una etiqueta MT en más de un grafo de esperas. Universidad AutónomaMetropolitana. Unidad lztapalapa 137 CaDítulo 4 El sistema estará en un estado de bloqueo mutuo si y sólo si hay al menos un ciclo en el grafo construido. Enfoque Jerarquico. El algoritmo jerárquico de detección de bloqueos mutuos es un algoritmo distribuido. Al igual queelenfoque centralizado, cada instalación mantiene su propio grafo local; la controladores diferencia es queel grafo global de esperas se distribuye entre varios organizados en forma de árbol, donde cada hoja contiene el grafo local de esperas de una instalación. Cada controlador que no es una hoja mantiene un grafo de esperas con información relevante sobre los grafos de los controladores que se encuentran en el subárbol bajo él. En particular, sean A, B y C controladores,tales que C sea el antepasado comúnmás cercano de A y B (C es Único, ya que se está tratando con un árbol). Supóngase que el nodo Pi aparece en el grafo local de esperas de A y 6; entonces, Pi también debe aparecer en el grafo local de 1. El controlador C. 2. Cada uno de los controladores en el camino de C a A. 3. Cada uno de los controladores en el camino d e C a B. Además, si Pi y Pi aparecen en el grafo de esperas del controlador D y existe un carnino de Pi a Pj en el grafo de uno de los hijos de D, entonces debe Aparecer en el grafo D una arista Pl+Pj. Si hay un ciclo en cualquiera de los grafos de espera, entonces el sistema está en estado de bloqueo mutuo. Para ilustrar este enfoque considérese el sistema de la Figura 7; en la Figura 9 se muestra un árbol para este sistema. I N enfoque completamente distribuido. En el algoritmo completamente distribuido de detección de bloqueos mutuos, todos los controladores comparten de manera equitativa la responsabilidad de detectar bloqueos mutuos. En este esquema, cada instalación, construye un grafo de esperas que representa una parte del grafo total, dependiendo del comportamiento dinámico del sistema. La idea es que, si hay un bloqueo mutuo, aparecerá un ciclo en (por lo menos) uno de los grafos parciales. Se presenta a continuación un algoritmo de este tipo que comprende la construcción de grafos parciales en cada instalación. Cada instalación mantiene su propio grafo local de esperas, añadiendo un nodo adicional Pcx.En el grafo hay un arco Pi->P,, si Pi espera, de otra instalación, un elemento de datos retenido por cualquier proceso. De manera similar, hay un arco P,x->Pj en el grafo si existe un proceso en otra instalación que desea adquirir un recurso que en ese momento retiene Pj en esta instalación local. Para ilustrar esta situación considérense los dos grafos locales de esperas de la Figura 7. AI añadir el nodo PC, en ambos, se obtienen los grafos locales presentados en la 138 Implementación deremoto un shell Sistemas operativos distribuidos "_"" ".-" ". Figura 10. Si ur, grafo ioca!dessperascontiene un cicloque no incluyeal nodo P, entonces el sistema está en estado de bloqueo mutuo. Sin embargo, si existe un ciclo que comprende P, significg que hay la posibilidad de un bloqueo mutuo. Para afirmar que se presenta un bloqueo mutuo, hay que lrlvocar un algoritmo distribuido de detección. 1 Instalación C Figura 9. Grafo de esperas jerárquico. l""---- !nstdación I, lmtalación l2 Figura 10. Grafos locales de esperas. Supbngase que en la instalación I, es grafo local de esperas contieneun ciclo que implica al Este c~clo *jebe ser de la forma nodo PtK. ) P k l - >Kk2 -+,..+Kn+Pey, I . /(. , , . . UniversidadAutónomaMetropolitana.Unidadlztapalapa , 139 CaDítulo 4 que indica que la transacción Pkn en li espera adquirir un elemento de datos de alguna otra instalación, por ejemplo, Ij. AI descubrir este ciclo, la instalación Ij manda a la instalación I, un mensaje de detección de bloqueosmutuos que contiene información sobre el ciclo. Cuando la instalación lj recibe el mensaje de detección de bloqueos mutuos, actualiza su grafo local de esperas con la nueva información. Lilego consulta el grafo recién construido en busca de un ciclo que no comprenda a Po,, si existe, se ha encontrado un bloqueo mutuo y se invoca un esquema de recuperación apropiado.. Si se descubre un ciclo que implica a PC,, bloqueos mutuos a la instalación entonces Ij transmite un mensaje de detección de correspondiente, por ejemplo Ik. La instalación lk, a su vez, repite el procedimiento. De ésta manera, tras un número finito de rondas, se descubre un bloqueo mutuo o se detienen los c5lculos de detección de bloqueos mutuos. SOLIDEZ Un sistema distribuido puede padecer varios tipos de fallas de hardware, de las cuales las más habituales son la falla de un enlace, la de una instalación y la pérdida de un mensaje. Para asegurar que el sistema es sólido, se debe detectar cualesquiera de estas fallas, reconfigurar el sistema para que los cálculos puedcn continuar y recuperarlo cuando se repara una instalación o un enlace. Detección de fallas. En un entorno que no tiene memoria compartida, generalmente no es posible distinguir entre una falla de enlace, una falla de instalación y la pérdida de un mensaje. Para detectar las fallas de enlace e instaiaciones se utiliza un procedimiento de intercomunicación. Supóngase que existe un enlace físico directo entre las instalaciones A y B. A intervalos fijos, las dos instalaciones envían un mensaje ‘Estoy bien’. Si la instalación A no recibe este mensaje después de cierto tiempo, puede Fuponerse que ha fallado la instalación B, que I ia fallado el enlace entre A y B o que se ha perdido el mensaje de B. La instalación A puede tratar de distinguir entre una falla de enlace y una de instalación enviando a B un mensaje, ‘‘Está usted bien?’ por otra ruta (si existe). Como no se sabe por adelantado cuánto tardará en llegar el mensaje de A a B y en volver, se debe usar el esquema del tiempo límite. En el momento en que A envía el mensaje ‘¿Está usted bien?’ especifica un intervalo de tiempo durante el cual está dispuesta a esperar una respuesta de B. Si A recibe el mensaje de respuesta en ese intervalo puede llegar a la conclusión de que B está lista; sin embargo, si no recibe en ese intervalo, A puede llegar a la conclusión de que al menos ha ocurrido una de las situaciones siguientes: l. Ha fallado la instalación B. 2.No funciona el enlace directo (si existe) entre A y B. 3. No funciona la ruta alternativa entre A y B. 140 Implementación de remoto un shell ”.. Sistemas operativos distribuidos 4. Se ha perdido el mensaje. No obstante, la instalación A no puede decidir cuál es la queha ocurrido (o cuáles). Reconfiguración. Si la instalación A ha descubierto, que ha ocurrido una falla, entonces se debe iniciar un procedimiento que permita al sistema reconfigurar y continuar su modo normal de funcionamiento. 1 Si ha fallado un enlace directo entre A y B, ésta información se debe difundir a todas las instalaciones del sistema, para que las tablas de encaminamiento puedanactualizarse. ' Si se creeque ha fallado una instalación, se ledebe notificar acadaunade las instalaciones del sistema paraque ya no intenten usar los servicios dedicha instalación. Nótese que la falla puede ser en una instalación que sirve de coordinador central de alguna actividad, por lo queen éste caso se requiere la elección deunnuevo coordinador. Si la instalación que falla es parte de un anillo lógico, hay que construir uno nuevo. Recuperacidn despues de fallas. Después de reparar una instalación o enlace fallido debe integrarse al sistema gradualmente y sin brusquedades. Si ha fallado un enlace entre A y B, o bien han fallado las instalaciones A o 6 ,se debe notificar al sistema. ACUERDOS Para que un sistema sea confiable se necesita un mqcanismo que permita a un conjunto de procesos ponerse de acuerdo en un Valot'común. Existen varias razones por las cuales es posible queno se logre este cuerdo. Enprimer lugar, elmediodecomunicaciónpuede presentar fallas, produciendomensajes alterados o perdiéndolos. Segundo, los procesos pueden tenererrores, comportándose demanera imprevisible. Este problema ha sido expresado como el problema de los generales bizantinos. Varias divisiones del ejército bizantino, cada una con su propio general, rodean un campamento del enemigo. Los generales bizantinos deben llegar a un acuerdo sobre si deben atacar o no, al amanecer. Es crucial que estén de acuerdo,ya que el ataque de sólo algunas de las divisiones sería rechazado.Las divisiones están dispersas geográficamente, y los generales sólo se pueden comunicar entre ellos por medio de mensajeros que corren de un campamento a otro. Hay por lo menos dos razones por las cuales es posible que los generales no lleguen a un acuerdo: l . Los mensajeros pueden ser capturados por el enemigo: esta situación corresponde a una situación poco confiable. 2. Puede haber generales traidores; esta situación corresponde a los procesos con fallas en un sistema de computación. Universidad Autónoma Metropolitana. Unidad lztapalapa 141 Capítulo 4 Comunicaciones poco confiables. Supóngase que, si los procesos fallan, lo hacen de m?.:-!xa limpia, y queelmediode comunicacioneses poco confiable. Supóngase queel proceso Pi en la instalación A, que ha enviado un mensaje al proceso Pi de la instalación 6 , necesita saber siPj ha recibido el mensaje para decidircomo continuar sus cálculos. Por ejemplo Pi, puede decidir calcular una función S si Pj ha recibido su mensaje, o una función F si P, no lo ha recibido (por alguna falla del equipo). Para detectar fallas se puede emplear un esquema de tiempo limife. Cuando Pi envía un mensaje, también especifica un intervalo de tiempo durante el cuál está dispuesto a esperar un mensaje de confirmación de Pj. Cuando Pj recibe el mensaje, envía de inmediato una confirmación a Pi; si éste la recibe dentro del intervalo de tiempo especificado puede suponer con seguridad que Pj ha recibido su mensaje. Sin embargo, si vence el tiempo límite, Pi necesita volver a transmitir su mensaje y esperar una confirmación. Este proceso continúa hasta que Pi reciba un mensaje de confirmación o el sistema le notifique que la instalación 6 no está disponible. En el primer caso se calculará S; en el segundo, se calculará F. Observe que, si son las únicas alternativas viables, Pi deberá esperar hasta que se le notifique una de las dos. ha recibidos su mensajn de Supóngase ahora que Pi también necesita sabersiPi confirmación para que pueda decidir cómo proceder con sus cálculos. Por ejemplo, Pj querrá calcular S únicamente si está seguro de que Pi recibió su confirmación. En otras palabras, Pi y Pj calcularán S si y sólo si están de acuerdoy, si se presenta una falla, no será posible lograrlo. Concretamente, no es posible que Pi y Pj lleguen a un acuerdo total sus estados respectivos en un entorno distribuido. I Procesos con fallas.Supóngase que el medio de comunicaciones es confiable, pero que los procesos pueden fallar de manera imprevisible. Considérese un sistema de n procesos, en el cuál no hay más de m que tengan fallas. Supóngase además que cada proceso Pi tiene un valor privado Vi y se desea construir un algoritmo que permita que cada proceso Pi sin fallas construya un vector Xi = (Ai,,, Ai,2 ,..., Ai,,) tal que I 1. Si Pi es un proceso sin fallas, entonces Ai,j = Vj. 2. Si tanto Pi como Pj son procesos sin fallas, entonces Xi = Xi. Existen varias soluciones para este problema, que es el de los generales bizantinos, y todas comparten las mismas propiedades: 1. Sólo puede elaborarse un algoritmo correcto si n 2. 3 , m + l . 2. La demora, en el peor caso, para llegar a un acuerdo es proporcional a m + l demoras producidas por el paso de mensajes. 3. El número de mensajes requeridos para llegar a un acuerdoes muy grande. Ningún proceso es confiable, por lo que todos los procesos deben recopilar toda la información y tomar sus propias decisiones. I En vez de presentar una solución general, lo cuál sería bastante complicado, se presenta un algoritmo para el caso donde m = l y n=4. El algoritmo requiere dos rondas de intercambio 142 Implcmentación deremoto un shell Sistemas oDerativos distribuidos de información: 1. Cada proceso envíasu valor privado a los otros tres procesos. 2. Cada proceso envía alos demás la información que ha obtenido en la primera ronda. Unprocesocon fallas puedenegarsea enviar mensajes. En este caso, un proceso sin fallas puede elegir un valor arbitrario y simular que esevalor fue enviado por eseproceso. Una vez quese completan las dos rondas, un procesosin fallas Pi puede construir su vector Xi = (Ai,,, Ai,*, Ai,J,Ai,J de la manerasiguiente: 1 1. Ai,i = Vi. 2. Para j#i, si concuerdan por lo menos dos de los tres valores notificados sobre el proceso Pi (en las dos rondas deintercambio), entonces se utiliza el valor mayoritario para asignar el valor de Ai,i; de lo contrario, se utiliza un valor por omisión (por ejemplo, nulo) como valor de Ai,j. ALGORITMOS DE ELECCIÓN Como se señaló anteriormente muchos de los algoritmos distribuidos emplean un proceso coordinadorque realiza funcionesnecesariaspara los demásprocesos del sistema. Estas funciones incluyen aplicar la exclusión mutua,mantener un grafo local deesperaspara la detección de bloqueos mutuos, reemplazar un testigo perdido o controlar un dispositivo de entrada o salida en el sistema. Si el proceso coordinador falla por culpa de una falla de la instalación donde reside, la única forma de que el sistema continúe la ejecución es reiniciar una nueva copia del coordinador en otra instalación. A los algoritmos que determinan dónde se debe reiniciar la nueva copiadel coordinador se les llama algoritmos de elección. Los algoritmos de elección danporsentadoque existe un númerode prioridad Único asociado a cada proceso activo en el sistema. Para tacilitar la notación suponemos que el número de prioridad del proceso Pi es i, y para simplificar el análisis se supondrá que existe una correspondencia uno a unoentre procesos e instalaciones, por lo que se referirá a ambos como procesos. El coordinador siempre es el proceso con mayor número de prioridad; así, al fallar un coordinador, el algoritmo debe elegir elproceso activo conmayornúmerode prioridad. Hayque enviar este númeroacadaunode los procesos activos en el sistema; además, el algoritmo debe proporcionar un mecanismo para que un nuevo proceso recuperado identifique al coordinador vigente. 1 En esta sección se presentan dos interesantes ejemplos de algoritmos de elección para dos configuraciones distintas de sistemas distribuidos. El primer algoritmo puede aplicarse a sistemas donde cada proceso puede enviar un mensaje a todos los demás procesos en el sistema. El segundo algoritmo se aplica en sistemas organizados como anillo (lógico o físico). Ambos algoritmos requierenn2mensajesparauna elección, donde n es elnúmero de procesos en el sistema. Se supone que un proceso que ha fallado sabe, al recuperarse, que Universidad Autónoma Metropolitana. Unidad lztapalapa 143 Capitulo 4 se ha presentado la falla y, por tanto, emprende las acciones conjunto de procesos activos. convenientes para reunirse al €1 a~gOfifrl70del grandu//Ón. Supóngase que el proceso Pi envía una solicitud a la que no responde el coordinador en el intervalo de tiempo T. En esta situación se supone que ha fallado el coordinador y Pi trata de proclamarse como nuevo coordinador. Esta tarea se logra mediante el siguiente algoritmo. El proceso Pi envía un mensaje de elección a todos los procesos con mayor número de prioridad y durante un intervalo de tiempo T espera una respuesta de cualquiera de estos procesos. Si no se recibe alguna respuesta en el intervaloT,se supone que han fallado totius los procesos con números mayores que i y Pi se elige como nuevo coordinador. El proceso Pi reinicia una nueva copia del coordinador y envía un mensaje para informar a todos los demás procesos con prioridades menores que i que Pi es el nuevo coordinador. Sin embargo, si se recibe una respuesta, Pi inicia un intervalo de tiempo T', durante el cual espera recibir un mensaje que le informe que se ha elegido un proceso con mayor número de prioridad. (Algún otro proceso se está eligiendo como coordinador y debe notificar los resultados en el período T'). Si no se recibe ningOn mensaje en ese intervalo T', se supone que el proceso con mayor número ha fallado y el proceso Pi debe reiniciar el algoritmo. Si Pi no es el coordinador, entonces, en cualquier momento de su ejecución, Pi puede recibir uno cle los siguientes mensajes del proceso Pj: ' 1. Pi es el nuevo coordinador o>¡). El proceso Pi, a su vez, almacena esta información. 2. Pj inició una elección U<¡). El proceso Pi envía una respuesta a Pi e inicia su propio algoritmo de elección, siempre y cuando Pi no haya iniciado aún dicha elección. El proceso que completa su algoritmo tiene el mayor número de prioridad y se elige como coordinador. Ya ha enviado sunúmero a todoslos procesos activos con número menor. AI recuperarse un proceso fallido, comienza de inmediato la ejecución del mismo algoritmo. Si no hay proc;?sos activos con número mayor, el proceso recuperado obliga a todos los procesos con núrr ero menor que le permitan ser el coordinador, aunque ya exista un coordinador activo con número menor. Por esto, a este algoritmo se le denomina aCgoritmo del grandullón. En un algoritmo que consta de los procesos PI a Pd, se tienen las siguientes operaciones: 1. Todos los procesos están activos; P4 es el proceso coordinador. 2. PI y P4 fallan. P2 determina que P4 ha falladoal enviar una solicitud que no ha sido respondida en el intervalo T, e inicia su algoritmo de elección enviando una solicitud ;IiT3. 3. P3 recibe la solicitud, responde a P2e inicia su propio algoritmo enviando una solicitud a p4. 4. P2 recibe la respuesta de P3y comienza a esperar durante el intervalo T'. 5. P4 no responde en el intervalo T, por lo que P3se elige como nuevo coordinador y envía el número 3 a P2 y PI (que PI no recibe, ya que ha fallacjo). 6. Más tarde, cuando PI se recupera envía una solicitud d& elección a Pz, P3y P4. 144 . __.- I Implementación deremoto un shell IyL__x..__.__~"" " " . Sistemas oDerativos distribuidos 7. P2 y P3 responden y comienzan sus propios algoritmos de elección. P3 será elegido nuevamente, utilizando los mismos procesos que antes. 8. Por último, P4 se recupera y notifica a PI, P2 y P3que es el coordinador actual. (P4 no envía solicitudes de elección, ya que es el proceso con mayor número en el sistema). Un algoritmo de anillo. El algoritmo de anillo supone que los enlaces son unidireccionales y que los procesosenvían sus mensajesa los vecinosque tienen a la derecha. La principal estructura de datos queutiliza el algoritmo es la lista de procesos activos, que contiene los números de prioridad de tcdos los procesos activos en el sistema al terminar el algoritmo; cada proceso mantiene su propia lista de procesos activos. El algoritmo funciona de la manera siguiente: 1. Sielproceso Pi detecta una falla del coordinador, creaunanueva lista de procesos activos, vacíaen un principio. Luego envía unmensaje elección(¡) al vecinode su derecha y agregael número y asu lista de procesosactivos. 2. Si Pi recibe un mensaje elección(j) del proceso a su izquierda, debe responder de una de las tres formas siguientes: a) Si es el primer mensaje de elección que ha visto o enviado, Pi crea una nueva lista de procesos activos con los números i y j, y luego env a el mensaje elección(¡) seguido por el mensaje elección(j). b) Si i#j (es decir, el mensaje recibido no contiene el número de Pi), entonces Pi añade j a su lista de procesos activos y pasa el mensaje asu vecino de la derecha. c) Si i = j (es decir, Pi recibe el mensaje elección(i)), entonces la lista de procesos activos los procesos activos enel sistema. El para Pi contieneahora los númerosdetodos proceso Pi puede entonces determinar el número mayor de la lista de procesos activos para identificar el nuevo procesocoordinador. i Este algoritmo no especifica cómo un proceso en recuperación determina el número del proceso coordinador activo. Una solución sería requerir que un proceso en recuperaciónenvíe un mensaje de consulta que se transmita por el anillo hasta el coordinadoractivo, el cual envía una respuesta que contienesu número. SISTEMAS DE ARCHIVOS DISTRIBUIDOS Unsistemadearchivosdistribuido (SAD) es una implantación distribuida del clásico modelodesistemasde archivos de tiempocompartido, donde varios usuarios comparten archivos y recursos de almacenamiento. El propósito de un SAD es apoyar el mismo tipo de compartición cuando los archivos están dispersos físicamente en varias instalaciones de un sistema distribuido. Universidad AutónomaMetropolitana. Unidad lztapalapa 145 Capítulo 4 ANTECE DENTES Un sistema distribuido es un conjunto de máquinas débilmente acopladas, interconectadas por una redde comunicaciones. Se utilizará el término mdquina para representar una computadora central o una estación de trabajo. Desde el punto de vista deuna máquina específica en un sistema distribuido, las demás máquinas y los recursos son remotos, mientras que los recursos propios de la máquina son locales Se dice que un sistema de archivos ofrece servicios de archivos a clientes. Una interface con el cliente para el servicio de archivo se forma con un conjunto de operaciones de archivo primitivas, como crear, eliminar, leer o escribir un archivo. El principal componente del de hardware controlado por el servicio de archivos es un conjunto dedispositivos almBsenamiento secundario (generalmente discos magnéticos), en los cuales se almacenan los archivos y de donde se recuperan según las necesidades de los clientes. Un SAD es un sistema de archivos cuyos clientes, servidores y dispositivos de almacenamiento están dispersos en las máquinas de, un sistemadistribuido; por tanto, las actividades de servicio tienen que efectuarse a lo largo de la red, y en vez de un sólo depósito de datos centralizado, existen múltiples dispositivos independientes de almacenamiento. Como se verá más adelante, la configuración y la implantación de un SAD pueden variar. En algunas configuraciones, los servidores se ejecutan en m3quinas dedicadas; en otras, una máquina puede ser un servidor o un cliente. El SAD puede implantarse como parte deun sistema operativo distribuido, o bien como una capa de software cuya tarea es administrar la comunicación entre los sistemas operativos y los sistemas de archivos convencionales. Las características distintivasde un SAD sonlamultiplicidad y la autonomía de los clientes y servidores en el sistema. Enuna situación ideal, unSAD debe parecer a susclientes un sistema de archivos convencional, centralizado. La multiplicidad y dispersión de susservidores y dispositivos de almacenamiento deben ser transparentes; es decir, la interfaz de un SAD con el cliente no debe hacer distinciones entre los archivos remotos y locales. Depende del SAD localizar los archivos y hacer los arreglos necesarios para la transferencia de datos. Un SAD transparente facilita la movilidad del cliente, llevando el entorno del usuario (es decir, su directorio particular) a doncs se conecte. La medida del rendimiento más importante en un SAD es la cantidad de tiempo neces- ia para satisfacer lassolicitudes de servicio. En los sistemas convencionales, este tiempo consiste en el tiempo de acceso a disco y un poco de tiempo de procesamiento de la UCP. Sin embargo, enun SAD el acceso remoto cuenta además con tiempo adicional debido a la estructura distribuida, que incluye el tiempo necesario para erhtregar la solicitud a un servidor y también el tiempo para entregar la respuesta al cliente atravesando la red. En cada dirección, además de la transferencia de información, existe tiempo adicional de la CPU para el manr,io del software del protocolo de comunicaciones. El rendimiento de un SAD puede considerarse el rendimiento enun SAD ideal ;a como otro aspecto de su transparencia; esdecir, equiparable al de un sistema de archivos convencional. 146 Implemer~taciónde un shell remoto I " Sistemas operativos distribuidos La principal característica quedistingueaun SAD es que administra un conjuntode dispositivos de almacenamiento dispersos, y el espacio global de almacenamiento que administra puede estar compuesto porvarios espaciosmás pequeños, diferentes y con ubicación remota. Usualmente hay una correspondencia entre estos espacios de almacenamiento y los conjuntos de archivos. S e utilizará el término unidad componente para denotar el menor conjunto de archivos que puede almacenarse en una máquina, independientemente de otras unidades. Todos los archivos que pertenecen a la misma unidad componente deben residir en una misma ubi'cación. NOMlNAClbN Y TRANSPARENCIA La nominaci6n es unacorrespondencia entreobjetos lógicos y físicos. Por ejemplo, los usuarios tratan con objetos de datos lógicos representados por nombres de archivos, mientras que el sistema manipula bloques de datos físicos almacenados en las pistas de los discos. Generalmente, un usuario se refiere a un archivo utilizando un nombre, el cual se transforma en un identificador numérico de bajo nivel, que a su vez se corresponde con bloques en disco. Esta correspondencia multinivel ofrece a los usuarios Id abstracción de un archivo, que oculta los detalles de cómo y dónde se almacena el archivo en disco. E n un S A D transparente se agrega una nueva dimensión a la abstracción: la ocultación de la ubicación del archivo en lared. E n un sistema de archivos convencional,la función de nominación produce como resultado unintervalo compuesto por direcciones en disco; en un S A D , este intervalo crecepara incluir la máquina específica en cuyodisco se almacena el archivo. Si se extiendeun pocomás eltratamiento de los archivos como abstracciones, se llega a la posibilidad de réplicas de archivos. Dado un nombre de archivo, la correspondencia devuelve unconjunto de posiciones de las réplicas de este archivo. E n esta abstracción se ocultan tanto la existencia de copias como su ubicación. Estructuras de nominación. Existen dos conceptos que hay que distinguir en relación con la correspondencia de nombres en un SAD: l.Transparencia en la ubicacidn. El nombre del archivo no revela ningún indicio sobre la ubicación del almacenamiento físico del archivo. Independencia de la ubicación. No es necesario modificar el nombre de unarchivo cuando cambia su ubicación en el almacenamiento físico. Ambas definiciones están relacionadas con elnivel de nominación antes mencionado, ya que los archivos tienen nombres diferentes a niveles distintos (es decir, nombres en el nivel de usuario e identificadores numéricos en elnivel desistema). Unesquema de nominación independiente de la ubicación es unacorrespondenciadinámica, ya que puede efectuar la correspondencia entreelmismonombre de archivo y varias ubicaciones en dos instantes diferentes. Por tanto, la independencia de la ubicación es una propiedad más fuerte que la transparencia. En la práctica, la mayoría de los SAD ofrece una correspondencia estática, independiente de la ubicación, para los nombres a nivel de usuario. Sin embargo, estos sistemas no apoyan la migración de archivos; es decir, es imposible cambiar automáticamente la ubicación de un archivo, por lo que el concepto de independencia de la ubicación es bastante irrelevante para Universidad Autónoma Metropolitana. Unidad lztapalapa 147 Capítulo 4 estos sistemas. Los archivos están permanentemente asociados a un conjunto específico de bloques en disco; los discos pueden moverse a mano de una máquina a otra, pero la migración de archivos representan una acción automática iniciada por el sistemaopera!ivo. Sólo Andrew y algunos sistemas de archivos experimentales permiten la independencia de la ubicación y la movilidad de archivos. El sistema Andrew admite la movilidad de archivos sobre todo con fines administrativos. Un protocolo ofrece la migración de las unidades componentes de Andrew para satisfacer solicitudes de alto nivel de los usuarios, sin cambiar los nombres a nivel de usuario ni los nombres de bajo nivel de los archivos correspondientes. Existen unos cuantos aspectos que pueden distinguir aún más entre transparencia estática e independencia de la ubicación: l. AI separar los datos de su ubicación, lo que representa la independencia de la ubicación, se obtiene una mejor abstracción para !os archivos. Un nombre de archivo debe denotar sus atributos más importantes: su contenido no su ubicación. Los archivos independientes de la ubicación pueden conectarse como conectores lógicos de datos que no están unidosa una ubicación de almacenamiento específica. Si sólo se pmrmite la transparencia estática de la ubicación, el nombre de archivo aúndenota un conjunto específico, aunque oculto, de bloques físicos en disco. 2. La transparencia estática de la ubicación proporciona a los usuarios una manera adecuada de compartir datos, ya quepueden compartir archivos remotos con sólo nombrarlos en una forma transparente a su ubicación, como si los archivos fuesen locales. No obstante, es complicado compartir el espacio de almacenamiento, ya que los nombres lógicos aúnestán unidos estáticamente a dispcsitivos de almacenamiento físico. La independencia de la ubicación promueve la compartición del propio e.;pacio de almacenamiento y de los objetos de datos. Cuando los archivos pueden moviliza! ‘.-e,el espacio de almacenamiento de todo el sistema parece un solo recurso virtual. Un beneficio de esta perspectiva es la posibilidad de equilibrar la utilización de disco en el sistema. 3. La independencia de la ubicación separa la jerarquía de nombres de la jerarquía de los dispositivos de almacenamiento y de la estructura entre computadoras. En cambio, si se usa la transparencia estática de la ubicación, aunque los nombres sean transparentes, se puede exhibir facilmente la correspondencia entre unidades componentes y miquinas, ya que éstas están configuradas con un modelo similar al de la estructura de nombres. Estopuede restringir,sin que sea necesario, la arquitectura del sistema y entrar en conflicto con otros factores. Un ejemplo de una estructura dictaminada por la jerarquía de nombres,que contradice las líneas maestras de centralización, es un servidor a cargo de un directorio raíz. ’ Una vez que se ha completado la separación entre nombres y ubicaciones, varios clientes pueden acceder a los archivos residentes en sistemasservidores remotos. Es mas, estos clientes pueden estar sin disco y apoyarse en los servidorey para obtener todos sus archivos, incluyendo el núcleo del sistema operativo; sin embargo, se necesitan protocolos especiales para la secuencia de arranque. Considérese el problema de hacer llegar el nucleo a una estación de trabajo sindisco. Como esta estacióndetrabajo no tienen núcleo, no puede utilizarel código del SAD para recuperar el núcleo; en cambio, se invoca un protocolo de arranque especial, almacenado en memoriade sólo lectura (ROM) en el cliente, capaz de recuperar un archivo especial (el núcleo o código de arranque) de un destino fijo. Una vez que 148 Implementación deremoto un shell Sistemas operativos distribuidos el núcleo se ha copiado y cargado a través de la red, el código del SAD es capaz de lograr la disponibilidad de todos los demás archivos del sistema operativo. Son muchas las ventajas de los clientes sin disco, incluyendo un costo menor (ya que no se ,necesita un disco en cada máquina) y mayor facilidad (cuando tiene lugar una actualización del sistema operativo, sólo hay que modificar la copia del servidor y no las de todos los clientes). La desventaja es la complejidad adicional de los protocolos de arranque y las pérdidasenelrendimiento procedentes del uso de una red envez de un disco local. ' Esquemasde nominación. Hay tres enfoques principales para los esquemasde más sencillo, los archivos se nombranconuna nominaciónen un SAD. Enelenfoque combinación del nombre de su anfitrión y su nombre local, lo que garantiza un nombre Único dentro de todoel sistema. Por ejemplo, en Ibis, un archivo se identifica de manera única con el nombre anfitri6n:nombre-local, donde nombre-local es una ruta semejante a las de UNIX. Este esquema de nominación no es transparente ni independiente de la ubicación; no obstante, puedenemplearse las mismas operaciones tanto para archivos remotoscomo locales. La aisladas queson sistemas estructura del SAD es un conjuntodeunidadescomponentes enterosde archivos convencionales.En esteprimer enfoque, las unidadescomponentes permanecen aisladas, aunque se ofrecenmedios para referirse a un archivo remoto. El segundo enfoque, popularizado por el'Sistema de Archivos en Red (NFS) de Sun, ofrece una forma para unir directorios remotos a directorios locales, lo que da la apariencia de un árbol de directorios coherente. Sólo se puede lograr el acceso transparente a los directorios remotospreviamentemontados.Sepresenta cierta integración de los componentespara apoyar la compartición transparente, aunque es limitada y no uniforme, ya que cada máquina puede unir distintos directorios remotos a su estructura. La estructura que resulta es versátil: por lo general, un bosque de árboles UNlX con subárboles compartidos. La integración total de los sistemas de archivos componentes se logra usando el tercer enfoque,dondeuna sola estructura de nombres global abarcatodos los archivos en el sistema. Idealmente la estructura compuesta de sistemas de archivos debe ser isomorfa de la estructura de un sistema de archivos convencional, pero, en la práctica, existen varios archivos especiales (por ejemplo, los directorios binarios y los larchivos de dispositivos de UNIX) que dificultan la consecución de este objetivo. Un criterio importanteparaevaluar las estructuras denominación es sucomplejidad administrativa. La estructura más compleja y difícil de mantener es la NFS, ya que cualquier directorio remoto puede unirse al árbol de directorios locales y la jerarquía resultante puede estar poco estructurada. Un servidor que ya no está disponible tiene como efecto que tampoco este disponible un conjunto arbitrario de directorios en distintas máquinas; además, se utiliza un mecanismo de acreditación aparte para controlar qué máquina puede unir qué directorio a su árbol. Técnicas de implantación. Para implantar una nominación transparente se requiere un mecanismo para la correspondencia entre un nombre de archivo y la ubicación asociada. Para que esta correspondencia sea manejable, hay que agrupar conjuntos dearchivos en unidades componentes,nopor archivo. Estaagrupacióntambién tiene fines administrativos. Los sistemas semejantes a UNlX utilizan el árbol jerárquico de direcciones para proporcionar una Universidad AutónomaMetropolitana. Unidad lztapalapa 149 Capítulo 4 transformación de nombres a ubicaciones y para agrupar de forma recursiva los archivos en directorios. Para mejorar la disponibilidad de la información decorresponder,cia indispensable, se pueden aplicar métodos como la replicación, memoria caché local, o ambos. Como ya se ha visto, la independencia de la ubicación significa que lalcorrespondencia cambia con el t i e m y ; por tanto, la replicación de la correspondencia imposibilita la actualización sencilla y para superar este obstáculo es presentar consistente de esta información. Unatécnica identificadores d e archivos independientes de la ubicación de bajo nivel. Se efectúa una transformación de los nombres de archivos a identificadores de archivo debajo nivel que indican a que unidad componente pertenece ese archivo pero siguen siendo independientes de la ubicación. Es posible replicar y colocar los identificadores en memoria cache, sin que pierdan validez con la migración de unidades componentes. El precio inevitable que hay ,¡.re pagar es un segundo nivel de transformación de unidades componentes a ubicaciones, el cual requiere un mecanismo de actualización sencillo pero consistente. Si se implantan árboles de directorios semejantes a UNIX, usando estos identificadores de bajo nivel independientes de la ubicación, toda la estructura permanece invariable durante la migración de unidades componentes; lo Único que cambiaes la correspondencia entre unidades componentes y ubicaciones. Una manera común para implantar estos identificadores de bajo nivel consiste en utilizarnombres estructurados, cadenas debits que generalmente tienen dos partes: la primera identifica la unidad componente a la cual pertenece el archivo; la segunda identifica el archivo específico dentro de la unidad. Puede h?ber variafitcs con más partes; sin embargo, lo que no cambia en los nombres estructurados es que cada una de sus partes es única en todmomento, solamente respecto al contexto de las demás partes. Se puede tener siempre esta exclusividad teniendo cuidado de no reutilizar un nombre Fue aún se usa, ai;-.; . ) ( l o una cantidad suficiente de bits (este método se usa en Andrew), o usando una marca de tiempo como una de las partes del nombre (lo que se hace en Apollo Domain). Otra manera d,.? considerar esto consiste en tomar un sistema transparente a la ubicación, como Ibis, y añadirle otro nivelde abstracción para producir un esquema de nominación independiente de la ubicación. SERVICIOS REMOTOS Considérese un usuario que solicita el acceso a un archivoremoto. Suponiendo que se localizó al servidor que antiene elarchivo mediante el esquema de nominación apropiado, debe efectuarse la transferencia de datos para satisfacerla solicitud de acceso remoto del usuario. Una manera de lograr esta transferencia es a través del método de servicio remoto, con el cual se entregan al servidor las solicitudes de acceso; la máquina servidora lleva a cabo dichos accesos y los resultados se devuelven al usuario. Existe una correspondencia directa entre los B C C ~ Y O Sy el tr5fico que va y viene del servidor. Las solicitudes de acceso se traducen a -3 Implementación de un shell remoto Sistemas oDerativos distribuidos .,-, mensajes para los servidores y susrespuestas se empaquetancomomensajes que se devuelven al usuario. Cada proceso es manejado por el servidor y ocasiona tráfico en la red; por ejemplo, una lectura provoca el envío de un mensaje de solicitud al servidor y la respuesta al usuario con los datos solicitados. Se debe notar que se presenta una analogía directa entre los métodos de acceso a disco en los sistemas de archivos convencionales y el método de servicio remoto .en un SAD. El método de servicio remoto es análogo a efectuar un acceso a disco para cada solicitud de acceso. Unade las formas más comunes deservicioremoto es el paradigmade procedimientos remotos (RPC) que se analizará posteriormente. llamada a Es fácil implantar un sistemade archivosdistribuidos como un conjuntode clientes y procesos demonios RPC. Los mensajes se dirigen al puerto SAD de su servidor donde se efectuará una operación de archivo. El mensaje contiene la operación del disco que hay que realizar, como puede ser leer, escribir, renombrar, eliminar o estado, correspondientes a las los datos llamadas al sistemanormalespara archivos. El mensaje derespuestacontiene resultado de la llamada, ejecutada por el proceso demonio SAD en nombre del cliente. Por ejemplo, un mensaje puede contener una solicitud para transferir todo un archivo a un cliente, o estar limitado a simples solicitudes de bloques; en el segundo caso, podrían necesitarse varias llamadas deeste tipo para transferir todo un archivo. MEMORIA CACHÉ En los sistemas de archivos convencionales, el fundamento para la memoria caché es la reducción de la E/S de disco (lo que aumenta el rendimiento), mientras que en un SAD el objetivo es reducir el tráfico de la red. Esquema básico. El concepto de memoria caché es sencillo: si los datos necesarios para satisfacer la solicitud de acceso no se encuentran en la memoria caché, se trae una copia del servidor al usuario y los accesos se llevan a cabo con la copia en memoria caché. La idea es conservar allí los bloques de disco de acceso más reciente, para así manejar localmente los accesos repetidos a la misma información y no aumentar el tráfico de la red. Se utiliza una política de reemplazo (por ejemplo, la de utilización menos reciente) para limitar el tamaño de la memoria caché. No existe correspondencia directa entre los accesos y el tráfico al servidor. Los archivos se siguen identificando con una copia maestra residente en la máquina servidora, pero hay copias de partes del archivo en memorias caché diferentes. Cuando se modifica una reflejar en el archivo maestroparapreservar la deestas copias, los cambiossedeben semántica de consistencia pertinente. El problema paramantener las copias consistentes respecto al archivo maestro se denomina problema de consistencia de memoria caché y se analizará más adelante. La memoria caché representaun tema mucho más complejo que el servicio remoto, ya que existen más variantes en cuanto a funcionalidad e implantación. La granularidad de los datos enmemoriacachépuede variar desdebloques de un archivo aun archivo completo. La Universidad Autónoma Metropolitana. Unidad lztapalapa 151 ’ mayoría de las vecesse colocanen memoria cachémás datos que losnecesariospara satisfacer un acceso, para que así con los datos puedan atenderse varios accesos. El sistema Andrew coloca archivos enteros enesta memoria, pero noestádiseñadopara manejar archivos muy grandes, pues se requiereque quepanen el archivo local del usuario. AI aumentar el tamaño de la unidad de memoria caché, se incrementa la tasa de aciertos, pero retrasa la transferencia real de datos y aumenta el potencial de problemas de consistencia, por lo que, para seleccionar: la unidad de memoria.cach6, hay que considerar parámetros como la unidad de transferencia de la red y la unidad de servicio del protocolo, si se utiliza una RPC. La unidad de transferencia de la red (un paquete Ethernet) es aproximadamente 1.5 K B . , por lo que hay que desensamblarlasunidadesde datos en memoria caché al entregarlas, y reensamblarlas en la recepción. Y Obviamente, el tamaño de bloque y el tamaño total de la memoria caché son importantes en los esquemas para bloques en memoria saché. E n los sistemas semejantes a UNlX son frecuentes los bloques con tamaño de 4 KB. u 8 KB.. E n el caso de memorias caché degrantamaño (másdeun megabyte) sonbuenos los bloques grandes (más de 8 KB.); con memorias caché más pequeñas no son tan prácticos, pues reducen el número de bloques en la memoria. La memoria caché en disco tiene una granventaja sobre la de memoria principal: la confiabilidad. Si la memoria caché se conserva en un medio volátil, se pierden las modificaciones a los datos si llega a ocurrir una falla; además, si los datos se conservan en disco, siguen allí durante la recuperación y no es necesario cargarlos de nuevo. Por otra parte, la utilización de la memoria principal tiene varias ventajas: 1. 2. 3. 4. Permiten que las estaciones de trabajo no tengan disco. E s mucho más rápido el acceso a datos en memoria principal que a disco. La tendencia tecnológica actual es hacia memorias más grandes y baratas. Las memorias caché del servidor (las que se utilizan para acelerar la E/S de disco) se encontrarán en memoria principal sin importar dónde estén ubicadas las de los usuarios; si también se emplea la memoria principal de la máquina del usuario, se puede construir unsolomecanismode memoria caché que pueda ser usado por los servidores y los usuarios (como lo que se hace en el sistema Sprite). Muchas de las implantaciones de acceso remoto pueden considerarse como híbridas de la memoria caché y el servicio remoto. For ejemplo, en el caso de NFS y Locus, la implantación está basada en el servicio remoto, pero se amplía con memoria caché para mejorarel rendimiento. Por otra parte, la implantación de Sprite está basada en la memoria caché, pero se adopta el método de servicio remoto en ciertas circunstancias. Polífica de actualización. La política empleadapara escribir los bloquesde datos modificados en la copia maestra del servidor tiene un efecto decisivo sobre la confiabilidad y el rendimiento del sistema. La política más sencilla consiste en escribir los datos directamente en el disco tanpronto como se coloquen en una memoria caché. La ventajade la escritura directa es su confiabilidad, ya que se pierde poca información si un sistema cliente falla. Sin embargo, está política requiere que cada acceso deescritura espere hasta que se envie la 152 remoto shell Implementación un de Sistemas operativos distribuidos información al servidor, lo que representa una escritura de escaso rendimiento. La memoria caché con escritura directa equivale a usar el servicio remoto para accesos de escritura y explotar la memoria caché únicamente para accesos de lectura. NFS proporciona el acceso de escritura directa. Otra política de escritura consiste en demorar las actualizaciones a la copia maestra; las modificaciones se escriben en la memoria caché y más tarde se escriben directamente en el servidor. Esta política presenta dos ventajas respecto a la escritura directa: primero, como las escrituras son en memoria cache, estos accesos terminan con mayor rapidez; segundo, en ocasiones los datos se reescriben antes de enviarlos al servidor, situación en la cual nunca presentan hace falta escribirlos. Por desgracia los esquemas de escriturademorada problemas de confiabilidad, yaque los datos no escritosse pierden si falla la máquina del usuario. Consistencia. Una máquina client: se enfrenta al'problema de decidir si una copia de datosenmemoriacaché local es consistente con la copiamaestra (y, por tanto, puede usarse). Si la máquina cliente determina que sus datos en memoria caché están desfasados, copia ya nopuede servir para los accesos y hayque colocar en la memoriacachéuna verificar la validez de los datosen actualizada de los datos. Existen dosenfoquespara memoria cache: Enfoque iniciadopor el cliente. El cliente inicia una comprobaiion devalidez, en la cual se pone en contacto con el servidor y comprueba si los datos locales son consistentes con la copia maestra. La frecuencia de la comprobación devalidez es el punto clave de este enfoque y determina la semántica de consistencia resultante. Puede variar, de una comprobaciónantes de cada acceso, a una verificación sólo la primera vez que se accede al archivo (al abrirlo básicamente).Cada acceso acopladoaunacomprobaciónde validez sedemora, en comparación con un acceso atendido de inmediato por la memoria cache. Otra posibilidad es iniciar la comprobacióna intervalos fijos regulares; con esto, lacomprobaciónde validez, dependiendo de sufrecuencia, puede cargartanto a la red como al servidor. Enfoque iniciado por el servidor. El servidor anota, para cada cliente, las partes de los archivos que coloca en memoria caché, y cuando detecta una inconsistencia, debe reaccionar. Una posible fuentede inconsistencias ocurre cuandodos clientes, que trabajan enmodos conflictivos, colocan en memoria caché un archivo. Si se implanta la semántica de sesiones, entonces,cuando un servidor recibe una solicitud para cerrar un archivo queha sido modificado, debe reaccionarnotificando a los clientes que deben considerar comoinválidos los y descartarlos. Los clientes que tienen abierto el archivo en ese datosenmemoriacaché momento descartan su copia alterminar la sesión; otros clientes la descartan de inmediato. En la semántica de sesiones, el servidor no necesita ser informado de las aperturas de archivos que ya se encuentran en memoria cache; su reacción se origina únicamente con el cierre de una sesión de escritura y, por consiguiente, sólo se demora este tipo de sesión. En Andrew se haimplantado la semánticade sesiones y seemplea un método iniciado por el servidor, conocido como llamada derespuesta. Por otra parte, si se implanta una semántica de consistencia más restrictiva, como la de UNIX, el servidor debe interpretar un papel más activo. Hay que notificar al servidor cuando se Universidad Autónoma Metropolitana. Unidad lztapalapa 153 Capítulo 4 abre un archivo e indicar, con cada apertura, el modo (lectura o escritura). Suponiendo que se da esta notificación, el servidor puede actuar cuando detecta que unarchivo se abre simultáneamente enmodos conflictivos, deshabilitando la memoria cachépara ese archivo (como se hace en Sprite). E n realidad, al desactidar la memoria caché, se cambia a un modo de trabajo por servicio remoto. REPLICACIÓN DE ARCHIVOS La replicación de archivos en máquinas diferentes es una redundancia útil para mejorar la disponibilidad. La replicación en varias máquinas también pueden beneficiar el rendimiento, ya que, al seleccionaruna réplica cercanapara atender una solicitud de acceso, eltiempo de 4 servicio es menor. I El requisito fundamental de un esquema de replicación es que las réplicas de un archivo residan en máquinas independientes de las fallas; es decir, que la disponibilidad de una réplica no se vea afectada por la disponibilidad de las demás. Este requisito obvio quiere decir que la administraciónde réplicas es una actividad en la cual la ubicación es decisiva,puesdeben existir mecanismos para colocarla réplica en una máquina concreta. Es deseable ocultar a los usuarios los detalles de la replicación y esttarea del esquema de nominación efectuar la correspondencia entre un nombre de archivo replicado y una réplica en particular. La presencia de réplicas debe ser invisible para los niveles superiores, sin embargo, hay que distinguir las réplicas con nombres diferentes en los niveles inferiores. Otro aspecto de la transparencia consiste en proporcionar control de mayor nivel de las réplicas, que incluye la determinación del grado de replicación y la colocación de las réplicas. E n ciertas circunstancias es deseable exponer estos detalles a los usuarios; por ejemplo, Locus ofrece a los usuarios y administradores del sistema mecanismos para controlar el esquema de replicación. El mayor problema relacionado con las réplicas es su actualización. Desde la perspectiva del usuario,las réplicas de un archivo representan la mismaentidad lógica, por lo que cualquier actualización se debe reflejar en todas las demás réplicas. Específicamente,hay que conservar la semántica de consistencia cuando se considera que los accesos a réplicas son no es un factor accesos virtuales al archivo lógico correspondiente. Si laconsistencia primordial, puede sacrificarse en aras de la disponibilidad y el rendimiento; esto es una encarnación del equilibrio fundamental en el área de tolerancia a fallas. La opción es preservar la consistencia a toda costa, creando así la posibilidad de postergación indefinida, o sacrificar la consistencia en alguna situación de fallas catastróficas para poder garantizar el progreso. Locusempleaen gran medida la replicación y sacrifica la consistencia en el caso de la partición de la red para beneficio de la disponibilidad de archivos tanto para accesos de lectura como de escritura. 154 lmplementación remoto shell un de nski Sistemas operativos distribuidos DISTRIBUTED OPERATING SYSTEMS THE LOGICAL DESIGN Addison-Wesley Publishing Company[1991] Andrej Págs. 4-8, 21-26. I SISTEMAS OPERATIVOS. CONCEPTOSFUNDAMENTALES Addison-Wesley Iberoamericana[1994] Abraham Silberschatz James L. Peterson Peter B. Galvin Págs. 462-466, 471-495, 499-512, 515-516. I Universidad Autónoma Metropolitana. Unidad lztapalapa CAPÍTULO 5 MODELO f CLIENTE-SERVIDOR Y CONCURRENCIA MODELO CLIENTE-SERVIDOR CONCURRENCIA Y 9 [TOMADO Y ADAPTADO de ComerI5 , Desde el punto de vista de una aplicación, TCP/IP, como la mayoria de los protocolos de comunicacióndecomputadora, únicamente proporciona mecanismosbásicosusadospara transferir datos. E n particular, TCP/IP permite a unprogramador establecer comunicación entre dos programas de aplicación y pasar datos de fda y vuelta. Así, se dice que TCPllP proporciona comunicación pareja-a-pareja. Las aplicaciones pares pueden ejecutarse en la misma máquina o en máquinas diferentes o distantes. Aunque TCPllP especifica los detalles de como pasar datos entre un par de aplicaciones comunicantes, no indica cuando o porque interactúan las aplicaciones pares y no específica comodeberían los programadores organizartales programas de aplicación enun entorno distribuido. E n la práctica, un método organizacional domina el uso de TCP/IP a tal punto que casi todas las aplicaciones lo usan. El método es conocido como el paradigma clienteservidor. De hecho, lainteraccióncliente-servidor ha venido a ser tanfundamental en los sistemas de red pareja-a-pareja que forma la base para la mayor parte de comunicaciones de computadora. . EL MODELO CLIENTE-SERVIDOR (MOTIVACIóN) La motivaciónfundamental para el paradigma cliente-servidor surge del problemade rendezvous(encuentro).Para entenderel problema, hay que imaginar queun humano intenta iniciar dos programas en máquinas separadas y tiene que comunicarlas. También hay que recordar que las computadoras operan a muchas órdenes de magnitud más rápido que los seres humanos. Después de que el humano inicia el primer programa, éste inicia su ejecución y envía un mensaje a su pareja. E n unos pocos milisegundos, determina que la pareja todavía no existe, así que emite un mensaje de error y termina.Mientrastanto,el humano iniciael segundo programa. Desafortunadamente, cuando el segundo programa inicia su ejecución encuentra que la pareja ya ha cesado su ejecución. Aún cuando los dos programas reintenten comunicarse continuamente, cada uno de ellos puede ejecutarsetanrápidamente que la probabilidad de que los mensajes que envían uno a otro sean simultáneos, es baja. El modelo cliente-servidor resuelve el problema de encuentro, afirmando que en cualquier Capítulo 5 0 par de aplicaciones comunicantes, un lado debe iniciar su ejecución y esperar (indefinidamente) para que el otro lado lo contacte. La solupión es importante porque TCP/IP no responde asolicitudes de comunicación dellegada por sí mismo. ComoTCP/IP no proporcionaalgúnmecanismo que creeautomáticamenteprogramas corriendo cuando llega un mensaje, un programa, debe esperar para aceptar la comunicación antes de quellegue cualquier solicitud. Asi, para asegurar que las computadoras están ya listas para comunicarse, la mayoria de los administradores del sistema disponen que los programas decomunicación tienen que iniciarse automáticamente cada vez que se carga el sistema operativo. Cada programa corre siempre, esperando que llegue la siguiente solicitud para ofrecer su servicio. TERMINOLOGíA Y CONCEPTOS El paradigma cliente-servidor divide las aplicaciones decomunicaciónen categorías, dependiendo de si la aplicación espera la comunicación o la inicia. dos grandes Clientes y servidores. El paradigma cliente-servidor usa la dirección de iniciación para categorizar si un programa es uncliente o servidor. En general, una aplicación que inicia la comunicación pareja-a-pareja es llamada cliente. Los usuarios finales normalmenteinvocan un cliente cuandousan un servicio de red. La mayoría de software cliente consiste de programas de aplicación convencional. Cada vez que una aplicación cliente se ejecuta, contactaa un servidor,envía una solicitud y esperauna respuesta. Cuando la respuesta llega, el cliente continúaprocesando.Frecuentemente los clientes son más fáciles de construir que los servidores, y normalmente norequieren privilegios especiales del sistema para operar. En comparación, un servidor es cualquier programa que espera la llegada de una solicitud de comunicación de el cliente. El servidor recibe una solicitud del cliente, llevando a cabo la computación necesaria, y regresa el resultado al cliente. Privilegios y complejidad. Como los servidoies frecuentementenecesitanacceder datos, o puertosde un protocolo, que el sistema operativo protege, el software servidor requiere privilegios del sistema especiales. Cuando un servidorse ejecuta con un privilegio especial del sistema, debe ser tomado con cuidado para asegurar que no pase inadvertidamente privilegios al cliente que lo usa. Por ejemplo, un servidor de archivos que operacomo un programa privilegiado debe tener códigoque verifique si un archivo dado puede ser accedido por un cliente dado. El servidor no puede contar con las verificaciones usuales del sistema operativo porque su estado de privilegio las anularía. Los servidores deben tener código que manejelos aspectos de: lmplementación de 160 _".." ' . .. u n shell remoto .-.. ". Modelo cliente-servidor v concurrencia 1. Autenticidad. Verificar la identidad de el cliente. 2. Autorización. Determinar si a un cliente dado le es permitido acceder el servicio que el servidor proporciona. 3. Seguridad de los datos. Garantizar que los datos no sean intencionalmente reveladoso comprometidos. 4. Privacidad. Información guardada acerca deun individuo no autorizado. 5. Protección. Garantizar que las aplicaciones de la red no puedan abusar de los recursos del sistema. Los servidores que llevan a cabo computación intensa o manejo de grandes volúmenes de datos operan más eficientemente si manipulan solicitudes concurrentemente. La combinación de privilegios especiales y de operaciones concurrentes normalmente hace a los servidores más eficientes de diseñar e implementarque a los clientes. SOFTWARE CLIENTE ESTANDAR CONTRANO ESTÁNDAR Hay dos grandes clases de programas de aplicación cliente: aquellos que involucran servicios normalizados TCP/IP(pe.correoelectrónico) y aquellcs que involucran servicios definidos por el lugar (pe. una base de datos de una institución privada). Los servicios de aplicación normalizados consisten de aquellos servicios definidos por TCP/IPbien conocidos, cuyos identificadores de puerto de protocolo son reconocidos universalmente; se considerarán aquí todos aquellos cuyos servicios de aplicación están definidos localmente o servicios de aplicación no normalizados. La diferencia entre servicios normalizados y otroses solamenteimportantecuando la comunicación es exterior al ambiente local. Dentro de un ambiente dado, los administradores del sistema normalmente definen los nombres de servicio de tal forma que los usuarios no puedan distinguir entre servicio local y normalizado. Los programadores que construyen las aplicaciones de red que serán usadas en otros lugares deben comprender la diferencia, no obstante, se deberá ser cuidadosopara evitar ladependenciaen servicios que soloson válidos localmente. Aunque TCPAP define muchos protocolos de aplicación estándar, la mayoríade los vendedores de computadoras comerciales proporcionan solamente unos cuantos programas de aplicación cliente normalizados con su software TCPAP. Por ejemplo, el software TCP/IP normalmente incluye un cliente de terminal remota que usa el protocolo normalizado TELNET para conexión remota,un cliente de correo electrónico que usa el protocolo normalizado SMTP para transferir correo electrónico a un sistema remoto, y un cliente de transferencia de archivos que usa elprotocolo normalizado FTP para transferir archivos entre dos máquinas. Porsupuesto,muchasorganizacionesconstruyen aplicaciones quehabitualmenteusan TCPAP para comunicarse. Habitualmente el rango de lbs aplicaciones no normalizadas va de lo simple a lo complejo, e incluye serviciosdiversos como transmisión de imágenes y Universidad AutónomaMetropolitana. Unidad lztapalapa 161 Capitulo 5 0 vidcocotrlcrerlcia, trallstiusibll d e voz, coleccih de dalos relrlotos et) tierrlpo real, slsleltm d c reservación de línea de hotel y otros servicios, acceso a bases de datosdistribuidas, etc. Paramefrización de clientes. Algúnsoftwarede cliente proporcionamásgeneralidad cliente permiteal usuario especificar tanto la que otros. En particular, algúnsoftwarede máquina remota en la cual opera el servidor como el número de puerto del protocolo en el cual el servidor está a la escucha. Conceptualmente, el software quepermite a un usuario especificar el número de puerto del protocolo tiene másparámetrosdeentradaque otro sbftware, y se usa el término cliente parametrizado completamente para designarlo. Muchas implementaciones del cliente TELNET interpretan un segundo argumento opcional, como número de puerto. Para especificar solamente una máquina remota, el usuario proporciona el nombre de la máquina remota: telnet nombre-de-la-maquina Dado sólo un nombre de máquina, el programa telnet usa el bien conocido puerto para el servicio TELNET. Para especificar ambos, una máquina remota y un puerto en ésa máquina, el usuario especifica tanto el nombre de la máquinacomo el del puerto: telnet nombre-de-la-maquína puerto No todos los vendedores proporcionan una parametrización completa para su software de aplicación cliente. Por eso, en algunos sistemas, pudiera ser difícil o imposible usar cualquier número de puerto, además del puerto oficial TELNET del vendedor o escribir un software de cliente TELNET nuevo que acepte un argumento de puerto y lo use. Por supuesto, cuando se construye el softwarecliente, es recomendada la parametrización completa. La parametrización completa es especialmentd útil cuando se prueba un cliente o servidor nuevos, porque ello permite verificar el proceso de independencia del softwareexistente ya en uso. Por ejemplo, un programador puede construir en par cliente-servidor TELNET, invocarlo con puertos de protocolo no normalizados, y proceder a probar el software sin disturbio de los servicios normalizados. Otros usuarios pueden continuar accediendoel servicio TELNET antiguo sin interferir durante la prueba. Servidores orientados a conexión contra orientados a no conexión. Cuando los programadoresdiseñansoftware cliente-servidor, debendeescoger entre dos tipos de interacción: un tipo orientado aconexión o un tipo orientado ano conexión. Los tipos de los dos protocolos principales de transporte que interacción correspondendirectamentea proporciona la serie de protocolos TCPAP. Si el cliente y el gemidor comunicantes usan UDP, la interacción es orientada a no conexión;si usan TCP la interacción es orientada a conexión. Desde el punto de vista de la aplicación del programador, la diferencia entre interacciones orientadas o no a conexión es crítica porque determina el nivel de integridad que el sistema subyacente proporciona. TCP proporciona la integridad necesaria para comunicarse a través 7 162 " lmplementación de un shell remoto -~ Modelo cliente-servidor v concurrencia de una intered. Verifica que los datos lleguen y los retransmite automáticamente en caso de que no lleguen. Calcula una verificación sobre los datos y garantiza que no fueron corrompidos durante la transmisión. Utiliza una secuencia de númerbs para asegurarque los datos lleguen en orden, y elimina automáticamente los paquetes duplicados. Proporciona control de flujo para asegurar que el emisor no transmita más rápido de lo que el receptor pueda consumir. Finalmente informatanto al cliente como al servidor si la red subyacente llega a ser inoperable por alguna razón. En contraste los clientes y servidores que usan UDP no tienen garantía alguna acerca de la integridad de los datos liberados. Cuando algún cliente envía alguna solicitud, la solicitud se puede perder, duplicar, degradar o llegar fuera de orden. Los programas de aplicación cliente y/o servidor deben tomar las acciones apropiadas paradetectar y corregir tales errores. * UDP puede ser engañosoporqueproporciona un mejor esfuerzo de entrega; UDP no introduce errores (ello dependeúnicamentede lacapaIP internet subyacenteque entrega paquetes). La entregade IP, depende del hardwaresubyacentede las redes y de; las pasarelas intermedias. Desde el puntode vista del programador, la consecuencia de usar UDP, es que trabaja bien si la internet subyacente trabaja bien. Por ejemplo, UDP trabaja bien enunambiente local porque los errores de integridad ocurren rara vez en un ambiente local. Los errores usualmente surgen solamente cuando la comunicación se expande a unaintered de área ancha. Los programadores algunas veces cometen el error de escoger transporte orientado a no y entoncespruebanel conexión (es decir, UDP) construyendouna aplicación quelausa, software de aplicación sólo en una red de área local. Como ésta red, rara vez o nunca retarda los paquetes, los deja caer, o los entrega fuera de orden, esto hace parecer que la aplicación trabaja bien, sin embargo, siel mismo software es usadoa través deuna intered de área ancha, produce fallas o resultados incorrectos. Los principiantes, así como los profesionistas más experimentados, prefieren usar la interconexión de tipo orientado a conexión. Un protocolo orientado a conexión hace que la programación sea más simple, y liberaal programador de la responsabilidad de detectar y corregir errores. De hecho, agregar integridad a un protocolo de mensajes intered orientado a no conexión como UDPes una tarea nada trivial que normalmente requiere de experiencia considerable en el diseño deprotocolos. Generalmente los programas deaplicación usan UDP si: (1) El protocolo de aplicación específica que debe ser usado UDP, (presumiblemente, el protocolo de aplicación ha sido diseñado para manipular la integridad y liberar errores); (2) el protocolo de aplicación cuenta con un hardware de difusión o de difusión restringida, o (3) la aplicación no puede tolerar gastos fuertes o los retardos requeridos por los circuitos virtuales TCP. Servidores sin estadocontraservidoresconestado. La información que un servidor mantiene acerca de el estado de las interacciones actuales con clientes es llamada Universidad AutónomaMetropolitana. Unidad lztapalapa 163 CaDítulo 5 I información deestado. Los servidores que no 'guardan alguna información son llamados servidores sin estado; los otros son llamados servidores con estado. El deseo de eficiencia motiva a los diseñadores a guardar la información de estado en los servidores. Guardando una pequeña cantidad de información en un servidor se puede reducir eltamaño de los mensajes que elcliente y elservidorintercambian y esto puede permitirle también al servidor responder a las solicitudes rápidamente. Esencialmente, la información de y calcular una estado permite a un servidorrecordar lo que elclientesolicitópreviamente repuesta incremental encadanueva solicitud que llega. E n contraste, la motivación de no guardar la información de estado yace en la integridad del protocolo: la información de estado en un servidor puede llegar a ser incorrectasi los mensajes sonperdidos, duplicados o entregados fuera de secuencia, o si la computadora cliente falla y se vuelve a cargar . Si el servidor usa información de estado incorrecta cuando calcula una respuesta, podria responder incorrectamente. €jemp/o de un sewidor de archivos con estado. Un ejemplo ayudará a explicar la diferencia entre servidores con y sin estado. Considérese un servidor de archivos que permita a los clientes acceder remotamente la información guardada en los archivos de un disco local. El servidor opera como un programa de aplicación, espera a que un cliente haga contacto con éI sobre la red, el cliente envía uno de dos'tipos de solicitud, es decir, ya sea una solicitud para extraer datos de un archivo especificado o bien una solicitud paraalmacenar datos en un archivo específico. El servidor lleva a cabo la solicitud y responde al cliente. Por un lado, si el servidor de archivos es sin estado no mantiene información acerca de las interacciones. Cada solicitud de un cliente para extraer datos de un archivo debe especificar el nombre completo del archivo (éste podría ser muy grande), una posición en el archivo desde la cual los datos deberánser extraídos, y el número de bytes a extraer.Similarmente cada solicitud hacia elservidor para almacenar datos enun archivo deberá contener el nombre completo del archivo, una posición en el archivo en la cual los datos deberán ser almacenados, y los datos a almacenar. Por otro lado, si el servidor de archivos mantiene la información de estado de sus clientes, puede eliminar la necesidad de pasar los nombres de archivo en cada solicitud. El servidor mantiene una tabla que contiene la información de estado acerca del archivo que está siendo accedido actualmente. L a Tabla Imuestra un posible arreglo de la información de estado. Cuando un cliente abre porprimera vez un archivo, ,el servidor agrega una entrada a su tabla de estado, que contiene elnombre del archivo, un rnanejador (unentero usado para identificar al archivo) y una posición actual en el archivo (inicialmente cero). El servidor envía entonces un manejador de regreso al cliente para usar en solicitudes subsecuentes. Cada vez que el cliente extrae datos adicionales de el archivo, envía un pequeño mensaje que incluye el manejador. El servidor usa el manejador para buscar el nombre de archivo y la posición actual en su tabla de estado, incrementa la posición de archivo en ésta tabla, así la siguiente solicitud de elclienteextraerá nuevosdatos. De ésta forma, elcliente puede enviarsolicitudes repetidas para moverse a través de elarchivo entero, cuando elclientetermina de usar un archivo, envíaunmensaje informandoalservidor que elarchivoya no será utilizado, en respuesta elservidorelimina la información de latabla deestado. E n tanto que todos los 164 Implementación remoto shell de un Modelo cliente-servidor v concurrencia mensajes viajen confiablemente entre el cliente interacción más eficiente. y el servidor, un diseño con estado hace la I Si bien la información de estado puede mejorar la eficiencia, también puede hacer difícil o casi imposible el mantenimiento de duplicaciones, retardos o entregas de mensajes fuera de orden en la red fundamental (por ejemplo si el cliente y el servidor usan UDP para comunicarse). ¿Que sucedería si en el ejemplo anterior si la red duplicara una solicitud leída?. AI llamar al servidor que contiene una noción de la posición del archivo en su información de estado, se suponeque elservidor.actualizala posición del archivo cada vez que elcliente extrae datos de archivo. E n consecuencia si la redduplica una solicitud leida, el servidor del archivo, recibirá doscopias, cuando la primera copia llega, elservidorextraedatos actualiza la posición de archivo en su información de estado y regresa el resultado al cliente. El cliente podría ver la segunda respuesta como un duplicado y descartarla, o podría reportar un error porque recibió dosrespuestas diferentesa una solicitud sencilla. E n otro caso, la información de estado en el servidor puede llegar a ser incorrecta, porque difiere de la noción que tiene el cliente del estado verdadero. MANEJADOR NOMBRE DE ARCHIVO POSICIóN ACTUAL 1 dept.archi.txt test.pr0grama.c tcp.libro.doc tetris.exe O 456 2 3 4 38 128 Tabla 1 . Ejemplo de una tabla de la información.de estado para un servidor de archivos con estado. Cuando una computadora arranca, la información de estado también puede ser incorrecta. se llevea cabouna operación quecrea información de estado adicional, elservidor podría no recibir los mensajes que lepermitan descartar la información. Eventualmente la información de estado acumulada agota la memoria del servidor. E n elejemplo del servidor de archivos, si un cliente abre 100 archivos y entonces falla, el servidor mantendrá 100 entradas inútiles por siempre en su tabla de estado. Si un cliente fracasadespuésque Un servidor con estado podría llegar también a la confusión (o responder incorrectamente) si un nuevo cliente empieza la operación después de arrancar usando los mismos números de puerto que el cliente previo que estaba operando cuando el sistema falló. Podría parecer que éste problema puedeser resueltofácilmente haciendo que elservidorborre la información previa del cliente cada vez que llega una nueva solicitud de interacción. S e debe recordar que la intered podría retardar y duplicar mensajes, por lo que cualquier solución para el problema de nuevos clientes que reusan lospuertos después de arrancar, deben manejartambiénel caso donde un cliente inicia normalmente, pero su primer mensaje al servidor llega duplicado (y una copia está retrasada). Universidad Autónoma Metropolitana. Unidad lztapalapa 165 Capítulo 5 * I E n general, los problemas del mantenimientocorrecto de estado,puedenser resueltos solamente con protocolos complejos que se ajustan a los problemas de entrega no confiable y arranque de un sistema de computadora. La información de estado como aspecto de un profocolo. Aunque se ha discutido la información de estado en el contexto de los servidores, la cuestión de si un servidor.es con o sin estado, se centra más en la aplicación de el protocolo que en la implementación. Si el protocolo de aplicación especificaque elsignificado deun mensaje particular dependede alguna manera de los mensajes previos, podría ser imposible proporcionar una interacción sin estado. E n esencia, el aspectode la información de estado se enfocaen sielprotocolo de aplicación asume la responsabilidad de entrega confiable. Para evitar problemas y hacer confiable la interacción , un diseñador de un protocolo de aplicación debe asegurarse de que cada mensaje no sea de alguna manera ambiguo. Esto es, un mensaje no puede depender de si está siendo entregado en orden, ni depender de' si los mensajes previos han sido entregados. El diseñador de un protocolo debe construir la interacción de tal manera que el servidor dé la misma respuestano importa cuantas veces o como llegue una solicitud. Los matemáticos usan eltérmino idempotencia para referirse a la operación matemática que siempre produce el mismo resultado. Aquí se usa el término para referirse a los protocolos que logran que un servidor de la misma respuesta a un mensaje dado, no importa cuantas veces llegue. Servidores como clienfes.Los programas no siempre encajan en la definición de cliente o servidor. Un programa servidor podría necesitar acceder servicios de red que requieren que funcione como cliente. Por ejemplo, supóngaseque e l programa servidor de archivos del ejemploanterior, necesita obtener la hora del díaparapoder estampar en los archivos el tiempo de acceso. Supóngase también que el sistema en el cual opera no tiene reloj que de la hora del día, para obtener la hora, el servidor actúa como un cliente enviando una solicitud a un servidor de tiempo como se muestra en la Figura 1 . E n un entorno de red que tiene muchos servidores disponibles, no es inusual encontrar un servidor para aplicación actuando como un cliente para otra. Por supuesto, los diseñadores deben ser cuidadosos para evitar dependencias circulares entre servidores. CONCURRENCIA EN REDES El término concurrencia se refiere a la computación simultánea aparente. Por ejemplo, un sistema de computación multiusuario puede lograr concurrencia por medio de "tiempo compartido", o un diseño que se las arregla para que un procesador sencilloconmuteentre múltiples tareas lo suficientemente rápido como para dar la apariencia de proceso simultáneo. 1 166 Implementación de un shell remoto El procesamiento concurrente es fundamental para la computación distribuida y ocurre de muchasformas. Entre las máquinasdeuna red simple, muchas parejas deprogramasde aplicación pueden comunicarse concurrentemente, compartiendo la red que las interconecta. Por ejemplo, la aplicación A en una máquina puede comunicarse con la aplicación B en otra máquina, mientras la aplicación C en una tercera máquina se comunica con la aplicación D en una cuarta. Aunque todas ellas comparten una red simple, las aplicaciones aparecen para ser procesadas como si operaran independientemente. El hardware de la red fuerza a las reglas de acceso para que cada par de máquinas comunicantes intercambien información. Las reglas de acceso previenen que un par de aplicaciones dado sea excluido por otras aplicaciones que consumen el ancho de bandatotal de la red. La concurrencia también puede ocurrir dentro de un sistema de computadora dado. Por ejemplo, cada uno de los usuarios en un sistema de tiempo compartido pueda invocar una aplicación en otra máquina. Un usuario puede transferir un archivo mientras otro usuario maneja una sesión de conexión remota. Desde el punto de vista de un usuario parece que todos los programas son procesados simultáneamente. ii Cliente Figura 1. Unprograma servidor de tiempo. servidor de archivos actúacomo un cliente conrespectoa un Además de la concurrencia entre clientes en una máquina simple, el conjunto de todos los clientes en un conjunto de máquinas puedeejecutarse concurrentemente. La Figura 2 ilustra la concurrencia entre programas cliente que corren en varias máquinas. El software cliente normalmenteno requiere atención o esfuerzo especial por parte del programador para hacerlo usable concurrentemente. El programador de aplicaciones diseña y construye cada programa cliente sin considerar la ejecución concurrente; la concurrencia entre múltiples programas clientes ocurre automáticamente porque el sistema operativo permite que cadaunode los múltiples usuarios invoque un clien$e concurrentemente. Así los clientes Universidad Autónoma Metropolitana. Unidad lztapalapa 167 Capítulo 5 I i11divicltrnlesoperan cot110cualquier programa convencional. 1 CONCURRENCIA EN SERVIDORES En contraste a la concurrencia del software cliente, la concurrencia en un servidor requiere esfuerzoconsiderable. Como muestrala Figura 3, un programa servidor simple,debe de manejar llegada dela solicitudes concurrentemente. I Para comprender porque la concurrencia es importante, se considerarán varias operaciones que requieren comunicación y10 cálculos considerables. Por ejemplo, piénsese en un servidor de conexión remota . Si opera sin concurrencia,puede manejar solamente una conexión remota a la vez. Una vez que un cliente contacta con el servidor, éste debe ignorar o desechar los requerimientos subsecuentes hasta que elprimer usuario finalice. Claramente, tal diseño limitala utilidad del servidor, y evita que múltiples usuarios remotos accedan a una máquina dada al mismo tiempo. Figura 2. La concurrencia entre programas cliente ocurre cuando los usuarios los ejecutan en múltiples máquinas simultáneamente o cuando un sistema operativomultitareapermite múltiples copias para ejecutarse concurrentemente en una computadora simple. TERMINOLOGíA Y CONCEPTOS Como pocos programadores de aplicación tienen experiencia con el diseño de programas concurrentes, la comprensión de la concurrencia en los servidores puede ser desafiante. El concepfo de proceso. E n los sistemas de procesamiento concurrente, la abstracción 168 Implementaclón de remoto E n shell Modelo cliente-servidor Y concurrencia de proceso define una unidad fundamental de computación. La mayoría de lainformación esencial asociada con un proceso es un apuntador a instrucción que específica la dirección en la cual el proceso se está ejecutando. Otra información asociada con un proceso incluyela identidad propia del usuario, el programa compilado que se está ejecutando y las localidades de memoria del área de texto del programa y datos del proceso. Unproceso difiere deun programaporqueel concepto deproceso incluye solamente la ejecución activa deuna computación, no elde códiao. Después de que el código ha sido cargado en una computadora, el sistema operativo permite que ejecute uno o más procesos. E n particular,un programa de procesamiento concurrentepermitemúltiples procesos para ejecutarel mismo pedazode código "almismotiempo". Cada proceso esprocesado a su propia velocidad, y cada uno puede empezar o finalizar en un tiempoordinario. Como cada uno tiene un apuntador a instrucción se ejecutará en seguida, por lo que no habrá confusión alguna. Por supuesto, en una arquitectura monoprocesador, la C P U simple, ejecuta un proceso en cada instante de tiempo. El sistema operativo hace que la computadora parezcacomo si permitiera más de un procesamiento a la vez, por medio de la conmutación de la C P U entre todos los procesosen ejecución rápidamente. Dehecho, unproceso es procesadoenun tiempo corto, entonces otro proceso se procesa en un lapso corto de tiempo y así sucesivamente. Seusa el término ejecución concurrente para captar la idea. Significa "ejecución aparentemente simultánea". Figura 3. El software del servidor debe ser programado explícitamente para manejar solicitudes concurrentes porque los múltiples clientes. contactan a un servidor usandosu puerto de protocolo. Programasconfraprocesos. E n un sistema de procesamiento concurrente, un programa de aplicación convencional es meramente un caso especial; consiste de una pieza de código que es ejecutada por exactamente unproceso a la vez. La noción de procesos Universidad Autónoma Metropolitana. Unidad lztapalapa 169 Capítulo 5 o difiere de la noción convencional de programa devarias formas. Por ejemplo, la mayoría de los programadores de aplicación piensan en el conjunto de variables definidas en el programa como asociadas con el código. Con todo, si más de un proceso ejecuta el código concurrentemente esesencial que cada proceso tengasu propia copia de variables. Para entender por qué, considérese el siguiente segmento de código en los enteros del 1 al I O : for (i = O; I "C" que imprime < 10; i++) printf("%d\ n", i); La interacción usauna variable índice, i. Enunprogramaconvencional, el programador piensa que la variable i está situada junto con el código. Pero, si dos o más procesos ejecutan el segmento decódigoconcurrentemente,unode ellos puede estar en la sexta iteración cuando el otro índice va en la primera iteración. Cada uno debe de tener un diferente valor de i. Así cada proceso debe tener supropia copia de la variable i o resultará una confusión. I Llamadas a procedimiento. En un lenguaje orientado a procedimiento, como Pascal o C, el código ejecutado puede contener llamadas subprogramas a (procedimientos o funciones). Los subprogramas aceptan argumentos, calculan un resultado, y entonces regresan junto al punto de llamada. Si un códigoejecuta múltiples procesos concurrentemente, cada uno puede estar en un punto diferente en las secuencias de llamadas a procedimiento. Un proceso A, puede empezarsu ejecución, llamar a un procedimiento, y entonces llamar a un procedimientodesegundo nivel antesque otro proceso B, empiece. El proceso B puede regresar desde el proceso de la llamada a proceso de primer nivel justo cuando el proceso A regresa de una llamada de segundo nivel. El sistema en tiempo de ejecución para lenguajes de programación orientados a procedimiento usan un mecanismo de pilas para manejar las llamadas a procedimiento. Los sistemas en tiempo de ejecución colocanun registro de activación a procedimiento. Sobre la pila cadaque se haceunallamadaa procedimiento. Entre otras cosas los registros de activación almacenan información acerca de la localización en el código en el cual ocurre la llamada a procedimiento. Cuando el procedimiento finaliza su ejecución, el sistema en tiempo deejecuciónsaca el registro de activación del topede la pila, yregresa al procedimiento desdeel cual ocurrió la llamada. Enanalogíacon la regla para variables, los sistemasde procesamiento concurrente proporcionan una separaciónentre llamadas a procedimiento enla ejecución de procesos: Cuando un pedazo de código ejecuta múltiples procesos concurrentemente, cada uno tiene su propia pila de tiempo de ejecución de los registros de I activación de procedimiento. Conmutacíóndecontexto y díseiiode software deprotocolos. Aunque las facilidades de procesamiento concurrente que los sistemas operativos proporcionan hacen los programas más poderosos y fáciles de entender, nohacen lo mismo con los costos computacionales. Para asegurar que todos los procesos sean procesados concurrentemente, el sistema operativo usa conmutación rápida de CPU entre procesos para que parezcan al usuario como procesos quese ejecutan simultáneamente. I 170 Implementación de *_._~... .. ~ m.,-.",-* un shell remoto -." Modelo cliente-servidor y concurrencia Cuando un sistema operativo detiene temporalmente la ejecución de un proceso y conmuta a otro, ha ocurrido una conmutación de contexto. La conmutación de contexto de procesos requiere el uso de la CPU, y mientras la CPU está ocupada en la conmutación, ninguno de los procesos de aplicación recibe algún servicio.Así,seve que la. conmutación de contexto necesita soportar procesamiento concurrente. Para evitar gastos innecesarios, el software del protocolo debería ser diseñado para minimizar la conmutación de contexto. En particular, los programadores deberían ser siempre cuidadosos para asegurar que los beneficios introducidos por la concurrencia en el servidor sobrepasen el costo de la conmutación de contexto entre los procesos concurrentes. , Concurrencia y entradakalida (Us)asíncrona. Además del soporte proporcionado poreluso concurrente de la CPU, algunossistemas operativos permiten programas de aplicación sencillos que controlan las operaciones de E/S concurrentes. En UNIX, la llamada al sistema select, proporciona una operación fund mental alrededor de la cual los ? programadores pueden construirprogramas que manejen E/S concurrente. En principio, select, es fácil de entender: permite a un programa preguntar al sistema operativo cual dispositivo de E/S está listo para usar. Como ejemplo, imagínese un programa deaplicación que lee caracteres desde una conexiónTCP y los escribe a la pantalla. El programa debería también permitir al usuario teclear comandos en el teclado para controlar como son desplegados los datos. Como un usuario rara vez (o nunca) teclea comandos, el programa no puede esperar la entrada desde el teclado (debería continuar la lectura y desplegar texto desde la conexión TCP). Sir1 embargo, si el programa trata de leer desde la conexión TCP y los datos no están disponibles, el programa se bloqueará. El usuario debe teclear un comando mientras el programa bloqueado espera entradas de la conexión TCP. El problema es que la aplicación no puede saber si la entrada llegará desde la entrada o desde la conexión TCP primero. Para resolver el dilema, un programa UNIXllama a select. De hecho le pregunta al sistema operativo si le permite saber cual fuente deentrada llegará a estar disponible primero. La llamada regresa tan pronto como la fuente está lista, y el programa lee de esa fuente. INTERNETWORKING WITH TCP/IP CLIENT-SERVER PROGRAMMINGAND APPLICATIONS Prentice-Hall. Vol. 3. [1993] Douglas E. Comer Págs. 9-18, 21-26, 31-32. Universidad Autónoma Metropblitana. Unidad lztapalapa 171 CAPÍTULO 6 ENTRE PROCESOS COMUNICACIóN ENTRE PROCESOS [TOMADO Y ADAPTADO DE Goscinski]' En un entorno distribuido, la comunicación entre procesos cooperantes se hace por medio del paso del mensajes. La comunicaciónentre procesos en diferentes computadoras se puede dar, usando el mismo formato'que el de la comunicación entre procesos en una computadora simple. Para que un sistema distribuido proporcione acceso a los recursos distribuidos de una red, de manera uniforme e independiente del lenguaje, de la localización de la red, y en algunos casosdesistemas operativos anfitriones, la comunicación entre procesosdebe ofrecer políticas y mecanismos para efectuar las comunicaciones locales y remotas entre procesos autorizados y entre procesos y recursos. El alto rendimientode la comunicación es la facilidad más crítica quedebe ofrecer un sistema de comunicación distribuido. El rendimiento de tales sistemas depende de la rapidez de la comunicación entre procesos, la cual dependea suvez dedosaspectos:de las primitivas de la comunicación entre procesos y del protocolo de transporte que soporta esas primitivas. Ya que las computadoras en un sistema distribuido no comparten memoria, la comunicación vía memoriacompartida,no es aplicable. La comunicación entre procesos puede ser llevada a cabo solamente mediante el intercambio de mensajes. Pueden ser usados diferentes conjuntos de primitivas en la comunicación entre procesos. Sin embargo, los tres más comunes están basadosen: 1. Paso de mensajes. 2. Llamadas a procedimientos remotos(RPC)., 3. Transacciones. Están ordenados de acuerdo a un orden creciente de nivel de abstracción; cada conjunto puede ser construido basándoseen su predecesor. El paso de mensajesentre procesos remotosestá asociado con el modelocliente-servidor y es una extensión de la comunicación entre procesos para sistemas centralizados. El flujo de información es unidireccional desde el cliente hastael servidor: sin embargopuede ser bidireccional como en el caso rendezvous (encuentro). CaDítulo 6 Liskov' sugirió que la comunicación entre procesos remota deberíaestar basada en el paso guardianes. Los demensajesde un mismo tipo entre módulosdeprogramasllamados guardianes están destinados a ser las unidades de distribución en un sistema multicomputadora y pueden y pueden ser vistos como servidores autónomos. El términogeneralllamadaaprocedimientosremotos (RPC) implica un mecanismo que verifica ypermitea un lenguajededeterminado nivel llamar aunacomputadorapara ser dirigida automáticamentea otra computadoraencorrespondenciaaunallamadadedicho lenguaje. Este mecanismo requiere un protocolo de transporte que soporte la transmisión de sus argumentos y resultados. Es importante notar que el término llamada a procedimientos remotos es usado algunas veces para describir un protocolo de transferencias de bajo nivel. Las RPCs ofrecen un flujo bidireccional de información. Las transacciones fueron desarrolladas orjginalmente para los sistemas de administración de bases de datos, para auxiliar en el mantenimiento deconsistencia forzada de aplicaciones dependientes arbitrarias en el almacenamiento de datos. El enfoque y los mecanismos de las transacciones simplifican la construcción desi$temas confiables. Dichossistemasdeben proporcionar soporte uniforme para la invocación y sincronización de operaciones en objetos de datos compartidos, asegurar la variación de transacciones, y el comportamiento atómico y la recuperación en presencia de la red. Es deseable, desde el punto de vista del usuario y del programa, que las transacciones sean completamentetransparentes. El paso de mensajes y las llamadas a procedimientos remotos están en amplio uso hoy en día, pero los sistemas operativos distribuidos soportan las transacciones aunque aún no sean ampliamente reconocidas. I COMUNlCAClÓN ORIENTADA A MENSAJES. La comunicación orientada a mensajes está definida como una forma de comunicación en la cual el usuario es consciente explícitamente del mensaje usado enla comunicación y de los mecanismos usados para entregar y recibir mensajes. Mensajes. Un mensajeesuna colección de objetos dedatosde un tipo específico formada por un tamaño de cabecera fijo y una longitud de cuerpo variable (algunas veces constante), la cual puedeser manejada porun proceso, y entregada asu destino. Un tipo asociado con un mensaje proporciona información estructural sobre como debería ser identificable el mensaje. Un mensaje puede ser de cualquier tamaño y puede contener ya sea datos, o apuntadores a datos fuera de la porción contigua del mensaje. El contenido del *Liskov B. H. and Scheifler R. (1982). Guardians and Actions: Linguistic Support for Robust, Distributed Programs.ACM Transactions on Programming Languages andSystem, 5(3), 381-404. 176 Implementación de un shell remoto __ " " -. " - ." Comunicación entre ' .~.. . .procesos . .. - .. I I I W I W J ~ esle clelerltlltledo por. el proceso emsor. Et1 C ~ I I ~ ~ctlyutlas I O , p a l e s de la ( X I ~ contienen información relacionada conel sistema que puede ser suministrada porel mismo. J ~ L ~ I ~ Se ilustran dos ejemplos de formatos de mensajes simples en la Figura 1. La parte (a) de esta figura muestraunacabecerade mensajesimple condatosmientrasque la parte (b) presenta una cabecera de mensajesimple con un apuntador. Uno de los problemas más importantes asociados con mensajes, es que estructura, si hay alguna, debería ser usada. Puerto fuente Puerto destino ldentificador del mensaje Tipo Número de elementos a) Puerto fuente Puerto destino ldentificador del mensaje Tipo de puntero Número de elementos Apuntador Datos Datos Figura 1. Formatos de mensajes simples:(a)sin datos. b) I apuntador a datos, (b) con apuntador a Losmensajespueden ser estructurados o no estructurados. Elusodemensajes no estructurados, lo cual hacenecesario la interpretación por los procesosdel usuario, tiene problemas. Los mensajes estructurados son favorecidos además por razones de eficiencia y bajo costo. Primifivas de paso de mensajes bdsicas. La comunicación orientada a mensajes está en estrecha relación con el modelo cliente-servidor, donde un proceso, un cliente (o emisor) envia un mensaje(una solicitud) a otro procesollamado servidor (o receptor), y entonces espera una respuesta o continúa corriendo. , En el área de paso de mensajes la comunicación se basa en dosaspectos: 1. Cual es el conjunto de primitivas de comunicación. 2. Cual es su semántica. En la Figura 2 se muestra un mensaje que es enviado y recibido mediante la ejecución de primitivas La forma más simple de primitivas de comunicación: envía y recibe dadas en la Figura 2, y el comportamientode los dos procesos involucrados en la comunicación, se ilustran en la I Figura 3. Universidad AutónomaMetropolitana. Unidad lztapalapa 177 Capítulo 6 I " La Figura 3 muestra que: 1. El proceso cliente tiene que especificar la dirección destino (servidor) y el mensaje en la primitiva envía (servidor, mensaje). 2. El proceso servidor específica desde donde viene el mensaje y proporciona un buffer para almacenar el mensaje que llega: recibe(idenfificador- roces so-fuente, buffer). f envía lisfa-de-expresiones a identificadordesfino recibe lisfa-de-variables de idenfificadorfuenfe ,# Figura 2. Primitivas de paso de mensajesbásicas. Servidor Cliente - envia Procesos ................................................................................. Comunicación virtual recibe Conexió n física Núcleo y sistema de comunicación envía I I envía - recibe A I \ Medio de comunicación Figura 3. Conexión entre el cliente y el servidor que usan las primitivas envía y recibe para comunicarse. No se requiere inicialización ni conexión (por lo tanto, ni desconexión). Algunas veces, una primitiva permite vigilar y/o seleccionar los mensajes que llegan. La Figura 4(a) presentauna primitiva recibe, quevigila: permite la recepciónde un mensaje solamente si B es verdadero.La Figura 4(b) muestrala primitiva recibe selectiva; dicha selección esnormalmenteno deterministica aunquepuede ser impuesto un ordenen las declaraciones dadas en laFigura 4(b). Seplantea ahora la cuestión: ¿Que semánticas deberían tener las primitivas?. Liskov' identifica las siguientes primitivas de comunicación: * Liskov B. (1979). Primitives for Distributed Computing. In Proceedings of the 7th ACM Symposium on Operating System Principles, Pacific Grove, California, pp. 33-43. Implementación de 7 78 ~ ." " " un shell remoto " - 1. El envíoque no espera. El proceso que envía un mensaje solamente hastaque el mensaje ha sido compuesto. 2. El envío sincronizado. El proceso que envia el mensaje espera hasta que el mensaje haya sido recibido por el proceso destino. La comunicación requiere que el emisor y el receptor se sincronicen para intercambiar mensajes. 3. El envío de invocaci6n remoto. El proceso emisor espera una respuesta de el proceso receptor que ha ejecutado el comando. (a) recibe lista-de-variables desde identificadocfuenfe cuando 8 (b) selección recibe lista-de-variables desde id-fuente- 7 or recibe lista-de-variables desde 'id-fuente-2 or recibelista-de-variables desde id'fuente-3 fin Figura 4. Primitiva recibe que vigila (a) y selectiva (b). Éstas semánticasno explicantodos los detalles y no songenerales.Esto es porque un conjunto de primitivas de paso de mensajes debe proporcionar facilidades para la identificación de procesos involucrados en la comunicación, para mover datos entre ellos, para sincronizar susacciones y proporcionartrhnsferenciaconfiable dedatos. Las semánticas deberían de ser fáciles de entender, eficientes al implementarlas, y no ser propensas a error. S e consideran en seguida varios conjuntos de primitivas. Primitivasbloqueantescontra no bloqueantes. Una de las propiedades más importantes de las primitivas del paso de mensajes concierne a si su ejecución podría ser retardada. Se diferencia entre primitivas bloqueantes y no bloqueantes. S e dice que una primitiva tiene una semántica no bloqueante si su ejecución nunca retarda a su invocador: en otro casose diceque la primitiva es bloqueante. En elprimer caso el mensaje debe ser orientado a buffer. Con una primitiva no bloqueante: I 1. envía regresa elcontrolalusuariodelprogramatanpronto como el mensaje ha sido desencolado para su transmisión subsecuente o tan pronto como una copia sea hecha. 2. Cuando el mensaje ha sido transmitido (o copiado a un lugar seguro para una subsiguiente transmisión), el programa es interrumpido para informar que el buffer puede ser , 3. La correspondiente primitiva recibe, señala su disponibilidad para recibirel mensaje y proporciona un buffer en el cual puede ser colocado el mensaje. 4. Cuando llega un mensaje el programa es informado mediante una interrupcion. Universidad Autónoma Metropolitana. Unidad lztapalapa 179 Capítulo 6 La ventaja de las primitivas nobloqueantesesqueproporcionanmáxima Además, éstas primitivas son útiles para aplicaciones en tiempo real. flexibilidad. Las desventajas delas primitivas no bloqueantes son queellas: 1. Pueden requerir deunbufferpara prevenir elacceso o cambiodelcontenido mensaje antes o durante la transmisión, o mientras.se está esperando la recepción. del 2. Hacen la programación artificiosa y difícil (no reproducible, los programas dependientes del tiempo son arduos deescribir y horribles de depurar). Las primitivas bloqueantes proporcionan una forma simple para combinar la transferencia de datos con la función de sincronización. Si la primitiva envía tiene semántica de bloqueo, el emisor es bloqueadohastaque elreceptor, recibe el mensaje.Encambio, el receptor es también suspendido hasta que el emisor ha ejecutado la solicitud de envía. Esto resulta en la sincronización de los procesos emisor y receptor. Con las primitivas bloqueantes: I 1. Paraunbloqueono confiable, envíano regresa el control al usuario hastaque el mensaje ha sido enviado; el programa puedemodificar el buffer. 2. Para un envío confiable envía no regresar el control al usuario hasta que el mensaje ha sido enviado y la recepción reconocida; el programa puedemodificar el buffer. 3. recibe no regresa el control hasta que un mensaje ha sido colocado en el buffer. 4. Las primitivas bloqueantes y no bloqueantes no causanconflicto. Hay tres formas para la primitiva recibe. El recibe bloqueante es el más común, ya que el procesono tiene algo quehacer antes o mientqas aguarda la recepción del mensaje. Hay también una primitiva recibe no bloqueante y una primitiva para verificar si un mensaje esta disponible para recibirse. Como resultado, un procesopuede recibir todos los mensajes y entoncesseleccionaunode los procesos.En la Figura 5 se ilustran las primitivas envía y recibe con semántica bloqueante. Elproblemacon las primitivas bloqueantes esque inhiben el paralelismo (un proceso bloqueadoen recibe o envía nopuedehacer un trabajo útil) yno habilitan a un proceso bloqueado para que esperamás de un tipo de evento. Primifivas con buffer contra primitivas sin buffer (encuentros local y remoto). En algunos sistemas de comunicación basados enmensajes los mensajes usan buffers entre el tiempo que son enviadosy recibidos. Se tienen tres casos: 1 1. Sistema con buffer de tamaño finito: En este caso el envia se puede retardar hasta que exista espacio suficiente en el buffer, o envía envía un código de retorno al emisor, indicando que el mensaje no puedeser enviado. La situación para un recibees similar. 2. Sistema con buffer ilimitado. El procesonunca se retardará cuando se ejecute un envía. Este sistema se llama asíncsono. La característica más importante delos sistemas asíncronos es que permite al emisor adelantarse arbitrariamente al receptor. 180 Implementsción de un shell remoto 3. Sistema sin buffer. E n este caso la ejecución de envía siempre se retarda hasta que se ejecuta su recibe correspondiente. E n este tipo desistema, los procesosdeben ser sincronizadosparaquese transfierael mensaje;aesta.sincronización se lellama rendezvous (encuentro). E n general los sistemas con buffer son más complicados de diseñar y presentan más problemas de control que los sistemas sin buffer. Encuentro local (rendezvous local). El encuentro local es usado enuna comunicación bidireccional entre dos procesos en el mismo programa ejecutándose en el mismo espacio de dirección. Un encuentro ocurre como consecuencia de que un proceso invoque una entrada declaradaenla interface de un segundoproceso, y el segundoproceso ejecute una declaración de aceptación que habilite una llamada a esa entrada. ' La entrada debe tenerparámetros de entrada1 y de salida. Los parámetros de entrada son pasados por valor de el emisor a el receptor cuando comienza el encuentro, y los parámetros de salida son pasados al emisor desde el receptor cuando termina el encuentro. 1 P O EMISOR RECEPTOR I envía recibe bloqueado bloqueado recibe < envía mensaje respuesta de Figura 5. Primitivas envía y recibe con semántica bloqueante. Encuentro remoto (rendezvous remoto). El encuentro remoto es una extensión uniforme de un encuentro local. Esta forma de comunicación tahbién proporciona flujo de información bidireccional. Para invocar un encuentro remoto, un proceso debe tener tanto: 1 . La visibilidad para la interfazde el proceso remoto. La interfaz es proporcionada mediante una copia de la definición de la interface de el receptor (proceso destino) en el texto de cualquier programa que desee invocarlo. 2. El identificador del proceso remoto. El identificador del proceso remoto consta del identificador de el proceso destino y de la identidad del nodoen el cual se están ejecutando. Universidad Autónoma Metropolitana. Unidad lztapalapa 181 CaDítulo 6 El encuentro remoto es invocado exactamente de la misma forma que un encuentro local. un La Figura 6 ilustra un protocolo simple de cuatro paquetesusadoparaimplementar encuentroremoto entre nodos.Proporcionaseguridaden los servicios de entrega y tiene buenas características bajo carga. Primitivas confiablescontra primitivas no confiables. Las primitivas discutidas hasta ahora se llaman primitivas no confiables porque tienen problemas si se presenta alguna falla en la red. La primitiva no confiable envía solamente pone un mensaje en la red. No garantiza que la entrega sea llevada a cabo efectiva y/o correctamente. En una comunicación confiable, entre procesos, la primitiva envía maneja los mensajes perdidos usando retransmisiones internas y reconocimientos basándose enintervalos de tiempo. Surge la cuestión de si la confiabilidad debería ser tratada en las capas de alto nivel. Una solución llamada argumento de extremo a extremo, afirma que sí, aunque exista un poco de redundancia. 1 EMISOR bRBplica RECEPTOR l (parhmetr Y I Reconocimient ’ O Figura 6. Protocolo de encuentro remoto. (a) primitivas no confiables CLIENTE ” (b) primitivas confiables CLIENTE SERVIDOR enví envía recibe I FF recibe recibe SERVIDOR recibe 1 envía >anvia . recibe 4 1 Figura 7. Primitivas confiables y no confiables. 182 Implementación de un shell remoto -.- Comunicacih entre Drocesos El recibe confiable o no confiabledifiere en que el primero envía reconocimientos automáticamenteconfirmando la recepción’de mensajes mientras que el último no. Las dos formas de comunicación requierenlautilización deéstas primitivas depasode mensajes simples de forma simétrica. Si el cliente solicita algunos datos, el servidor envía una respuesta usando la primitiva envía. Por ésta razón el cliente tiene un conjunto de primitivas recibe para recibir cualquier mensaje del servidor. Las primitivas confiables y no confiables se contrastan en la Figura 7. Formas estructuradas depaso de mensajes.El rendimiento de la comunicación entre procesos se puede aumentar imponiendo una estructura a las primitivas. Una forma estructurada de comunicación que usapaso de mensajes se logra diferenciando entre solicitudes y respuestas (más precisamente a través del comportamiento de solicitud-respuesta de las operaciones) y proporcionando flujo de informaiCión bidireccional. Esto significa que el cliente envía un mensaje de solicitud y espera una respuesta. El conjunto de las primitivas se da en la Figura 8. Direccionamiento simétrico. E n la comunicación directa, cada proceso que quiere enviar o recibir un mensaje debe nombrar explícitamente al emisor o receptor de la comunicación. E n este caso, las primitivas envía y recibe son definidas como se muestra en la Figura 9. I Esteesquema exhibe un direcc’ionamientosimétrico, es decir tantoel receptor tienen que nombrar uno a otro para comunicarse. emisor como el Direccionamientoasimétrico. Una variantedeeste esquemaemplea asimetría en el direccionamiento; solamente elemisornombraal receptor, mientras que elreceptor no requiere nombrar al emisor. E n este caso las primitivas envia y recibe se definen como se muestra en la Figura I O . envía envía solicitudes y obtiene respuestas; combina un envía previo deun servidor conun recibe que obtiene de la respuesta delservidor. cliente al obten-solicitud es ejecutada por los receptores (servidores) para adquirir mensajes que contienen trabajo a realizar. envía-respuesta el receptor (servidor) comdetar trabaio. el usa esta primitiva para enviar una respuesta después de Figura 8. Una forma estructurada de primitivas de paso de mensajes. I Universidad Autónoma Metropolitana. Unidad lztapalapa 183 CaDítulo 6 La comunicación directa es fácil de implementar y de usar. La desventaja de los esquemas simétrico y asimétrico es la limitada modularidad de la definición del proceso resultante. La comunicación directa (nominación) no permite mas que un cliente y no hace posible enviar un mensaje a más deun servidor idéntico. La solución es la,comunicación indirecta y está basada en buzones. Enlaces. Un enlace se define como un canal de comunicaciónunidireccional (simplex) para procesos del usuario, procesos del sistema o del núcleo. Un enlace es un objeto protegido y puede ser usado como un mecanismo de nominación para recursos controlado mediante un administrador de recursos centralizado. Para usar un enlace como un medio de comunicación cada proceso tiene una tabla de enlaces asociada conél. Cada entrada deesta tabla contiene un caminodecomunicación disponible para el proceso. Así, la tabla identifica todos los caminos de comunicación conlos cuales el ppceso hace interface con el resto del sistema. Un proceso puede generar un enlace o destruirlo. 1 envía (PImensaje) envía un mensaje al procesoP. recibe (Q, mensaje) recibe un mensaje del procesoQ. Figura 9. Primitivas para comunicacióndirecta. Los enlaces pueden ser usados eficientemente para soportar la migración de procesos; sin embargo los enlaces unidireccionales tienen varias deficiencias como "enlaces colgantes" (generadoscuandomuere un proceso) y gastosde administración de enlaces. Para evitar estos problemas se crearon los enlaces bidireccionales (dúplex). La Figura 11 y la Figura 12 muestran las primitivas decomunicacióndeenlace orientadas aenlaces y conenlaces bidireccionales (envía) respectivamente. I envía (PImensaje) envía un mensaje al proceso P. recibe (id,mensaje) recibe un mensaje de cualesquier procesos;id secoloca al nombre de procesos con el quela comunicaciótl a tomadolugar. Figura I O . Primitivas con direccionamientoasimétrico. 184 Implementación un de shell remoto Comunicación entre procesos Puertos. La segunda técnica es conocida como comunicación indirecta y esta basada en nombres globales a veces llamadas buzones.Un buzónpuedeaparecer como el destino clmignado en ctralqtlinr primitivn anvín, y COIIIO In flrnrlto dosigtlndn 011 clr:d(1tri(~r Ijrirllilivrr recibe. Esto implicaque los mensajes enviados a un buzón dado pueden ser recibidos por cualquier proceso que ejecute una nominación recibe para ese buzón. I el Por envía (enlace, buffer) envia un mensaje desde un buffer a lo largo de la transmisión indicada enlace. en recibe (enlace, buffer) recibe un mensaje en la transmisión indicada por el enlace y la coloca buffer. el I Figura 1 1 . Primitivas de comunicación orientadas a enlace. Un procesopuedecomunicarsecon otros procesos por medio de puertos diferentes. La primitiva que permite que un mensaje sea recibido en un puerto, dado se muestra en la Figura 13. envía (enlace, buffer, enlace-final) envia a un extremo de un enlace, enlace-final, la transición indicada por el enlace y la coloca en el buffer Figura 12. La primitiva send con enlace bidireccional. recibe (8, mensaje) recibe un mensaje del puerto B. Figura 13. La primitiva recibe para comunicarse a través de un puerto. 1 1 envia (A, puerto) envía puerto al puerto A. Figura 14. La primitiva envia pasa la propiedad de un puerto. Universidad Autónoma Metropolitana. Unidad lztapalapa 185 Capítulo 6 La propiedad de un puerto puede ser pasada en un mensaje de un proceso a otro. recibe accede al puerto que debeser pasado en el mensaje. En este caso la primitiva envía se define en la Figura 14. Obtención dedatos de un proceso. Hay alternativas para pasar deun proceso a otro: 1. Los procesos pasan datos porvalor a través del intercambio de mensajes. 2. Los procesos pasan datos porreferencia. Los sistemas de mensajes por valor requieren que los datos sean copiados físicamente. Este tipo desistema se usaen los mensajes asíncronos. Ademáscon frecuencia estos sistemas limitan el tamaño del mensaje. 4 E l paso de datos por referencia requiere memoria compartida. Su principal ventaja es que es barato; los mensajes largos no necesitan ser copiados más de una vez. Sus desventajas son que la tarea de programación que implica, es más compleja y requiere una combinación de administración de memoriavirtual y comunicación entre procesos. Esquemas de Comunicaciónentreprocesos. Unesquemacomúndemensajes basado en la comunicación entre procesos es uno a uno (denotado algunas veces 1:I). Un procesoemisorsimple envía un mensajea un proceso receptor simple ' y eventualmente obtiene una respuesta. Es también posible que el emisor no espere respuestaalguna. En muchos sistemas distribuidos es necesaria la comunicación uno a muchos o difusión. (l:n, n>l, n es el número de procesos). Este esquema de comunicación puede ser necesario para notificar una condición excepcional a todaslas partes. I Enalgunas aplicaciones se necesita unacomunicaciónde difusión restringida, la cual permite a un subconjunto de la red virtual recibir mensajes de el mismo tipo. Ejemplo de tales aplicaciones sonsistemas que soportanencuentrosremotos y concurrentes, protocolos de encargo, control y producción de procesos. Un ejemplo de comunicación muchos a unoes un esquema donde hay un cliente y muchos servidores idénticos. I El último esquema de comunicación considerado esel de muchos a muchos. En la práctica se implementacomounacomunicaciónmuchosauno (un cliente y varios servidores idénticos), viapuertocompartido o de un procesode interface dedicado,seguidodeuna comunicación uno auno. Respuestas Multidafagfama. La consideracibn final con respecto al envio de mensajes es si deben ser de tarnaño fijo o variable. El envío de mensajes de tamaño fijo tiene las siguientes caracteristicas: 1. La implementaciónfísica es directa. 186 Implementación de un shell remoto Comunicación éntre procesos 2. La tarea de programación es difícil. Et) 01 otro caso los rrlerlsajos de tarrlailo variable: 1. Requieren de una implementación física más compleja. 2. L a programación es simple. En un sistema de comunicación con mensajes de tamaño fijo la entrega debe ser confiable. Los mensajes largos debenser divididos y enviadoscomo un mensajemultipaquete (multidatagrama). Los mecanismos de recuperación en sistemas basados en multipaquetes son mas complicados que en el caso de una solicitud de mensaje (sistema basado en un reconocimiento). Condiciones de excepción. Supóngase que un mensaje se pierde en el caminodel emisor al receptor. Hay tres métodos básicos para tratar con este evento y con la revoltura de mensajes. I 1. El sistema operativo es responsable de la detección de este evento y del reenvío del mensaje, si así lo desea. 2. El proceso emisor es responsable de la detección del evento y de la retransmisión del mensaje, si así lo desea. 3. El sistema operativo es responsable dela detección del evento;entonces notificaal proceso emisor que el mensaje se ha perdido. El proceso emisor puede proceder si así lo desea. LLAMADA A PROCEDIMIENTOS REMOTOS (RPC) El modelo cliente-servidor para la interacción de procesos requiere del intercambio de dos un mecanismo dellamada a mensajes. Este tipo de relación es mejorservidamediante procedimientos tradicional (un mecanismo para la transferencia de control y datos entreun programa que corre en una computadora simple), donde la espera del resultado está implícita en la llamada al servicio. Como el mecanismo de llamada a procedimiento tradicional no está los sistemas distribuidos,fue desarrollada la llamada aprocedimientos adaptadopara remotos (RPC) para proporcionar este tipo de sincronización de alto nivel en la red. Caracteristicas. La llamada a procedimientos remotos es un enfoque lingüístico basado en el concepto fundamental conocido como llamada a procedimiento. La idea de las llamadas a procedimientos remotos es muy simple y está basada en la observación de que en el modelo un cliente envia una solicitud, y entonces se bloquea hasfa que un servidor remoto envia una respuesta. Universidad Autónoma Metropolitana. Unidad lztapalapa 187 Capítulo 6 Así, el objetivo de una llamada a procedimientos remotos es permitir que los programas distribuidos sean escritos de la misma forma que los programas convencionales para sistemas de computación centralizados. Una de las principales ventajas de esta forma de comunicación es que el programador no necesita estar consciente de si la llamada invoca un procedimiento (o proceso) local o remota(o). La diferencia entre llamada a procedimientos y llamada a procedimientos remotos es el hecho de que el cliente y el servidor están en procesos separados, corriendo normalmente en computadoras separadas. Así: 1. Están expuestos tanto a las fallas de computadoras como a las de los sistemas de comunicación. 2. No comparten el mismo espacio de direqciones. 3'.Tienen tiempos de vida separados. El término muy general llamada a procedimientos remotos significa un mecanismo de tipo verificador que permite a un lenguaje de determinado nivel llamar a una computadora para convertirse automáticamente en una llamada correspondiente de un lenguaje de ese nivel en otra computadora. Este mecanismo requiere un protocolo de transporte para soportar la transmisión de sus argumentos y resultados. La RPC, es responsable de el mapeo de las llamadas de los lenguajes y de la clasificación del sistema de alto nivel dentro de las facilidades proporcionadas por la capa de transporte de la red. Aunque el paso de mensajes y llamadas remotas son análogos, los sistemas basados en mensajes y los sistemas basados en llamadas a procedimientos remotos difieren en la relación entre como se comunican los procesos. Los procesos en los sistemas basados en mensajes sirven de compañeros mientras que en los sistemas basados a llamadas a procedimientos remotos usan una relación maestro-esclavo. , Llamador (proceso cliente) - I Proceso: llama (procedimiento) espera continúa < mensaie resultante (respuesta) Llamado (proceso servidor) Proceso (recibe) > - ejecuta proc. regresa - COMPUTADORA A COMPUTADORA B Figura 15. Una llamada a procedimiento remoto. I Hay también otra diferencia. Mientras que enel paso de mensajes todos los valores requeridos deben ser asignados explícitamente a los campos de un mensaje antes de su transmisión, la llarrada a procedimientos remotos proporciona un ordenamiento de los 188 - ImplementaciQn de ur1 shell remoto Comunicacibn entre procesos parámetros para la transmisión del m.ensaje, esto es, la lista de parámetros es vista como un todo por el sistema para formar un mensaje. L a llamada a procedimientosremotos es enviada porun llamador (proceso cliente) en la forma de mensaje de llamada (solicitud) a el proceso remoto (//amado).El proceso llamado (servidor) ejecuta el procedimiento y envía un mensaje de respuesta. E n el mensaje intercambiado en la Figura 15, es obvio que la llamada a procedimientos remotos proporciona flujo de información bidireccional. La semántica de llamadas a procedimientos remotos procedimiento locales: es análoga a las llamadas a 1. El llamador se suspende mientras espera un resultado. 2 . El llamador puede pasar argumentos a el procedimiento remoto. 3. El procedimiento llamado puede regresar resultados. Sin embargo, ya que los procesos llamador y llamado están en computadoras diferentes (conespaciosde direccióndiferentes)elprocedimientoremoto noaccede a los datos y variables de el ambiente llamador. RPC está disponible, por ejemplo en la versión UNlX de Sun. Aspectos principales. Las propiedades y primitivas son los aspectos principales de un mecanismo de llamada a procedimientos remotos. Una llamada a procedimientoremoto debería exhibir las siguientes seis propiedades: 1. Semántica de llamada uniforme. Una implementación de llamada a procedimiento remoto transparente mantiene la misma semántica que la que esusada para llamadas a procedimientos locales. E n otro caso, los procedimientos local y remoto deben ser codificados diferentemente. 2. Tipo de verificación. El nivel de tipo de verificación aplicado a las llamadas a procedimiento local se aplica igualmente a las llamadas a procedimientos remotos. Una llamada a procedimientoremoto es tratada por elcompilador exactamente comouna llamada a procedimiento local. 3. Funcionalidad de parametrización completa. Todos los tipos de datos básicos deberían ser asignadoscomo parámetros a la llamada a procedimientos remotos. Los tipos de primitivas, tipos estructurados y tipos definidos por el usuario deben ser considerados. de concurrencia y .manejo de excepciones. Estos no son aspectos 4. Control fundamentales de las llamadas a pyocedimientos remotos, pero el lenguaje de programación debe proporcionar estos servicios. 5. Conexión distribuida. Un lenguaje de programación que usa RPC debe tener algunos medios para compilar, conectar y cargar programas distribuidos en la red. 6. Computaciones huérfanas. Este aspecto considera la confiabilidad de un mecanismo de RPC,en particular la recuperación de una llamada a procedimientos remotos que falla. Las dos técnicas principales usadas para tratar con huérfanos son: I . Universidad Autónoma Metropolitana. Unidad lztapalapa 189 Capítulo 6 1 . Exterminación: encontrar y abortar las computa'ciones huérfanasque resultan deun fracaso. 2. Expiración: determinar cuando una computación (candidata a ser.huérfana) ha existido después de su tiempo de vida esperado. La computación es abortada automáticamente después del tiempo de expiración. Primitivas. Cuando se usan llamadas a procedimientos remotos, un cliente interactúa con un servidor por medio de una declaración a llamada como la mostrada en la Figura 16. Unallamada remota es ejecutada de la siguiente manera: los argumentosvalor son enviadosa al servidor y el proceso que llama se retarda hasta que el servidor ha sido ha sido regresado y asignadoa los argumentos completado y hasta que elresultado resultantes. llamada servicio(arg-valor; arg-resultado) en donde servicio es realmente el nombredeun canaldecomunicación definido, comprende tanto fuente el como el destino designados. Si se usa comunicación directa, servicio designa el proceso servidor; si la comunicación es indirecta, (se usa puerto) un servicio gebe designar el tipo servicio de solicitado. Figura 16. Declaración llamada. S e especifican dos enfoques básicos para especificar el lado del servidor en la RPC: 1. El procedimiento remoto es una declaración (como un procedimiento en un lenguaje secuencial) como el mostrado en la Figura 17. -~ procedimiento remoto servicio(entrada parihetros-valor; salida parrimefms resultado) cuerpo fin Figura 17. Especificación tipo procedimiento de un servidor RPC. Este tipo de especificación es implementado como un proceso. Este proceso, el servidor, proceso que llama, los recibe el mensaje que contiene los argumentosvalordealgún asignaa los parámetros valor, ejecutaun cuerpo, y entonces regresa un mensaje de de los parámetros resultado. La sincronización respuesta que contiene los valores 190 remoto shellImplementación un de I_.- Comunicación entre procesos __ " " . -. - resultante de los envía y recibe, ocurre aún si no hay parámetros valor o resultado. 2. El procedimiento remoto es una declaración de la figura mostrada en la Figura 18. Esta declaración puede ser colocada en cualquier lugar en el que cualquier otra pueda ser colocada. La ejecución deesta declaración retarda al servidor hasta que llega un mensaje resultante de una llamada al servicio. Entonces Fe ejecuta el cuerpo usando los nombres de los parámetros valor y cualesquiera otras variables accesibles al alcance de la declaración. AI terminar se envíaun mensaje de respuesta al llamador, el cual contiene los valoresdelos parámetros resultado. Cuando acepta es usada para especificar el servidor, el procedimiento remoto se llama rendezvous (encuentro). Un modelo simple de RPC. El concepto general de R P C puedeser caracterizado basándose en el siguiente modelo simple: Cuando es invocado un proceso remoto: 1 . El ambiente que hace la llamada es suspendido. 2. Los parámetros son pasados a través de la red al ambiente donde el procedimiento esta para ejecutarse y son copiados al ambiente del procedimiento. 3. El proceso deseado se ejecuta ahí. Cuando el procedimiento finaliza y produce resultados: 4. Los resultados son pasados de regreso al ambiente que hace la llamada y asignados a los argumentos resultado, donde la ejecución continúa como si regresara de una llamada de computadora simple. 1 acepta servicio(entrada parámetros-valor; salida parámetros-resultado) "+ cuerpo Figura 18. Especificación tipo rendezvous de un servidor R P C . y Nelson' (1984) para usar Una posible estructurade programa propuesta porBirrell llamadas a procedimientos remotos se presenta en la Figura 19. ' Esta estructura usa el enfoque de fragmentos. Una característica interesante del enfoque de fragmentos es que no requiere algún cambio en el compilador del lenguaje en el cual está escritoel programa quellama.También tieneel efecto lateral dequelas llamadas a procedimientos remotos son indistinguibles de las llamadas locales a pesar del hecho de que tienen semánticas de llamada diferentes. La Figura 19 muestra la relación entre los siguientes elementos involucrados en la llamada a procedimiento remoto: el cliente, el fragmento-cliente, el paquete de comunicación RPC ~~ ~ ~~ Birrel A.D. and Nelson B.J. (1984). Implementing RemoteProcedure Calls. ACM Transactionson Computer Systems, 2(1),pp. 39-59. Universidad Autónoma Metropolitana. Unidad lztapalapa 191 Capítulo 6 (llamado tambiénrutina R P C ) , el fragmento-servidor, y el servidor. Además, esta figura muestra la relación entre los elementos del programa. Las interacciones de los elementos del sistema se dan como sigue: 1. Cuando el cliente desea hacer una llamada remota, hace una llamada local normal, la cual invoca un procedimiento correspondiente en1 el fragmento del usuario. El procedimiento fragmentado es ligado en el espacio de dirección del proceso cliente. 2. E n este estado, el fragmento-cliente es responsable de dos tareas importantes: Colocar una especificación del procedimiento destino y los argumentos en uno a más mensajes. II. Preguntar a la rutina R P C (la capa detransporte) para transmitir confiablemente al llamado. I. 1 d Mientras tanto, el proceso que llama se suspende esperando el datagrama-resultado. 3. La rutina R P C en la computadora que llama envia mensajes a la computadora llamada, la cual también corre una rutina R P C . COMPUTADORA LLAMADA LLAMA COMPUTADORA QUE Capa de transporte Figura 19. Loscomponentes del sistema, y su interacción parauna R P C simple. O p l : ordenamiento deparámetros,generación del identificador R P C , preparar el reloj para la respuesta. Op2: desordenar los parámetros, notar el identificador R P C . Op3: ordenar resultados, preparar el reloj para reconocimiento de la respuesta. Op4: desordenar resultados, 1 enviar reconocimientos. 4. La rutina R P C en la computadora llamada, recibe esos mensajes y los pasa al fragmento servidor. 5. El fragmento servidor lleva a cabo dos tareas: desempaca los mensajes recibidos y hace una llamada normal para invocar al procedimiento llamado en el servidor; los parámetros son pasados de manera normal. Implementación 192 de remoto ’un shell ”,” “, . Comunicxión entre Drocesos 6. Cuando la llamada se completa en el servidor, regresa alfragmentoservidor y los resultados se regresan al fragmento suspendido de forma normal. 7. El fragmento servidor es responsable de colocar los resultados en uno o más mensajes y de preguntar a la rutina R P C para transmitirlosconfiablemente a la computadora que hizo la llamada. 8. La rutina R P C transmite los mensajes a la computadora que hizo la llamada. 9. L a rutina R P C en la computadora que hizo la llamada recibe esos mensajes y los pasa al fragmento cliente. O I .El fragmento cliente desempaca los resultados y los asigna a los argumentos resultado. Mientras que elambiente que hizola llamada es suspendido, otros procesosen la computadora pueden (posiblemente) ejecutarse todavía (dependiendo del paralelismo de ese ambiente y de la implementación RPC). Los únicos procedimientos que saben que la llamada es remota son los fragmentos. La rutina R P C es responsablede datagramas y de la protección. las retransmisiones, reconocimientos, enrutamiento de I La llamada a procedimientosremotos puede ser vista como unrefinamiento de las primitivas envía, obten-solicitud y envía-respuesta, confiables, bloqueantes y estructuradas. Esto tiene las siguientes ventajas: 1 . Clarifica y simplifica la semántica (lo que facilita la construcción de computaciones distribuidas). 2. E s una forma de comunicación entre procesos. 3. E s un enfoque general. I Así, el mecanismo RPC puede ser usado para proporcionarfacilidades de comunicación entre procesos entre un proceso cliente simple y un proceso servidor simple. Tal mecanismo puede ser extendido a un sistema para muchos clientes y muchos servidores. L a facilidad R P C puede ser usada ensistemas de computación homogéneos y heterogéneos. RPC para muchos clientes y muchos servidores. Hay dos posibles extensiones. La primera es una que soporta un tipo de comunicación R P C entre muchos clientes y muchos servidores. El segundo soporta concurrencia encada computadoraanfitrión, que son un anfitrión cliente y un anfitrión servidor. Como resultado: 1 . Un núcleo de cliente puede proporcionar servicios para más de un proceso haciendo una llamada a procedimientos remotos al mismo tiempo. 2. Un núcleo de servidor puede servir a muchos clientes a la vez. Ambas extensiones pueden ser implementadas basándose en la idea de canales de cliente, los cuales conectan al proceso cliente el proceso, servidor, y son usados para secuencializar las R P C s de varios procesos clientes. El proceso servidor guarda la información acerca de los canales del cliente usados por los procesos cliente;el no tiene quesaberacercade los procesos en sí mismos. Hay unos pocos canales del cliente en cada computadora cliente. Por sí. Un procesopuedeusar un canal si esta libre. Una eso los procesos compitenentre Universidad Autónoma Metropolitana. Unidad lztapalapa 193 Capítulo 6 I cornputadora servidor tiene algunosprocesos servidores. Como resultado puedemanejar solicitudes RPC de mbs de un cliente a la vez, un ejemplo de comunicaciónRPC extendida se ilustra en la Figura 20. I Cliente Computadora A Cliente Computadora B Figura 20. Canales del cliente y procesos endistintas computadoras. Como el manejodeprocesos servidores enunacomputadora es limitado, ellos son multiplexados entre los canales delcliente que usa elservidor. El núcleo del servidor asigna un proceso servidor a un canal de cliente particular para una serie de llamadas a procedimiento remoto. Para alcanzar una alta disponibilidad en un sistema distribuido donde las computadoras tienen características diferentes fueron introducidos los conceptosde tropa y llamada a procedimiento replicada. Una tropa es un conjunto de réplicas de un módulo ejecutándose en varias computadoras. Los miembros individuales de una tropa no se comunican entre sí porque no están conscientes de la existencia de los otros. Sin embargo, las tropas pueden comunicarse cada una con otra. La extensión de la llamada a procedimiento remoto básico para lo comunicación de tropas es una llamada a procedimientoreplicada. I Lallamadaaprocedimiento replicada proporcionacomunicaciónmuchosamuchos.La semántica de una llamadaa procedimiento replicada es la ejecución de todos los miembros de la tropa exactamente una vez, esto es, cuando una tropa cliente hace una llamada a unatropa servidor, cada proceso de la tropa servidor lleva a cabo el procedimiento solicitado exactamente una vez, y cada proceso en la tropa cliente recibe todos los resultados (Figura 21). Paraalcanzar la transparenciaenla replicación, los miembros dela tropa deben comportarse determinísticamente, esto es, dos réplicas en el mismo estado deben ejecutar el mismo procedimientoen el mismo orden, lo que produce los mismos efectos laterales, y regresa los mismos resultados. Implementación de 194 .. ”,‘. .~ _.. un shell remoto .I. ” ~ - . ~ ~ - . . - , - ” -. Comunicacim entre procesos I C O m Computadora B P U roceso servido t a d O r a A Figura 21. Llamada a proceso replicada. Parámefros y resultados enRPCs. Los parámetros pueden ser pasadospor valor o por referencia. El paso de parámetros por valor en la red e fácil: el fragmento copia parámetros en un mensaje y lo transmite. El paso de parámetros p r referencia (punteros) sobre una red es más complicado. Un Únicosistema ancho de punteros se necesita para cada objeto que pueda ser accedido remotamente. d Las llamadas a procedimientos remotos requieren la transferencia de estructuras de datos de un lenguaje de determinado nivel entre dos computadoras involucradas en la llamada. Esto es llevado a cabo generalmente empaquetando los datos en un buffer de la red enuna en la del otro lado. 'Esta operación se llama computadora y desempaquetándolos ordenamiento. Más precisamente, un ordenamiento es un proceso que lleva a cabo tanto el envio de la llamada como el envío del resultado, en el cual se pueden distinguir tres acciones: 1. La toma de los parámetros a ser pasados a al procedimiento remoto y de los resultados de la ejecución del procedimiento. 2. El ensamblaje de estos dos pasos en una forma conveniente para su transmisión entre las computadoras involucradas en la llamada a procedimiento remoto. Desarrollarlos a su llegada. Manejo de excepciones.Los parámetros exportados a un procedimiento remoto podrían contener errores o ser inconsistentes. Si el proceso llamado (servidor) no puede resolverlqs, esto deberíaser reportado al llamador (proceso cliente). Así, debeser proporcionado un servicioimportante. Este servicio es llamado manejo de excepciones. Los mecanismos de manejo de excepciones son dependientes del lenguaje. Sin embargo, existe la necesidad de un método que distingaentre llamadas correctas e incorrectas. Así, elllamadortiene que Universidad Autónoma Metropolitana. Unidad lztapalapa 195 Capítulo 6 verificar cada valor regresado y, cuando .sereporta una falla, puede requerir más información acerca de esafalla. lmplemenfacióndeunprocesollamado y ,unollamador. Los dosprocesos involucrados en la llamada a procedimientos remotos pueden tener tiempos de vida diferentes. Hay dos implementaciones conceptualmente diferentes del proceso que ejecuta la llamada remota. l.El procesollamado existe antesde la llamaday corre continuamente.Esta es una implementación típica deun servidor. Así, este procesoescucha si hayllamadas (mensajes) de solicitud, ejecuta el procedimiento apropiado y regresa una respuesta. Un servidor de este tipo puede ser llamado por cualquier número de procesos remotos. Las llamadas se ejecutan secuencialmente. Podria haber uno o más servidores. 2. Un proceso que ejecuta un procedimiento remoto es creado por cada cliente o por cada llamadaa procedimiento. Así, resultan múltiples llamadas enlacreacióndeprocesos para manejar cada una. Todos los procesos pueden ejecutarse en paralelo. El proceso se muere después deque se completa el procedimientosolicitado. Enlace cliente-servidor. Normalmente, una RPC esconde los detalles de la localización de los servidores a los clientes de los clientes (Ilamadores). Sin embargo, en un sistema con más de un servidor, porejemplo un servidor de archivo yun servidor de impresión, el conocimientode la localización de los archivos clientes o deun tipo deimpresora es importante. Esto implica la necesidad de un mecanismo para enlazar un cliente y un servidor, en particular, enlazar un fragmento RPC al servidor correcto y alprocedimientoremoto correcto. 1 Birrel y Nelson identifican dos aspectos deenlace: l.La forma en la que el cliente especifica que desea ser enlazado al servidor (problema de nominación). 2. Las formas en las que el solicitante (llamador) determina la dirección de la computadora del servidor (Ilarnado), y la especificación del procedimiento a ser invocado (problema de direccionamientc;). 1 El enlace puede set- llevada a cabo dedos formas diferentes: 1. Estáticamente. A través de un tercero como un servidor denombres; los clientes y servidores son procesos del usuario. 2. Dinámicamente. Este enlace es entre un canal del cliente y un proceso servidor, y es controlado por elservidor que puede localizar su proceso servidor para activar canales. Es importante saber cuando toma lugar un enlace. La construcción y uso de una aplicación distribuida basada en RPC se puede dividir en tres fases: tiempo de compilación, tiempo de enlace y tiempo dellamada. Tiempo de compilación. Implementación de 196 ." __I ... .. .. ... - " " - un shell'remoto ~ I _ . I ComunicaciLn entre procesos 1. Los módulos cliente y servidor se programan como si fueran destinados a ser enlazados juntos. 2. Se produce ttna dsscripci6n do la intorfnco implomontndn pnrn 01 sorvidor. S o protiltc:otl dos fragmentos: cliente y servidor. El fragmento cliente, que ve al cliente como un servidor, es enlazado con el cliente. El fragmento servidor, que ve al servidor como un cliente, es enlazado con el servidor. 3. El fragmento protegeal cliente y al servidor de los petalles de enlace y transporte. la definición de la 4. Idealmente los fragmentos se producenmecánicamentedesde interface, mediante un generador de fragmentos. Tiempo de enlace. 1. Un servidor haceque su disponibilidad sea conocidapara su propia exportación (o registro) a través de una rutina RPC que soporta el mecanismo. 2. Un cliente se autoenlaza a un servidor específico mediante una llamada que importa su mecanismo. 3. Las llamadas pueden tomarlugar, una vez que se ha completado el proceso de enlace. 4. Se espera que el enlace pueda llevarse a cabo menos frecuentemente que las llamadas. Tiempo de llamada. 1. Losfragmentosempleanalgún protocolo de capa de transporte subyacentepara transmitir argumentos y resultados confiables entre clientes y servidores. 2. Pueden usarselos diferentes protocolos de la capa de transporte. 3. Las facilidades RPC deberían incluir alguna información decontrol en cada paquete que se transporta a la pista de estado de unallamada. Esquemasdeenvio de mensajes. Se analizarán brevemente las aplicaciones que requieren mensajes pordifusión o por difusión restringida. El primer problema en el esquema de comunicación uno a uno que se extiende a difusión, es conectar dicho esquema con los puertos de difusión. Éstos son proporcionados extendiendo la versión de puerto local a puerto de red, donde los puertos de redson puntos en una cola en cada computadora(procesador) para mensajes de difusión. En segundo lugar, las llamadas a puertos dedifusión pueden ser similares a las llamadas a puertos locales. La diferencia está en el número de computadoras destino y en el número de respuestas esperadas, que cambia.la manipulación de los valores de las respuestas y de la elección de puntos deverificación. El tercer problema está asociado con las respuestas de difusión. Un puerto de difusión que especifica un valor de retorno espera una de cada computadora. Por consiguiente, un puerto de difusión con un valor de retorno de tipo T realmente regresa un arreglo de tipo T como resultado. El tipo de índice del arreglo es de tipo enumerativo y contiene los nombres de todas las computadoras(módulos del procesadoren el programa).Esto implica que el valor regresadopor la computadora i puede ser referenciado usandouna notacijn de arreglo subscripto con índice i. Universidad Autónoma Metropolitana. Unidad lztapalapa 197 Capítulo 6 rl nitlcliwlln 1)totAntIln nhlri nnoc:in(la (:o11 In nnlt1tillUt!n tln lnttllll\nc:lt5t1 (In ttirtmlcitl 10% puntos 011 los cualos se puededock que la difuslbn terrrlinason los rnlsrnos quepara las llamadasapuertos locales. La diferencia es quemuchascomputadoras diferentes pueden tener que llegar a ésos puntos antes deque terminen. Los mensajes de difusión restringida comparten problemas similares a los de mensajes de difusión. Llamadas procedimientos a remotos ambientes heferogbneos. Hay cinco componentes de una RPC: 1. Soporte en tiempo de compilación, incluyendo el lenguaje de programación, el lenguaje de descripción de la interface, elgeneradordefragmentos,y la estructura de d fragmentos. 2. El protocolo de enlace. 3. El protocolo de transporte. 4. El protocolo de control. 5. El protocolo de representación dedatos. 1 Servidor XEROX (Mensajero RPC, es decir, el protocolo XNS para transporte y los protocolos para enlace, representación de datosy control). Servidor VAX Servidor Sun (RPCde Sun normalizadacon TCP: TCP (transporte), XDR (representación de datos), y los protocolos Sun paraenlacey control). (RPC de Sun normalizada y UDP, es decir, UDP (transporte), XDR (representación de datos), y protocolos Sunparaenlace y control). Figura 22. Emulación HRPC de facilidades RPC múltiples. Los últimos tres protocolos son empleadx en tiempo dellamada. Un ejemplo de una implementación en tres computadoras diferentes de un servidor que, cuando es llamado, responde con una lista de usuarios conectados a la computadora en la cual reside, se ilustra en la Figura 22. 198 - Implementación de " " un shell remoto Comunicación entre procesos La razón de definir claramente las interfaces procedimentales es que se requirió que un fragmento HRPC (Llamada a Procedimientos Remotos Heterogbnea) y algún componente del protocolo de control, del de representación de datos y componentes del protocolode transporte fueron habilitados para funcionar juntos. La interacción de éstos componentes se ilustra en la Figura 23. Las direcciones de las flechas indican la dirección de las llamadas durante la porción de la llamada de una RPC. Semántica de la llamada a procedimientos remotos. Una llamada a procedimientos remotos puede no completarse satisfactoriamente, esto es, el mensaje resultado no es regresado al llamador como una respuesta a su mensaje de llamada, porque pueden ocurrir cuatro eventos, los cuales son la base del diseño de la semántica RPC: 1 . La llamada al mensaje se pierde. 2. El mensaje de respuesta se pierde. 3. La computadora llamada fracasa y se reinicia. 4. La computadora que llama fracasa y se reinicia. F’, Servidor Llamada RPC Llamada RPC Regreso de RPC Fragmento servidor cliente I \ Mensaje RPC Transporte 1 Regreso de RPC Control 1 Datos Figura 23. Interacción entre los componentes en tiempo de llamada HRPC. S e pueden identificar tres semánticas diferentes y susmecanismossepueden manera general para resolver los eventos anteriores: tratar de 1. Semántica de llamada posible. Los intervalos de tiempo son usados para prevenir que Universidad Autónoma Metropolitana. Unidad lztapalapa 199 Capítulo 6 el llamador espere indefinidamente,un mensaje de respuesta. 2. Semántica de llamada al menos unavez. El mecanismo normalmenteincluye intervalos de tiempo y un procedimiento de retransmisión de llamada. El llamador intenta llamar al procedimiento remoto hasta que obtiene una respuesta o hasta que no puede decirle que el proceso llamado hafallado. 3. Semtintica de llamada exactamente una vez. El mecanismo para esta llamada incluye en adición aaquelusadoen la semántica dellamadauna vez (esto es intervalo de tiempo y retransmisiones), identificaciones dellamada y una tabla delprocedimiento llamadoque tiene las llamadas actuales. Esta tabla es usadaparaalmacenar las llamadas recibidas por primera vez y los resultados de la ejecución del procedimiento para esas llamadas. Protocolosdecomunicaciónespeciales para RPCs (llamadassimples y llamadas complejas). Birrel y Nelsonproponen dostipos dellamadasaprocedimientos remotos para sistemas de computación homogbneos (algunos de sus elementos pueden ser usados por sistemas de computación heterogéneos): llamadas simples y llamadas complejas. Las llamadas simples son usadas en una situación donde: 1. Todos los argumentos y todos los resultados puedan ser guardadosen sencillo. 2. Las llamadas sean hechas frecuentemente. un paquete I Lacomunicaciónde la llamada debería ser particularmente eficiente. Lasllamadas complejas se usan donde las condiciones paralas llamadas simples no son cumplidas. Llamadas simples. Para hacer una llamada, e! proceso que llama envía un paquete de llamada que contiene: un identificador de la llarnada, especificación dedatosde un procedimiento deseadoy los argumentos. Cuandounacomputadora apropiado. llamada recibe este paquete, se invoca al procedimiento Cuando un procedimiento regresa, el paquete resultante contiene: el mismo identificador de llamada y los resultados. Dicho paquetese envía de regreso al llamador. La computadora que transmite un paquete es responsable de retransmitirlo hasta que sea recibido un reconocimiento, para compensarlos paquetes perdidos. Llamadas complejas. Las llamadas complejasse hacen en doscasos: 1. En situaciones donde las llamadas duran mucho o donde hay grandes intervalos entre I llamadas. 2. Si los argumentos (y/o) resultados son tan grandes que no caben en un paquete simple (hay que enviar múltiples paquetes). 200 Implamentación de un shell remoto .,.. . Comunicación entre procesos . ~~. . ~ E n las situaciones donde hay una larga duración delentre llamadas, hay dos estrategias para retransmisiones y reconocimientos. La primera de éstas estrategias sigue los siguientes pasos: 1. El transmisor de un paquete es responsable de retransmitirlo hasta que sea reconocido. 2. Cuando el llamador está satisfecho consusreconocimientos,espera el proceso resultante. 3. Mientras espera el llamador envía periódikamenteun paquetedeindagacióna computadora llamada, la cual espera reconocer el paquete de indagación. la La segunda solución requiere de la división de un bloque grande de datos (respuesta y/o solicitud) en fragmentos. En este caso el sistema se comporta de la siguiente forma: ' 1 . La respuesta y/o solicitud (argumentos y/o resultados) son enviados en múltiples paquetes pero la Mima solicitud lleva un reconocimiento. Evitar los reconocimientos de fragmentos individuales mejora el reconocimiento. 2. Para eliminar la duplicación, los fragmentos (los múltiples paquetes de datos en una llamada) tienen un número de secuencia de llamada relativo. En el caso de que se pierdan los fragmentos se pueden implementar dos soluciones: 1. Retransmitir el mensaje entero. 2. Retransmitir solamente los mensajes omitidos. Paso de mensajes contra llamadas a procedimientos remotos. La sintaxis y la semántica de una llamada a procedimiento remoto están en función del lenguaje de programación usado. Por el contrario, escoger una sintaxis y una semántica precisas para el paso demensajes esmás difícil que paralas RPCs porque no hay normalizaciones para mensajes. I Cabe hacer notar que desde el punto de vista del proceso cliente, las llamadas a procedimiento remoto son muysimilaresalencuentroremoto (rendezvous remoto). Esto es porque ambos involucran llamadas bloqueantes con paso de parámetros en ambas direcciones. Sin embargo, la diferencia entre estos dos sistemas de comunicación se manifiesta en la implantación de los mecanismos en la parte superior de la capa de transporte y en el uso de patrones. 1 Comparandola llamada a procedimientos remotos, con el paso de mensajes, la primera tiene la importanteventaja de que la interfacede un servicioremoto puede ser fácilmente y tipos de documentada como un conjunto de procedimientos con ciertos parámetros resultados. Además,desde laespecificación de la interface, es posible generar código automáticamente que esconda todos los detalles de los mensajes al programador. Nótese que una estructura simplificada que ocultalos mensajes reduce el rango de las opciones de comunicación disponible a las aplicaciones del programador. E n el otro caso, un modelo de paso de mensajes, muestra cierta flexibilidad no encontrada Universidad Autónoma Metropolitana. Unidad lztapalapa 20 1 Capítulo 6 I en los sistemas de llamadaaprocedimientos remotos. Sin embargo, esta flexibilidad es a costo de la dificultad de preparar documentaciónprecisa de la interface de paso de mensajes. El problemaescuandodeben ser usadasestas facilidades. Cberiton' enfatiza que el enfoquedepaso de mensajesaparecede preferencia si se requiere un manejode la secuenciaciónde las solicitudes. El enfoque RPC aparecepreferentementecuando hay beneficios de rendimiento significativos para el manejo desolicitudes concurrentes. COMUNICACIÓN POR TRANSACCIONES SISTEMAS OPERATIVOS DISTRIBUIDOS EN Únicamente se indicará en que consisten los fundamentosdelacomunicación por transacciones en un sistema operativo distribuido; se mencionará en que consiste un socket (de manera genérica), y en vez de profundizar en este tipo de comunicación, se analizarán en detalle los sockets en el sistema UNIX, posteriormente. Los sistemasdecomputación distribuidos potencialmentesonmuy confiables por la posibilidad deproporcionarrecursosredundantesen diferentes nodos. Sin embargo, la distribución de recursos redundantes también genera algunos problemasserios, tales como la escasez de información de estado global, la posibilidad de fallas parciales y el rendimiento de muchas operaciones en paralelo. Estos problemas implican alguna dificultad en el mantenimiento dela consistencia de los datos. Otro aspecto de los sistemas de computación distribuida es que una comunicación simple no siempre puede ser usada para proporcionar interacción entre dos procesos. La interacción total puede ser una secuencia de comunicaciones y computaciones. En este caso el concepto de una transacción es una representación muy conveniente de la totalidad de la comunicación y de la computación en los sistemas distribuidos. El concepto de transacción distribuida se puede definir como la ejecución de transacciones sobre datos almacenados en múltiples particiones y sobre bases de datos replicadas en varios nodos de la red. Como el procesamiento de transacción distribuida proporciona aplicaciones con acceso a datos compartidos que son almacenados con una alta integridad de datos y de disponibilidad, dicho procesamientodebe ser soportadoporuna facilidad de transacción distribuida eficiente. Esta facilidad se puede definir como una colección distribuida de componentes que soportan abstracciones normalestales como procesosy comunicación entre procesos, y la ejecucióndetransacciones y la irnplementación de objetos en los cuales pueden ser llevadas a cabo las operaciones. Una de las partes más importarltes de la facilidad de transacción distribuida es el sistema decomunicac#ón.Un sistema tal, debería sermuy eficiente, enprimer lugar porque se necesitan transmisiones frecuentes para mantener muchas réplicas de datos, y en segundo lugar porque se requieren tiempos de respuesta cortos para la transacción de clientes. Un Cheriton DR.(1988). The V Distributed System. Cornrnunicalions oflhe ACM, 31(3), 314-33. 202 Implerventación de un shell remoto Comunicación entre procesos sistemadecomunicacióndebería estar seguro de proporcionar servicios de comunicación convencional tales como datagramas, transferencia de archivos y flujo de datos. Además, las aplicaciones conacceso a datos almacenadosen varios nodos requieren más facilidades inusuales para soportar la replicación de datos, cometidos atómicos, una noción de sistema ancho coherente de tiempo y protección auténticas de acceso a datos. Primitivas de comunicación básica para transacciones. E n el área de ciencias de la computación, en particular en la literatura de bases de datos, la definición de transacciones es la siguiente: una transacción es una colección abitraria de operaciones delimitadas por dos marcadores:EmpiezaTransacción y TerminaTransacción y tiene las siguientes propiedades especiales: atomicidadde fallas,permanencia,secuenciación y una transacción incompleta que no puede revelar los resultados de otras transacciones. ' E n los sistemas operativosdistribuidosladefiniciónde transacción es muysimilar: una transacción es una interacción, consistente una en solicitud (equivalente a EmpiezaTransacción) y una respuesta (equivalente a TerminaTransacción), tal que un proceso solicitante requiere un proceso que responda para llevar a cabo una función dada y reportarla al solicitante. Esto se ilustra en la Figura 24. Solicitante Contestante Envía una solicitud de transacción Ejecuta la solicitud I Envía respuesta a transacción una la Figura 24. Transacción (ID = ldentificador de la transacción). Las siguientes primitivassoportan la transacción basadas en un modelo de comunicación que puede ser usado en un sistema operativo distribuido. El mensaje es enviado, recibido, y los resultados son enviados al proceso solicitantemediante la ejecución de las primitivas envíaTReq, obténTReq, y respT respectivamente. (Ver Figura 25). La transacción debe ser llevada a cabo en presencia de varias situaciones inherentes, por ejemplo: Universidad Autónoma Metropolitana. Unidad lztapalapa 203 I Capítulo 6 l.La solicitud de transacción (Treq) se pierde en la red. 2. La respuesta de transacción (Tresp) se pierde o retrasa en su tránsito. I Deben ser activados diferentes mecanismos de recuperación, como intervalos de tiempo y mecanismos de retransmisión automática para enfrentar estos problemas: el identificador de transacción ID se usa para prevenir que solicitudes duplicadas sean pasadas al respondiente de la transacción. Hay semánticas de protocolos detransacción que aseguran la ejecuciónde la transacción: 1. Una vez exactamente. Se usa si la solicitud no es idempotente; podría ocurrir un daño serio si se repite la ejecución de lasolicitud. P envíaTReq(cabecera,args-valor; args-resultado) cabecera designa los nombres de unemisor, un receptor, el tipo de servicio solicitado, el identificador de la transacción, la estructura del mensaje, etc.; args-valor son los argumentos por valor del emisor; ags-resultado son los argumentos resultado. obténTReq(fuente-designada, lista-de-variables) fuente-designada le dice al programador de donde viene el mensaje. La srgs-valor y rista-de-variables. recepción de un mensaje causala algunos de cabecera mensaje el en asignación de los valores de a las variables en 1 respT(cabecera, resultados) cabecera designa los nombres de unemisor, un receptor, el identificador de la transacción, y otra información relevante para la solicitud. Los resultados resultados son asignados a los argumentos args-resultado. Figura 25. Primitivas que soportan transacciones basadas en comunicación. 2. AI menos una vez. Se usa si la solicitud es esencialmente idempotente, por ejemplo, la ejecución repetida de unasolicitud es la misma que cuando se ejecuta una vez. Sockets. En los sistemas distribuidos basados en un modelo detransacción, los mensajes son intercambiados entresockets (fuentes y destinos de mensajes). Los socketsson entidades direccionables en los nodosde una red, identificadospor Implementación de un shell remoto 204 "" . I".-. .- "" ~ _ _ I I " X . """- &. Comunicación entre procesos I números desocket, los cuales podrían ser únicos en unnodo dado.Esto implica que un identificador no ambiguo para cualquier socket en una red simple puede ser proporcionado por el número de socket concatenado con el nodo identificador. Si un sistema distribuido consta de un determinado número de redes de árealocal, entonces la dirección intered de un socket consta del número de socket, el identificador del nodo (del nodo en el cual está localizado el socket) y del número de red (de la red en la cual está localizado el nodo). Los socketsson admitidos por clientes#de sockets (procesos o funciones típicamente implementados en elsoftware de un nodo). Esto se ilustra en la Figura 26. Los clientesde sockets proporcionan código del que se puede decir que pone los sockets a la escucha (el código que recibe mensajes direccionados al socket). Un socket a la escucha debe ser registrado; la información acerca de éI se mantiene en una estructura de datos llamada tabla vistos como puertos en los modelos de llamada a de socket. Los socketspuedenser procedimiento y de paso de mensajes. Hay dos tipos de socket: Nodo Cliente de socket I Cliente de socket Cliente de socket f Socket 1 Medio de comunicación Figura 26. Sockets y clientes de sockets. 1. Socketsbienconocidosreservadospara el uso declientesde sockets bien conocidos (por ejemplo, un servidor de archivo solicita a un socket receptor, un nombre de socket de servicio). 2. Socketsasignados dinámicamente: sonasignados dinámicamente por un sistema en una llamada a un cliente. Esto implica que debería haber primitivas para abrirtanto un socket bien conocido como para uno creado dinámicamente y para cerrar dichos sockets. Además, el socket a la escucha debería proporcionar un mecanismo parael envío y la transmisión de mensajes. Ahora se pasarán a estudiar los sockets en el sistema UNIX, para complementar y finalizar el tema de la comunicación orientada a transacción en los sistemas distribuidos. Universidad Autónoma Metropolitana. Unidad lztapalapa 205 Capítulo 6 ~~~ ~ ~ DISTRIBUTED OPERATING SYSTEMS THE LOGICAL DESIGN Addison-Wesley Publishing Company [1991] Andrej Goscinski Págs. 133-1 93. 206 Implementación de un shell remoto _ " _ " " . I -"- CAPITULO 7 I LOS SOCKETS, LOS SOCKETS ~ ~ ~- [TOMADO Y ADAPTADO DE Rifflet]’ Una de las mayores contribuciones de lasdistribucionesBerkeley al sistema UNlX es definitivamente el interfaz de comunicación que hasido desarrollado. Ofrece un mecanismo de comunicación generalentre dos procesos cualesquieraque pertenezcan a un mismo sistema o a dos sistemasdiferentes. La manera más simple deaprender esta noción esla dehacer el paralelo con la comunicación de individuos por correo o por teléfono. Cada una de las entidades implicadas en una comunicación debe disponer de un, punto de contacto: se puede tratar de un buzón o de un receptor telefónico. Un socket no es otra cosa que el equivalente en el sistema a uno de estos objetos: se trata de un punto de comunicación por el cual un proceso podrá recibir o emitir información. La naturaleza de ésta última depende del tipo de punto de comunicación: de un buzón se extraen mensajes completos, mientras que el teléfono permite el envío de flujos de información que notienen una estructura claramente definida (su definición se deja a la interpretación de los interlocutores). Esta dualidad se encuentra en los sockets a nivel de sus tipos. Otra característica importante de los puntos de comunicación concierne al conjunto de otros puntos que permiteacceder. Un receptor telefónico interior a una empresa no permite los otros interiores de la empresa, mientras que un teléfono la comunicación más que con exterior permite salir del marco local. De la misma forma, es recomendable dejar en correos los objetos de los buzones correspondientes a sudestino.La noción de dominio de un socket I podrá establecer una comunicación permite definir el conjunto de sockets con los cuales se por medio deél. Aquí se va ha estudiar la interface ofrecida por este mecanismo entre las aplicaciones y los niveles inferiores a saber; un nivel de protocolo (por ejemplo TCP, UDP o IP) y un nivel de “pilotos” que permita elcontrol de interfaces físicas con la red. Antes de entrar en los detalles, cabe indicar que se conservará el término ‘Socket”en vez de una traducción, tal como toma o punto de comunicación. CARACTERíSTICAS DE UN SOCKET Un socket es unpuntodecomunicaciónpor el cual un procesopuede emitir o recibir información. En el interior de un proceso, un socket se identificará por un descrlptor de la misma naturaleza que los que identifican a los archivos (es decir, en el mismo conjunto). Esta propiedad es esencial, puesto quepermite, por ejemplo, la redirección de los archivos de entradakalida estándar (descriptores O, 1 y 2) a los sockets y, por tanto, la utilizaciónde aplicaciones estándar sobre la red. Esto significa también que todo nuevo procesocreado (por fork) hereda los descriptores de socket de su padre. La creación de un socket se realizará por medio del comando socket cuyo valor de vuelta es un descriptor sobre el cual es posible realizar operaciones de lectura y escritura. Un socket permite la comunicaciónen los dos sentidos contrariamente a la unidireccionalidad de un cause (pipe). I Una diferenciaesencialcon los archivos es que el “nombrado” de los sockets es ‘una operación distinta a la de su creación (apertura y creación van a la par como en los cauces, pero después es posible fijar una dirección de su dominio al objeto creado por medio de el comando bind). A cada una de las características deun socket de las que se habla en los párrafos siguientes le corresponde una constante simb.ólica predefinida en el archivo <sys/socket.h>. EL DOMINIO DE UN SOCKET Especifica elformatode las direcciones quese podrán dar al socket y los diferentes protocolos soportados por las comunicaciones vía los sockets de este dominio. La estructura genérica struct sockaddr { u short char 1; sa family; / * familia de dirección * / sa7data[l4];/*14 octetosdedirección(máximo)*/ - se utilizará para describir diferentes comandos. . Parauna aplicación particular, esta estructura se deberáreemplazar correspondiente del dominio de comunicación utilizado: por la estructura I 1 . Para el dominio UNlX (AF-UNIX), los sockets son locales al sistema dondehan sido definidos. Permiten la comunicación interna de procesos. Su designación se realiza por medio de una referencia UNIX. La estructura de una direccion en este dominio está predefinida en <sys/un.h>: struct sockaddr un { short sun family; char sun-data[l08]; dirección*/ 1; /*Dominio UN1X:AF U N I X * / referencia /* de I l . Para eldominio Internet (AF-INET), las direcciones de los sockets tienen la estructura sockaddr-in: 210 Implementación de un shell remoto Los sockets s t r u c ti na ddr { u-l o n g 1; S -a d d r ; s t r u c ts o c k a d d ri n { short sl’n f a m i l y ; u s h osr itn p o r t ; s t r u c ti na d addr; -d r s i n s i n-zero-[ 8 1 ; char / * La f a m i l i a d e l a d i r e c c i ó n / * e l número d e p u e r t o * / / * l a d i r e c c i ó nI n t e r n e t * / /* un campo d e 8 ceros AF I N E T / - */ 1; 1. Puede existir otro cierto número de dominios: AF-NS AF-CCITT AF-SNA AF-DECnet AF-APPLETALK I* protocolos XEROX NS */ /* protocolos CCITT, protocolos X25, etc. */ /* IBM SNA */ /* DECnet */ /* Apple Talk */ I EL TIPO DE UN SOCKET Las propiedadesdeunacomunicación. El tipo de un socket define un tipode propiedades de las comunicaciones enlas cuales está implicado. 1 a) La fiabilidad de la transmisión. Ningún datotransmitido se pierde. b) La conservación del orden de los datos. Los datos llegan en el orden en el que han sido emitidos. c) La no duplicación de datos.Sólo llega al destino un ejemplar de cada datoemitido. d) La comunicación en modo conectado. Se establece una conexión entre dos puntos antes del principio de la comunicación. A partir de entonces, una emisión desdeun extremo está explícitamente destinada al otro extremo conectado. e) La conservación de los límites de los mensajes. Los límites de los mensajes emitidos se pueden encontrar enel destino. f) El envío de mensajes “urgentes”. Corresponde a la posibilidad de enviar datos fuera del flujo normal y en consecuencia accesibles inmediatamente (se habla de datos fuera de flujo u out of band). Los tiposdisponibles. Son los siguientes, aunque los dos tipos de socketmás utilizados, son los dos primeros. a) El tipo SOCK-DGRAM. Correspondea los sockets destinadosa la comunicaciónen modo no conectado para el envío de datagramas de tamaño limitado. Las comunicaciones correspondientes tienen la propiedad e. En el dominio Internet, el protocolo subyacente es el protocolo UDP. Universidad AutónomaMetropolitana. Unidad lztapalapa 21 1 Capítulo 7 b) El tipo SOCK-STREAM. Los sockets de este tipo permiten comunicaciones fiables en modo conectado (propiedades a, b, c y d) y eventualmente autorizan (según el protocolo aplicado) los mensajes fuera da banda (propiedad f), El protocolo subyacorlto on 01 dorrlilrio Internet es TCP. c) El tipo SOCK-RAW. Permite el acceso a los protocolos de más bajo nivel (por ejemplo, el protocolo IP en el dominio Internet). Su uso está reservado al superusuario. Permite implantar nuevos protocolos. las comunicacionesqueposeen las d) El tipo SOCK-SEQPAQUET. Correspondea propiedades a, b, c, d y e. Estas comunicaciones se encuentran en el dominio XEROX NS. LA CREACIóN DE UN SOCKET El comando socket permite la creación de un socket, es decir, la creación e inicialización de entradas en las diferentes tablas del sistema de gestión de archivos: tabla de descriptores de procesos, tabla de archivos y estructuras de datos conteniendo las características del socket (teniendo un papel análogo al de los i-nodos para los archivos). Entre estas características se encuentran: 1. El tipo, eleldominio y protocolo. I 2. El estado del socket (conectado o no, enlazado, en estado derecibir o emitir). 3. La dirección del socket conectado (si hay alguna): en efecto, al socket se le asocian un tampón de emisión y uno derecepción. 4. Punteros a los datos (en emisión y en recepción). 5. Un grupo de procesos parala gestión de mecanismos asíncronos. La forma general del comando que permite utilizarlo es: crear un socket y obtener un descriptor Para i n t socket ( d o m i n i o ,t i p o ,p r o t o c o l o ) /* i n t dominio; i n t tipo; int p r o t o c o l o ; -UNIX, . . . * A F I N E T , AF / * SOCK DGRAM, SOCK /*-O: STREAM, ... p r o t o c o l op o rd e f e c t o */ */ EN CASO DE FALLO DELCOMANDO SE DEVUELVE EL VALOR -1, EL TERCER PARÁMETRO ES GENERALMENTE O; EL SISTEMA ELIGE ENTONCES UN PROTOCOLO POR DEFECTO AL TIPO Y AL DOMINIO DEL SOCKET CREADO. LA SUPRESIóN DE UN SOCKET Un socket es suprimido cuando ya no hay ningún proceso que posea un descriptor para accederlo. Estasupresión implica la liberación deentradasen las diferentes tablas y Implementación de un shell remoto 212 .. " . . . .. ._" . . ..- - . .. ".~ -.-_--.--_.-,"-."... I - - .". Los sockets - .. ..^.I".-. ~ -.__ _. trrlrlporlos' rusorvados por 01ststoma rotaciollados C O I I OI socket. Por tutlto, esta suproslolI es el resultado de al menos una llamadaal comando close. ENLAZAMIENTO DE UN SOCKET A UNA DIRECCIóN Después de su creación, un socket no es accesible más que por los procesos que conocen su descriptor. Enconsecuencia, sin un mecanismo suplementariode designación, sólo los procesos que hayan heredadotal descriptor en su creación (mediante el comandofork) podrán utilizar el socket. El comando bind permite con una sola operación dar un nombre a unsocket: int bind (sock, p -direccion, lg) sock; int struct sockaddr dirección * / int lg; * p-direccion; / * socket descriptor del / * puntero de memoria a */ .La / * longitud de la dirección * / Parauna utilización enun dominio particular, el puntero p-direccion apunta a una zona cuya estructura es la de una dirección en ese dominio (sockaddcun para el dominio AF-UNIX y sockaddr-in para el dominioAF-INET). El socketnombradodespués derealizarse el comando (valor de retorno O), puede ser identificado por cualquier proceso por medio de la dirección que se le ha dado sin necesidad de poseer un descriptor (lo que es a priori imposible si el proceso no pertenece al sistema del socket). Un cierto número de comandosespecíficos permiten explotar estas direcciones. N dominio UN/X. Los sockets de estedominio no se destinan más que a una comunicación local. Por tanto, les corresponden direcciones locales que son referencias UNIX idénticas a las de los archivos. Un socket del dominio UNlX aparecerá despu6s del nombrado en los resultados producidos por la orden Is con el tipo s. La supresión de una referencia de este tipo es por medio de la orden rm o del comando unlink. €I dominio Internet. La conexión a una dirección Internet de un socket de este dominio necesita la preparación de un objeto que tenga la estructura sockaddr-in. Esto supone en particular: 1. El conocimiento de la dirección de la máquina local (obtenida por medio de el comando gethostname' y de la función gethostbyname) o la elección del valor INADDR-ANY. 2. La elección de un número de puerto. Puede tratarse de un puerto que corresponda a un servicio existente (función getservbyname) con la condición de tener los derechos para utilizarlo, de cualquier númerode puerto (7= IPPORT-RESERVERD) elegido por el usuario o dejado a la elección del sistema (basta con dar el valor O al campo sin-port). Colas. gethostent en HP-UX. Universidad AutónomaMetropolitana. Unidad lztapalapa I 213 En ciertas circunstancias, un procesopuededisponerde un descriptor deunsocket conectado o enlazado a una dirección pero sin saber cuSl es (si la conexión ha sido realizada por otro proceso y el proceso ha heredado el descriptor o si la conexión ha sido realizada sin especificar el número de puerto). El comando int getsockname (sock, p-adr, p-lg) int sock, structsockaddr dirección*/ int *p-lg; / * descriptor socket del *p-adr;/*puntero de */ memoriaalazona / * puntero de memoria a dirección de la longitud de la */ permite recuperarla dirección relacionada conel socket de descriptor sock. Cuando se llama a este comando,el resultado: tercer parámetrp se utiliza comodato y como 1. En la llamada, *p-lg tiene como valor el tamaño de la zona reservada a la dirección p-adr para recuperar la dirección del socket. 2. En el retorno de la llamada, *p-lg tiene como valor el tamaño efectivo de la dirección. El valor de retorno de elcomandoes O ó -1 según si la llamadaa tenido éxito o no respectivamente. Entonesla utilización de el comando tiene la forma siguiente: m m struct sockaddr in adr; int lg, rep, sock; m m lg sizeof(struct = sockaddr -in); m m rep = getsockname ( s o c k , &adr, &lg); m m LA COMUNICACIóN POR DATAGRAMAS Esta sección está dedicada al estudio de los mecanismos relativos a la comunicación de procesos por medio de sockets del tipo SOCK-DGRAM (cualquiera que sea su dominio de definición). 214 Implementación de un shell remoto Los sockets S e recordarán las principales características de estas comunicaciones: 1 . Cuando se envía un mensaje desde un socket con destino a otro socket, el que lo expide no obtiene ninguna información sobre la llegada de su mensaje al destino. 2. Los límites de los mensajes son preservados. La falta de seguridad debido a la primera característica no es más que relativa. Aplicaciones esenciales (tales como el sistema de archivas distribuidos NFS) utilizan este modo de comunicación (apoyándose en el protocolo UDP dentro del dominio Internet). Las situaciones de abrazo mortal, de pérdidas de mensajes y de la no recepción de mensajes, necesitanel uso del mecanismo de temporización (fimeouf). PRINCIPIO GENERAL El intercambio de datagramas debe ser realizado por medio de sockets del tipo SOCK-DGRAM. Un proceso que desee emitir un mensaje con destino a otro debe, por una parte, disponer de un punto de comunicación local(descriptor del socket sobre el sistema local) y por otra parte, conoceruna dirección del sistema al cual pertenezca su interlocutor (esperandoque este interlocutor disponga de un socket conectado o enlazado a esta dirección ... este tipo de comunicación no permite estar seguro de ello). Los sockets de este tipo se utilizan en modo no conectado: en principiotodapeticiónde envío de un mensaje debe incluir la dirección del socket de destino. Sin embargo, se verá que es posible establecer una pseudoconexión”entre dos sockets de tipo SOCK-DGRAM haciendo implícita la dirección del pocket para una emisión. LAS OPERACIONES DE ENVíO Y RECEPCIóN El comando sendto. int sendto(sock, msg, lg, opcion, int sock; char *msg; int lg; int opcion; pdest, lgdest) / * descriptor del socketde emisión ” / / * dirección del mensaje a enviar */ / * longitud del mensaje * / / * = O para el tipo SOCK-DGRAM * / Universidad Autónoma Metropolitana. Unidad lztapalapa 215 Capítulo 7 struct sockaddr *p -dest; i rI i- 1 ~ . / * puntero a la dirección del socket destino * / / * l o n q i , t : ~ ~dc?l d I n dirí?ccihrl r i e l J ~t- P ;S d e s tino */ 3or:l~:~~l El valor de retorno de el comando es, en caso de éxito, el número de caracteres enviadosy -1 encasode fallo. Se insiste en el hechode ‘que los únicos errores detectadosson los locales. Asi, no hay detección alguna de queun socket esté enlazado a la dirección dada. Esto significa en particular que si un mensaje se emite con destino a una máquina existente sobre un puerto no asociado a un socket, el mensaje se perderá y el emisor no será avisado. Por el contrario, la validez del descriptor sock o de la dirección del mensaje se comprueban. Incluso, indica un error si el tamaño del mensaje a emitir, debido al protocolo subyacente, es incompatible con la atomicidad de la emisión (de este modo, para el protocolo UDP utilizado para este tipo de envío en el dominio Internet,’ un mensaje debe de ser en general de longitud e2 Kb.). Es práctico utilizar elcomando sendmsg en el caso que un procesodeba realizar una sucesión de envíos de mensajes. Elinterés de utilizar este comando es que se realiza el envio de varios mensajes con una sola llamada al sistema lo, que mejora su rendimiento. La forma de el comandoes: int sendmsg (sock, msg, opcion) int sock; struct msghdr msg[ I int opcion; ; / * descriptor del socket emisión de */ / * tabla de los envíos a efectuar * / La estructura msghdr está predefinida en -%ys/socket>: struct msghdr { caddr-t msg name; / * direcciónopcional * / msg-namelen; / * tamaño de la dirección * / int struct iovec *msg iov; / * tabla de mensajes * / int msg iovlenf / * número de elementosenmsgiov caddr-t msg-accrights; / * l o s sockets no la utilizan-*/ / * los socketsnolautilizan int msg-accrightslen; 1; */ */ La estructura iovec está predefinida en <sys/uio.h>: struct iovec { caddr-t iov base; iov-Ten; int 1; / * dirección del mensaje* / / * longitud del mensaje* / Nota: no es necesario que un socket esté nombrado para que pueda 216 - Implementación de un :$hell remoto - ser utilizado para Los sockets el IVlkIl u 1 1 Il1t3l I t i t l J t j COI1 el colllkllldo sendlo. Ll durante el primer envio. SIStt3l~\kilecillza autolllállctllIlerllu S l l CoIleXIDI I El comando recvfrom. i n t recvfrom( s o c k , m s g , l g , o p c i o n , isnotc k ; c h a r *msg; /* i n lt g ; /* i n to p c i o n ; /* s t r u c t sockaddr */ / * d e s c r i p t o r d e l socket d e r e c e p c i ó n * / d i r e c c i ó nd er e c u p e r a c i ó nd e m l ensaje recibido * / t a m a ñdoeels p a c iroe s e r v a d o a l a d i r e c c i ó n msg * / O ó MSG PEEK * / * pe-x p ; p p a r ar e c u p e r a r l a dirección de expedici6n /* i n t *p lgexp; rleosnugl it tauddod e l p -e x p , p - l g e x p ) t a m aedñseopl a rcei o servado */ a p-exp Y Este comando permite a un proceso extraer un mhsaje de un socket del cual posea un descriptor. Para que haya un mensaje, naturalmente es preciso que este socket haya sido enlazado o conectado a una dirección (o pseudoconectado en su creación con el comando socketpair, como se verá posteriormente) y que un proceso haya enviado un mensajedespués de que hayatenido lugar este enlace. El papel del parámetro /g es el de dar el tamaño del espacio reservado para memorizar el mensajequeserá extraído. Es preciso no perder de vistaquese extraerá delsocket un la información enviadaenuna sola mensajecompleto,quecorrespondeexactamentea operación sendto. La información recibida provendrá de un sólo mensaje y los caracteres del mensaje se perderán si el parámetro /g es menorque la longitud del mensaje recibido. El comando devuelve el número de caracteres recibidos (-1 en caso deerror). En el caso que el puntero p-expsea distinto de NULL, a la vuelta, la zona de dirección p-exp contiene la dirección del socketemisor. Es esencial en el caso enque la llamada *p-lgexp contiene el tamaño de la zona reservada a la dirección p-exp; a la vuelta *p-exp tiene el valor de la longitud efectiva de la dirección. El proceso receptor tiene entonces la posibilidad deresponder, sihay necesidad de ello, al mensaje recibido pormediode el comando sendto (recuérdese que los sockets permiten la comunicación enlos dos sentidos). Esto queda esquemáticamente en el dominio Internet: O O s t r u c t s o c k a d d r i-n adr; i n t s o c k , n ,l g ,l g r e p ; c h a r msg [lo241 , r e p [ 1 0 2 4 J ; O O lg = s i z e o f ( s t r u c t s o c k a d d r i-n ) ; msg, 1 0 2 4 , O , & a d r ,& l g ) ; n = recvfrom(sock, O Universidad Autónoma Metropolitana. Unidad lztapalapa I 217 Capítulo 7 O sendto(sock, rep, lgrep, O , & a d r , lg); a O La opción MSG-PEEK permite consultar el socket: se lee un mensaje, pero no se extrae comocaso es el sin esta opción. I El comando recvmsg permite realizar una serie de recepciones de mensajes: i n t recvmsg ( s o c k , msg, o p c i o n ) i n t sock; s t r u c t m s g h d r msg [ I ; i n to p c i o n ; /* /* e l s o c k e t de r e c e p c i ó n * / l a s e r i e de o p e r a c i o n e s * / LAS “PSEUDOCONEXIONES” Este mecanismo permite simplemente alegar laescritura de aplicaciones en el caso de que un socket de tipo SOCK-DGRAM no se utilice más que para comunicar sólo con el otro. Sin embargo, es necesario tener en cuenta que una pseudocomunicación de este tipo no modifica en algo las características generales del modo de comunicación (en particular en lo que se refiere a su fiabilidad). N comando connect. Utilizada con sockets del tipo SQCK-DGRAM, permite asociar un socket de dirección a un socket local (dado por su descriptor). Se verá que tiene un papel diferente con los sockets SOCK-STREAM. El comando connect tiene como formageneral: i n t connect(sock, p-a d r , l g a r d ) i n t sock; s t r u c t s o c k a d d r *p-a d r ; i n t lgadr; ’ / * descriptor d e l socket l o c a l * / /* puntero a l a d i r e c c i ó n d e l socket /* asociado * / l o n g i t u d de l a d i r e c c i ó n */ Después de la pseudoconexión”de un socket a otro, todas las emisiones de mensajes, vía el primero, tendrán como destino el segundo, que no podrá recibir más que los mensajes que provengan del otro. Es importante notar que esta pseudoconexión es local; no tiene incidencia alguna sobre el socket del cual se ha dado la dirección (la dirección del socket remoto está memorizada en la estructura asociada al socketlocol). Un segundo parámetro igual a NULL en una llamada a el comandoconnect suprime una asociaciónanterior. 218 Implementación de un shell remoto Los sockets N comando socketpair. Permite crear dos sockets y asociarlos. socketpair (dominio, int int int int dominio; tipo; protocolo; *p- sock; tipo, /* protocolo, -sock) p AF U N I X * / / * SOCK DGRAM, SOCK STREAM - - / * o */- */ / * tabla de dos enteros * / I Las operaciones. Como la dirección de destino o de origen es implícita, es posible utilizar los comandosdeentradalsalidausuales read y write. Además existen doscomandos específicos del interfaz socket: recv y send: int send (sock, msg, lg, opcion) / * descriptor del socket local* / / * dirección de memoria del mensaje * / / * longitud del mensaje * / /* = o */ int sock; char *msg; int lg; int opcion; y también int recv (sock, msg, lg, opcion) int sock; char *msg; int lg; int opcion; / * descriptor del socket local* / / * dirección de memoria para guardar el mensaje* / / * longitud de la zona reservada a la dirección msg * / / * = O ó MSG-PEEK * / Los parámetros son idénticos a los cuatro primeros de los comandos sendto y recvfrom. LA COMUNICACIóN EN MODO CONECTADO Es el modo utilizado por las aplicaciones estándar de la familia Internet tales como teinet, ftp, o aplicaciones UNIX como rlogin. Aporta la fiabilidad a intercambios de información con el precio de un incremento de su volumen. PRINCIPIO GENERAL Como indica el nombre de este modo de comunicación, es necesario para utilizarlo realizar Universidad Autónoma Metropolitana. Unidad lztapalapa 219 Capítulo 7 unaconexión (establecer un bircuito virtual') entre dos puntos. Mientrasqueelmodode comunicación sin conexión que se ha estudiado previamente presentaun aspecto simétrico en la medida en que el 'Jniciadot'del diálogo puede ser cualquiera de los dos que intervienen, el establecimiento deunaconexiónen el modo conectado aclara la asimetría entre los dos procesos implicados. Uno de los dos procesos (en posición de cliente) pregunta al otro (en posición de servidor) si acepta esta comunicación. Se encuentra aquí la analogía que se ha hecho al principio conlacomunicaciónpor correo y por teléfono. Conelprimer tipo de comunicación, cuando se ha franqueado una carta, el que la envía no tiene control sobre lo que pasa, a lo más puede esperar que le llegue una respuesta después de un cierto lapso de tiempo. Las características importantes de la comunicación eneste modo son: 1. La fiabilidad. 2.El aspectocontinuode la información (flujo'): el receptor no tiene la posibilidad de encontrar (salvo información y protocolo particular establecido entre los dos procesos) la estructura de la información enviada. Para traducir el aspecto asimétrico inicial que se ha mencionado, se presentará sucesivamente el punto de vista del servidor y el del cliente en la fase inicial, además de los mecanismos generales utilizables por los dos procesos en la fase de comunicación propiamente dicha, donde reaparece la simetría. I EL PUNTO DE VISTA DEL SERVIDOR Su papel es pasivo en el establecimiento de la comunicación: después de haber avisadoal sistema al que pertenece que está preparado para responder a las peticiones de servicio, el servidor se pone a la espera de peticiones de conexión que provengan de clientes. Para ello dispone de un socket de escucha, enlazado al puerto TCP correspondiente al servicio, sobre el que espera las peticiones de conexión. Cuando llega al sistema una petición de es tipo, se despierta al proceso servidor y se crea un nuevo socket;es este último, al que se llamará socket de servicio, el que se conecta al cliente. Entonces el servidor podrá, por una parte delegar el trabajo necesario para la realización del servicio a un nuevo proceso (creado por fork) que utilizará entonces efectivamente la conexión y, por otra parte, retomará su Vigilia" sobre al socket de escucha. El esquema general de funcionamiento deun servicio se presenta en la Figura 1. No se volverá sobre la primera etapa cuyo objetivo es si punto de comunicacióndireccionable desde el exterior. plemente dotar al servidor de un I El comando listen. Este comando permite a un servidor señalar a un sistema que acepta las peticiones de conexión. I 220 Implementación de unshell remoto Los sockets I '¿lid Iltllllal COI I 6Xlh.l tl el COllltll Id0 I1S)ell ((101 kllll0, COI1 VkilOl dt3 It5101 I IO O), t!l IJl01;eSll debe disponer de un descriptor de socket del tipo SOCK-STREAM. Si el socket no está previamente enlazado a un puerto, el sistema procede a este enlace. E n este caso, será necesario hacer una llamada a el comando getsockname para conocer el número del puerto atribuido. El comando tiene la forma siguiente: int listen (sock, nb) int sock; / * descriptor del socketde escucha * / int nb; / * número máximo de peticiones de conexión p e n d i e n t e s * / Creación y enlace del socket de escucha socket/bind Apertura del servicio I listen V Espera de demanda de conexión accept V Creación de yn subproceso fork PADRE HIJO V I Tratamiento de la demanda 1 Figura 1 . Funcionamiento general del proceso servidor. I El segundo parámetrodefineeltamatiode un archivo en el cual se memorizan las conexiones de petición formuladas, preparadas (desde el punto de vista de los clientes están establecidas) pero todavía no notificadas al servidor. El tamaño del archivo está limitado a un cierto valor por el sistema (en general 5; en HP-UX20). N comando accept. Este comando permite extraer una conexión pendiente en el archivo asociado aun socket para el cual se ha realizado una llamada, a listen. De esta manera, el sistema toma conocimiento de un enlace realizado. Como se ha dicho, el enlace con el socket Universidad Autónoma Metropolitana. Unidad lztapalapa 22 1 Capítulo 7 del cliente se realiza con un nuevo socket cuyo descriptor se envia como resultado de la función: i n t a c c e p t ( s o c k , p -a d r , p - l g a d r ) i n t sock; structsockaddr*p i n t * p-l g a d r ; -a d r ; /* descriptor d e l socket */ / * d i r e c c i ó n d e l s o c k e tc o n e c t a d o * / / * p u n t e r o a l tamaño d e l a z o n a reservada a p-adr * / El socket de servicio creado se enlaza a un nuevo puerto (tomado del conjunto de puertos no reservados). A la vuelta, también se recupera en memoria, en la zona apuntada por p-adr, la dirección del socket del cliente con el cual se. ha establecido la conexión. El valor de *p-lgadr se modifica: si en la llamada era el tamaño de la zona reservada para guardar la dirección, en el retorno da el tamaño efectivo de la dirección. I E n el caso en el que no exista ninguna conexión pendiente en el archivo, el procesose bloquea hasta que exista una (io hasta que llegue una señal!) a menos que el socket esté en modo no bloqueante. E n este último caso, el comando devuelve el valor -1. N subfrafamiento del servicio. Despuésde laaceptaciónde servidor tiene dos posibilidades: la comunicación, el 1 . Hacerse cargo de ella: lo que significa eventualmente que otras conexiones pendientes no serán efectivamente aceptadas hasta que el servicio demandado haya sido satisfecho (a menos que se utilice un mecanismo asincrono, de los cuales se hablará posteriormente). 2. Subtratar la gestión de la conexión y la realización del servicio mediante un proceso hijo. EL PUNTODE VISTA DEL CLIENTE Un cliente es la entidad activa en el establecimientode una conexión: es el que toma la iniciativa de la demanda de conexión a un servidor. Esta demanda se realiza por medio de el comando connect de la que ya se ha hablado para el establecimiento depseudoconexionesde sockets del tipo SOCK-DGRAM. Sin embargo, aquí la semántica de el comando es completamente diferente: solicita el establecimiento de una conexión que será conocida por los extremos. Además, el cliente está informado del éxito o del fracaso de la conexión. La organización general de un cliente se presenta en la Figura 2. El comando connect. Toda conexión entre dos sockets del tipo SOCK-STREAM, en un dominiodistinto del UNIX, es el resultado de una llamada con éxito a este comando (en el Implementación de 222 "."h.._"." remoto un shell I Los sockets dominio UNIX, una llamada a socketpair crea un par de sockets conectados). Así, se crea un los dosprocesoscuyos extremos son los sockets. Este circuitopermite circuitovirtualentre cambios bidireccionales. La forma de el comandoes idéntica a la que se ha dadopara sockets dedicados al intercambio de datagramas. la pseudoconexión de Creación (y eventualmente enlace de un socket) socket/blnd I Construcción de la dirección del servidor . _ _ . . _ _.._. ._ . . ._ _ _ . I .... Fallo....’. L. Figura 2. Organización general de un cliente. I i n t connect ( s o c k , p-adr, s o c ikn; t s t r u c ts o c k a d d r* p - a d r ; l ignatd r ; lgadr) /* descriptor d e l socket local */ / * d i r e c c i ó nd e ls o c k e tr e m o t o */ / * l o n g i t u d d e l a d i r e c cr ieómno t a */ El socket correspondiente aldescriptor sock será conectado o enlazado a una dirección local, en el caso de que no lo estuviera ya previamente. La conexión puede establecerse (y el comando connect devuelve el valor O) si se cumplen las siguientes condiciones: 1 . Los parámetros son localmente correctos. 2. La dirección *p-adr se asocia a un socket del tipo SOCK-STREAM en el mismo dominio que el socket local de descriptor sock y un proceso (servidor) tiene solicitado escuchar sobre este socket (por una llamada a listen). Universidad Autónoma Metropolitana. Unidad lztapalapa 223 Capítulo 7 3. La dirección "p-adr no está utilizada por otra conexión. 4. El archivo de conexiones pendientesdel socket distante o remoto no está lleno. En caso de éxito (valor de retorno O de el comando connect), el socket local sock está conectadoa un nuevosocket y la conexión está pendientehastaque el servidor tenga conocimiento de ella a través de el comando accept. Sin embargo, el cliente puede comenzar a escribir o a leer del socket. En el caso de que no se cumpla alguna de las condiciones 1, 2 ó 3, el valor devuelto por el fallo. comando es -1 y la variable errnu permite conocer la razón del El comportamiento de el comandoes particular si no se cumple la condición4: 1. Si el socket es de modo bloqueante, elproceso se bloquea. La petición de conexión se repite durante un cierto tiempo; si al cabo de ese lapso de tiempo la conexión no se ha podido establecer, el proceso es despertado (valor devuelto -1 y errno = ETIMEDOUT). 2. Si el socket es de modo no bloqueante,la vuelta es inmediata (ermno = EINPROGRESS). Sin embargo, la petición de conexión no se abandona en seguida (se repite durante el mismo lapso de tiempo). El proceso debe,saber si la conexión se ha establecido por select, el descriptor del socketforma parte de los descriptores mediodelcomando comprobados en escritura. Finalmente, en caso de que se realice una nueva solicitud de conexióndelmismosocket (por unallamadaa connect) antesdeque se haya abandonado la petición anterior, la vuela de el comando es igualmente inmediata con errno = EALREADY. EL DIALOGOCLIENTEISERVIDOR 1 Una vez establecida la conexión entre un servidor y un cliente a través de dos sockets, los dos procesos pueden intercambiar flujos de información. A diferencia de lo que pasa en la comunicaciónpordatagramas, el corte en diferentes mensajesno está preservado en el socket destino. Esto significa que el resultado de una operación de lectura puede provenir de la información resultado de varias operaciones deescritura. Además, en el caso delos sockets del dominio Internet, una petición de escritura deunacadenade caracteres larga, puede provocar el partido de esta cadena, siendo accesibles los diferentes fcagmentos por el socket destino. En este caso, laúnica garantia queproporcionael protocolo TCPesque los fragmentos son accesibles en el orden correcto. Esto implica que la sincronización de una recepción y unaemisiónenunaconexiónde un mismo númerodeelementosno está asegurada por este mecanismo. La emisión. La escritura sobre un socket conectado es directamente realizable por medio de el comando estándarwrite: 224 1 Implementación de un shell remoto Los sockets int wrife(sock, msg, l g ) int sock; char *msg; int lg; / * descriptor del socket local */ / * dirección de memoria del mensaje a envjar * / / * longitud delmensaje * / Sin embargo, una operación de este tipo no perm’te utilizar plenamente los mecanismos ofertados por los protocolos particulares (por ejemplo, ara el protocolo TCP, la posibilidad de enviar informaciones urgentes). E n el casoen que desee explotar estas posibilidades, es necesario utilizar el comando send: b int send (sock, msg, lg, opcion) int sock; char *msg; int lg; int opcion; / * descriptor del socket local* / / * dirección de memoria del mensaje a enviar */ / * longitud del mensaje* / / * O ó MSG-OOB * / El uso de este comando con elvalor O para el parámetro opcion es equivalenteal de el comando write (el uso de la opción MSG-OOB se verá más adelante). L a escritura en un socket bloquea el proceso que la realiza en el caso de que se dé alguna de las dos condiciones siguientes: 1. El tampón de recepción del socket destino está lleno. 2. El tampón de emisión del socket está lleno. Sin embargo, un socket puede convertirse en no bloqueante mediante una llamada a una de los comandos iocti ó fcntl. El valordevuelto es elnúmero de caracteres emitidos (-1 en caso de error). La recepción. Igual que para laemisión sobre un socket, es posible utilizarel comando estándar de lectura: int read (sock, mag,lg) int sock; char *msg; int lg; / * descriptor del socket local* / / * dirección de memoria para grabar el mensaje* / / * longitud de la zona reservada a la dirección msg * / y el comandorecvque permite, por una parte, la extracción de información urgente (MSG-OOB) y, por otra parte, la consulta sin extracción (MSG-PEEK): int recv (sock, mag, l g , opcion) int sock; char *msg; int lg; int opcion; 1 / * descriptor del socket local* / / * dirección de memoria para grabarel mensaje * / / * longitud de la zona reservadaa la dirección msq * / /* O - ó MSG-PEEK ó MSG OOB */ Universidad Autónoma Metropolitana. Unidad lztapalapa 225 Capitulo 7 Estos diferentes comandossonbloqueantes, salvo solicitud contraria: si no llega algún carácter al socket (y la conexión todavía está establecida), el proceso lector está bloqueado. Es necesario insistir en el hecho de que el proceso será despertado cuando llegue por lo menos un carácter al socket. El parámetro /g especifica el número máximo de caracteres a leer (se trata, de hecho, del tamaño dela zona reservada ala direcci6n rnsg). I N corte de /a conexión. Las cosas son un poco más complicadas por el hecho de que el protocolo subyacente (TCP en el dominio Internet) se supone que garantiza la fiabilidad de la transferencia. En estas condiciones, una llamada a el comando close con un descriptor de socketnopuede suprimir demodo brutal el socketcorrespondiente y liberar el espacio reservado para los datos cuya emisión ha sido solicitada, pero que todavía no se ha realizado (es decir, todavíaestánalmacenadosen los buffers locales). Estasupresión tiene lugar U posteriormente. I Además, si la conexión se ha cortado en la lectura en el otro extremo, una tentativa de escritura provocará la recepción de laseñal SIGPIPE. El comando i n t shutdown (desc, sens) i n t desc; i n t sens; / * descriptor de socket * / /* o , 1 6 2 */ permite a un proceso especificar que ya no se desea recibir (sens = O), emitir (sens = 1) o ni recibir ni emitir (sens = 2) sobre un socket conectado dedescriptor desc. LA SEÑAL SIGIO Es posible utilizar laseñal SlGlO para avisar a un (o varios) proceso(s)que llega información a un socket determinado. A cada socket se le asocia un pseudodispositivo capaz los procesosde un grupodado.Lasetapasa seguir para de emitir esta señalatodos desencadenar este mecanismo son: I l . Definir un gestor (handler) para la señal SIGIO. 2. Solicitar el envío de la señal SlGlO en cada llegada de caracteres (llamada a el comando fcntl con la orden FASYNC). 3. Atribuir un grupo propietario alsocket(llamadaaelcomando ioctl conlaorden 226 Implementación de un shell remoto Los sockets SIOCSPGRP) o a el comando fcntl con la orden F-SETOWN. El conjunto de operaciones corresponde al siguiente esquema: , #include <signal.h> #include <fcntl.h> #include <sys/sockio.h> #include <sys/filio.h> int sock; / * gestor de la señal S I G I O * / hand- io () ; I O m I main ( ) t int on = 1 ; signal ( S I G I O , hand-io) ; m m fcntl (sock, F-SETOWN, getpid ( ) ioctl (sock, FIOASYNC, &on) ; ) ; V LA TOMA EN CUENTA DE MFNSAJES URGENTES Los caracteres enviados con destino a un socket conectado constituyen un flujo continuo. Un carácter no puede ser leído más que cuando todos los que le preceden ya lo han sido. En un cierto número de operaciones (por ejemplo en un login remoto), este modo de funcionamiento no es totalmente satisfactorio, ya que n o , permite tener en cuenta Universidad AutónomaMetropolitana. Unidad lztapalapa 227 Capítulo 7 inmediatamente ciertos caracteres. Así,. si en una conexión se utiliza una sesión de .trabajo remota correspondiente a la Figura 3 y se ha enviado el flujo de caracteres bouc <CR> corn <CR>, la lectura por el proceso remoto de la secuencia corn <CR>no tiene lugar hasta el fin del proceso que ejecuta la orden bouc. En el caso de que este proceso entre en un bucle, es necesario poder interrumpirlo y, por tanto, disponer de un mecanismo que permita el transporte decaracterescuya llegada se notifique al proceso destino paraque los tengaencuenta inmediatamente. El protocolo TCP prevé la posibilidad de transmitir (al menos) un carácter con esta propiedad. Su realización en UNlX corresponde a la noción de datosOOB (out of band) y el asincronismo se obtiene por medio de una señal particular (SIGURG) que acompaña a la llegada de tales caracteres. E/ aspecfo de /a emisión. Se realiza sobre un socket del tipo SOCK-STREAM del el dominio Internet (apoyándose,pues,enel protocolo TCP) conectadopormediode comando send y de la opción MSG-OOB. En la implantación UNlX sólo se ha conservado un carácter urgente; como consecuencia, si en el curso de un send se envían n caracteres con la opción MSG-OOB, sólo el último será considerado como tal, los n-1 primeros serán accesibles en el flujo normal. Así, con la llamada send (S, %bcd’i4), los caracteres a, b y c son ordinarios y el carácter d es considerado como urgente y, por tanto, accesible en el otro extremo de la conexiónfuera del flujo normal. - 1 P Sesión remota shell . socket conectado Aplicación local 4- - Terminal I Figura 3. Mensajes urgentes. E/ aspecfo de /a recepción. El sistema puede memorizar un carácter 0OB”para cada socket. En principio, este carácter sememoriza fuera de los tampones utilizados para los caracteres ordinarios. Sin embargo, es posible forzar al sistema para introducir estos caracteres en el flujo normal. Así, a la llegada de un carácter OOB, el carácter precedente que tuviera esta característica no se pierde: solamente pierde su aspecto urgente y se convierte en accesible dentro del flujo normal. Además, el sistema localiza gracias a una marca la posición lógica (en el flujo) del carácter urgente. A continuación, se describen los comandosque permiten la manipulación desdeel punto de vista del receptor de los caracteres OOB. La lectura. La lectura de un carácter OOB no puede realizarse más que por el comando recv (o recvfrom) utilizando la opción MSG-OOB. Es necesario hacerciertas observaciones: I 1. No es necesario estar sobre la marca que indica el carácter urgente para poder leerlo. Además, los caracteres que le preceden nose pierden. Una lectura sin la opción MSG-OOB tropieza contra la marca; así, si el flujo contiene a b c d e f g h, y el carácter e está indicado (como carácter OOB), después de la llamadarecv(sock, ch, 6) la cadena tendrá comovalor “a b cd”. Implementación de 228 -... _L ”“-.“”m.- un shell remoto -. Los sockets I La búsqueda de la marca. Es posible comprobar mediante el comando ioctl y la operación SIOCATMARK si la posición actual en el flujo de caracteres corresponde a un carácter OOB. / * #+include<sys/ioctl.h> para BSD * / / * #include<sockio.h> para SYSTEM V * / O O int marca; O O ioctl (sock, SIOCATMARK, &marca); / * marca = 1 e marca esperada * / O O I El vaciadode todos los caracteres que precedena la marca (quecorresponde operación de vaciado del tampón de lectura) se realiza por medio de una funcion. a una Toma en cuenta del asincronismo. La función a la que se ha hecho alusión en el párrafo anterior se supone que se llama sólo cuando hay un carácter urgente para leer en el socket de descriptor dado. De hecho constituye el gestor correspondiente a la señal SIGURG (aparte de la recuperación del carácter OOB que debe realizarse en memoria en zona estática y no como resultado de la función). E n efecto, es posible solicitar la emisión de esta señal por el sistema cada vez que llega un carácter urgente a un socket. Para convertir el mecanismo en activo, es preciso: 1 . Definir un manejador para la señal SIGURG. 2. Definir el conjunto de procesos relacionados. El esquema general correspondiente es el siguiente: #include<signal.h> #include<fcntl.h> #include<sys/sockio.h> #include<sys/filio.h> I int sock; / * gestor de laseñal SIGURG * / hand-urg ( ) ; I O O 1 Universidad Autónoma Metropolitana. Unidad lztapalapa 229 Capítulo 7 I main ( ) I int on = 1; Signal (SIGURG, hand-io); o 6 fcntl (sock, F SETOWN, getpid ( ).) ; o O 1 LA PARAMETRIZACIÓN DE SOCKETS En la mayoría de los mecanismos relacionados con el asincronismo de los que ya se ha hablado(operaciones no bloqueantesy relaciones con las señales SlGlO y SIGURG), los comandos getsockopt y setsockopt permiten obtener información general sobre un socket o modificar el comportamiento. El comando int getsockopt (desc, desc; int intnivel; int opcion; char *p arg; int *lg; nivel, /* /* /* /* opcion,-arg,' p lg) / * descriptor socket del */ niveldeaplicacióndelaopción */ opción a aplicar */ puntero para recuperar el valor * / a la entrada: tamaño reservado a la vuelta: longitud del resultado* / permite consultar el valor de una opción del socket descriptor desc. En general, las opciones se manipulan en el nivel del interfaz con los sockets. Entonces el valor del parámetro opcion es SOL-SOCKET (sin embargo, es posible darle a este parámetro el número de un protocolo obtenido por medio de la función getprotobyname para que la toma en cuenta sea a otro nivel). La modificación del valor de una opciónse realiza por el comando int setsockopt (desc, nivel, opcion,p--arg, lg) int desc; int nivel; int opcion; char *p arg; int *lg; /* /* /* /* Implementación de 230 . ". ._._I / * descriptnr del socket* / nivel de aplicación de la opción * / opción a aplic-ar * / puntero al argumentode la opción * / longitud del argumento* / I . L I I x -I_. ,"." un shell remoto " Los sockets I Consúltese el apéndice de llamadas a opciones. sockets para ver información sobre las diferentes LOS PROBLEMAS DE SEGURIDAD Independientementedequeseanejecutados todos ala vez o únicamentecuando son un propietario (para los demoniosejecutadospor “lntetd’: útiles, los demoniosposeen precisadosenel archivo inetd.conf y‘para otros, es el usuario que los haya lanzado). A menudo se trata del usuario roof (de identificación O). Esta característica se imponepor evidentes razones de seguridad de modo que un usuario que llama a un servicio peligroso (por ejemplo que realice escrituras sobre el disco) se identifique sobre el sistema donde se ejecuta el servidor correspondiente. Esta identificación puede ser implícita (por ejemplo rth ó rcp) o explícita (por ejemplo ftp). Cuando existe esta identificación, el proceso servidor (o más exactamente el subproceso que trata la petición) debe modificar la identidad de su propietario (y eventualmente de su grupo de propietario) por medio delos comandos siguientes. System V. int setuid (uid) / * identificacióndelnuevopropietario intuid; */ int setid (gid) int gid; / * identificación del nuevo grupo propietario */ I BSD. setreuid ( ruid, euid ) int ruid; int euid; / * identificación del nuevo propietario real * / / * identificación del nuevo propietario efectivo */ Universidad AutónomaMetropolitana. Unidad lztapalapa 231 Capítulo 7 I setregid (rgid, egid) / * identificación del nuevo grupo propietario real* / / * identificacióndelnuevogrupopropietario int rgid; int egid; efectivo * / Si el propietario del proceso es el superusuario, los valores de los ‘parámetros pueden ser cualquiera. E n caso contrario, el comando setreuid permite no cambiar más que uno de los dos propietarios dándole el mismo valor que el otro, y el comando setregid hace lo mismo a nivel de grupos propietarios. COMUNICACIONES EN UNlX McGraw-Hill [1992] J,ean-Marie Rifflet Págs. 233-238, 240-245, 251 259-263, 267-272, -256, 274-276. remoto shell Implementación un de 232 . ._“ ~ “ 1 1 ” _ -“ l . CAPÍTULO'8 UN SHELL REMOTO a c UN SHELL REMOTO [Cruz, Méndez]' Este capítulo es el fruto de todo el trabajo efectuado en el proyecto. En primer lugar se da una breve introducción a la cuestión ¿qué es un shell remoto?. -Posteriormente se identifican los problemas teóricos que implicados en el desarrollo de un shell remoto y se hace una crítica de los alcances obtenidos; esto corresponde al trabajo de información e investigación, y al . desarrollo de la presente documentación. En seguida seinserta el código fuente de los programas cliente y del servidor, para analizar y evaluar los logros obtenidosen esta segunda parte del proyecto, y se finaliza con las conclusiones del mismo. $UÉ ES UN SHELL REMOTO? Un shell remoto es un programa que permite la ejecución de comandos remotos;esto es, si un usuario está en la computadora A, al ejecutarse el programa cliente en dicha máquina, puede por ejemplo, teclear Ir, pero este comando desplegará en la pantalla de A, la lista de archivos y subdirectorios de un directorio de'la computadora B, o de cualquier otra a la que se tengapermisodeacceder (en B se debe estar ejecutandoelprograma servidor como un demonio UNIX). En el caso del shell remoto desarrollado en este proyecto, también se podrán ejecutar comandos locales anteponiendo alos mismos el carácter I (como en FTP). I Capitulo 8 l a SEMESTRE. IDENTlFlCAClÓN DE PROBLEMAS TE~RICOS El desarrollo de un shell remoto implica el conocimiento, al menos fundamental, de varias áreas correspondientes al Brea de Comunicaciones dentro del campo de las Ciencias de la Computación.Se trata por lo tanto, de un campo muy extenso, siendo esta la principal dificultad que se tiene que salvar para implementarel shell remoto. Los temas se abarcan de manera genérica, en el presente trabajo, siendo, como se puede confirmar en el índice: 1. Protocolos de comunicación. 2..Redes de computadoras. I 3. El sistema operativo UNIX. . 4. Sistemas operativos distribuidos. En el caso de la UAM-I, los dos primeros temasse tocan de manera introductoria en el cursoTransmisiónde datos': Los dos últimos seven de manera muy breveen el curso se vean, comoen ,nuestro caso. Estas Sistemas operativos': o es posible queno circunstancias hicieron que investigáramos y profundizáramos sobrelos temas de protocolos y redes, y aprendiéramos los fundamentos de UNIX y de los sistemas operativos distribuidos. Con este panorama general, se procedió a identificar de una manera más concreta, cuáles serían las herramientasque servirían paraimplementar el shell remotopropiamente.Se decidió usar sockets, que son en sí un mecanismo de comunicación entre procesos, ofrecido por el sistema UNIX. Entonces se investigó sobretemas específicos que auxiliaran en la comprensiónde los sockets y que proporcionaran un marco de referencia adecuado; estos temas (que son parte de los mencionados anteriormente) son los siguientes: Modelo cliente-servidor. Comunicación entre procesos. Los sockets. Un último problema teórico, es el delaprogramación concurrente. Los socketsusanel modelo cliente-servidor, yenuncaso'real, si un shell remotono se implantadeforma concurrente (es decir, si se implanta de formasecuencial), es de muy poca utilidad. 9 236 I Implementación de un shell remoto Un shell remoto CRíTICA DE LOS ALCANCES OBTENIDOS 1-1 lrlrrlerlul de strlolnos dlslrIbuldos, protocolos de colllullicuclh, lodes do corllprlrrdorus, redes de computadoras y sistema operativo UNIX, se encuentra a nivel introductorio en escasos libros, correspondientes a los cursos de licenciatura. Realmente hay que indagar en libros para cursos de postgrado, los cuales como es de esperarse se encuentran disponibles sólo en inglés. Creemos que el material bibliográfico reunido, es representativo del proyecto que se realizó, y proporciona un panorama adecuado para abordarlo. La bibliografía se encuentra al final del trabajo. h De manera particular, fueron muy útiles los manuales originales disponibles, para llevar a cabo el trabajo de codificación en C, y aplicar los conceptos de sockets en el sistema HP-UX; como este es el sistema operativo al que se tiene acceso en nuestro lugar de trabajo (cubículo H-I 1 I ) , es el que se utilizó. Esperamos con esto, ofrecer al lector de esta documentación, bases sólidas para implementar programas de comunicación en UNIX utilizando sockets. Agregamos al final del trabajo, apéndices, uno de los cuáles describe, todas las llamadas al sistema que usan los sockets; otro contiene un resumen de llamadas al sistema que no son propias de sockets, pero que pueden ser de utilidad al desarrollar programas de comunicación en el ambiente UNIX. Los apéndices corresponden a la versión 9.0de HP-UX. Por último, queremos aclarar que se hizo este trabajo de adaptación y traducción, buscando lograr con ello, tener un material lo más completo, (a nivel introductorio), y coherente posible, pero sobre todo, que garantice la calidad de la información que proporciona; no fue simple, ya quesetuvo que leer, analizar y decidir cuidadosamente, para poder cumplir con éstos objetivos; si se logra aumentar la velocidad y eficiencia de asimilación por parte de los lectores, nuestra labor se verá ampliamente compensada. EL CóDIGO DEL PROGRAMA SERVIDOR Consta de dos archivos: el de cabecera (Servidor.h'J que contiene las macros y variables usadas por el programa, el cual se encuentra en el archivo 3ervidor.c:' El programa ejecutable se llama "servidor". Universidad Autónoma Metropolitana. Unidad lztapalapa I 237 I ' Capitulo 8 I* servid0r.h *I #include <fcntl.h> #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include cnetdb.h> #include <signal.h> #include <errno.h> #include <unistd.h> #define TAM-COM 81 #define PUERTO 4500 #define CS 100 #defineTAMBUFF512 I* Tamaño máximo del comando recibido del cliente I* Número de puerto local a utilizar (de escucha) /* Tamaño de las cadenas que contienenlos nombres de los hosts cliente y servidor I* Tamaño del buffer que recibe informacióndel archivo cliente int long-dir = sizeof(struct sockaddr-in); int num-serv = O; I* Número de servicios proporcionados FILE *ar; popen() por/*usado Archivo I* Info. del socket remoto struct sockaddr-in dir-socket-remoto; struct sockaddr-in dir-socket-escucha; I* Info. del socket de escucha char prog-servidor[CS]; I* Nombre del programa servidor I* Información del host cliente struct hostent *inf-clien; I* Informacicin del host servidor struct hostent *info-serv; host-serv[CS]; char /* Nombre del host servidor char host-clien[CS]; I* Nombre del hosts cliente /* Hora regresada por time() long hora-fecha; I* Fecha y hora devuelta por ctime() char *hora-fecha-inicio; /* Direqción-red formato a Internet char *¡net-ntoa(); int des-socket-de-servicio; int des-socket-de-escucha; char *ctime(); I* Descriptor del socket de servicio de escucha . I* Descriptor del socket I* Devuelve un puntero a una cadena que contiene fecha la y hora I* La función setsockopt() varía en las versiones de la 7.0a la 9.0 de /* HP-UX. Se utiliza compilación condicional en la función servicio() para I* ajustarse a las diferentes versiones. Se debe compilar como sigue: I* cc -o nombre-ejecutable -D(VER70 I VER80 I VERSO) nombre-fuente I* Ejemplos: I Implementación 238de un shell remoto *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I *I Un shell remoto I* I* I* cc -o servidor -DVER?'O servid0r.c cc -o servidor DVER80 ser.c cc -o serv -DVERSO serv.c *I *I *I ARCHIVO DE CbDlGO SERVIDOR #include "servidor.h" /* ..................... programa principal............................ * * Coloca SIGCLD aSIG-IGN para prevenir la acumulación de zombies, cada que * * termina un proceso hijo. * * Permite extraer una conexión pendiente en elarchivo asociado a un socket, * * de esta manera el sistema se entera de que se ha llevado cabo a una * conexión (accept()). * Se obtiene información del cliente (gethostbyaddro). * * La primitiva fork() se usaparahacer el programa concurrente, regresa -1 * * si huboalgún error; O esregresadoporel proceso hijo, por lo que se * * cierra elsocketdeescucha y después seejecuta el servicio solicitado; * * default indica la presencia del proceso padre. ......................... *I * main (argc, argv) int argc; I char *argv[]; { memset((char *)&dir-socket-escucha, O, long-dir); memset((char *)&dir-socket-remoto, O ,long-dir); memset(host-serv, O, CS); memset(host-clien, O, CS); strcpy(prog-servidor, argv[O]);. crea-socket(); if ( gethostname(host-ser, CS) == -1 ){ perror("gethostname()"); exit(1); 1 des-info-ini(); signal(SIGCLD, SIG-IGN); Universidad AutónomaMetropolitana. Unidad lztapalapa 239 Capitulo 8 for(;;) { des-socket_de_servicio=accept(des_socket-de-escucha, &dir-socket-remoto, &long-dir); if (des-socket-de-servicio == -I){ perror("accept()"); fprintf(stderr,"No se puede aceptar conexion\n"); exit(1); 1 inf-clien=gethostbyaddr((char *)&dir-socket-remoto.sin_addr, sizeof(struct in-addr), dir-socket-remoto.sin-family); if (inf-clien==NULL) ); strcpy( host-clien, inet-ntoa(dir-socket-rernoto.sin-addr) else strcpy(host-clien, inf-clien->h-narne); switch (fork()){ case -1 : perror("fork()"); exit(1); case O: close(des-socket-de-escucha); servicio(); des-info-fin(); default: close(des-socket-de-servicio); I 1 } /* for */ 1 /* main()*/ ........................ crea-socket() ........................... Seusa AF-INET para el dominio Internet, y INADDR-ANY para * recibir conexionesde cualquier máquina. socket() crea el socket de escucha, bind() lo enlazaauna dirección y listen()lo ponea la escucha. SOCK-STREAM indica un socket en modo conectado y O en socket() el protocolo por de la colade escucha. defecto(tcp). El 5 en listen() indica el tamaño * * * * */ crea-socket() { dir-socket-escucha.sin-family=AF-INET; dir-socket-escucha.sin-addr.s-addr=lNADDR-ANY; dir-socket-escucha.sin-port=htons(PUERTO); if ( (des-socket-de-escucha=socket(AF-INET, SOCK-STREAM, O)) == -I){ perror("socket()"); fprintf(stderr,"No se puede crear el socket de escucha %s\n", prog-servidor); exit(1); 1 f Implernentación de un shell remoto 240 .. I - .. ." ,_ " .. I Un shell remoto if ( bind(des-socket-de-escucha, &dir-socket-escucha, long-dir) == -I){ perror("bind()"); fprintf(stderr, "Error al enlazar %S con la direccion\n", prog-servidor); exit(1); 1 if (listen(des-socket-de-escucha, 5) == -I){ perror("listen()"); fprintf(stderr, "Fallo al poner el socket %S a la escucha\n",prog-servidor); exit(1); 1 } I* crea-socket() *I I* ********** Desplegar información al iniciar el programa ************** */ des-info-ini() time(&hora-fecha); hora-fecha-inicio = ctime(&hora-fecha); printf("%s espera aceptar conexion en elpuerto %y: %s...\n", host-sew, ntohs(dir-socket-escucha.sin_port), hora-fecha-inicio); } I* des-info-ini() *I /* ........................ servicio() ............................ * Servicio proporcionado: ejecución de comandos remotos. * Si se hace una llamada aclose(), y el sockettiene datos por enviar, el * socket no se cierra, hasta que se transmitan dichos datos al cliente * (setsockopt): ésta función se compila segúnla versión de HP-UX presente. * Se recibe el comando del cliente; si rec-com=O, el cliente finaliza; si * no popen() ejecuta el comando, Finalmente se envía la salida del comando * ejecutado, al cliente. * Se cierra el archivo que usa popen()y se contabiliza el número de * servicios proporcionados por elservidor si no hubo error.************** servicio() { int rec-com; char comando[TAM-COM]; * * * * * * * * * *I I* Recibe el comando del cliente */ #ifdef VER70 long linger = 1; if (setsockopt(des-socket-de-sewicio, SOL-SOCKET, SO-LINGER, (char *)&linger, sizeof(1ong)) == -I){ perror("setsockopt()"); fprintf(stderr, "Conexion con %S abortada\n", host-clien); exit(1); 1 #endif Universidad Autónoma Metropolitana. Unidad lztapalapa 241 Capítulo 8 #ifdef VER80 #include <arpa/inet.h> static struct linger param={l ,I}; if (setsockopt(des_socket-de-servicio, SOL-SOCKET, SO-LINGER, ¶m, sizeof(struct linger)) == -I){ perror("setsockopt()"); fprintf(stderr, "Conexion con %S abortada\n", host-clien); exit(1); 1 #endif #ifdef VER90 static struct linger linger={l ,I}; if (setsockopt(des-socket-de-sewicio, I SOL-SOCKET, SO-LINGER, &linger, . sizeof(1inger)) == -I){ perror("setsockopt()"); fprintf(stderr, "Conexion con %S abortada\n", host-clien); exit(1); ' 1 #endif while(1) { memset(comando, O, TAM-COM); if ( (rec-com = recibe-comando(coman'do)) == O ) return; if ( ( ar = popen(comand0, ' Y ) ) == NULL ){ perror("popen()"); exit(1); 1 envia-salida(); if ( pclose(ar) == (-1 11 127) ) { perror("pclose()"); fprintf(stderr, "Intente otra vez\n"); 1 else ++num-serv; 1 1 } /* servicio() */ /* ************** Desplegar información final de sesión *************** *I des-info-fin() { printf("lnicio: %s\n", hora-fecha-inicio); printf("Servidor: %S %S; puerto %u\n", host-sew, inet-ntoa(dir-socket-escucha.sin-addr), ntohs(dir-socket-escucha.sin-port)); printf("Cliente: %S %S; puerto %u\n", host-clien, inet-ntoa(dir-socket-remoto.sin-addr), ntohs(dir-socket-remoto.sin-port)); printf("Numero de servicios efectuados: O%d\n",num-sew); time(&hora-fecha); printf("Finalización: %s\n", ctime(&hora-fecha)); } /* des-info-fin() */ 242 Implementación de un shell remoto I Un shell remoto /* ........................ recibe-comando() ........................... * El comando se recibe carácter a carácter. * recv() regresa O si recibe un fin de archivo, lo que significa que la * transmisión concluye; regresa l ' s i recibe un carácter válido o un fin de * cadena; obviamente -1 significa la presencia de unerror *************** int recibe-comando(comand) char cornand[]; { int Irecv; int ¡=O; while (1) { Irecv=recv(des-socket-de-servicio,&comand[i], switch (Irecv) { case -1: perror(llrecv()l*); fprintf(stderr, "Error\n"); exit(1); case O: return(0); case 1: if (cornand[¡] == 70') return(1); i++; break; } /* switch *I * *I 1 O); 1 } /* recibe-comando() */ /* ..................... envia-salida() ............................... * Envia la salida en un buffer de tamañoTAMBUFF. * ferror() verifica si hubo error en fread(). fflush() debe usarse con * popen()cuando se programademanera concurrente. ...................... envia-salida() { int I = TAMBUFF; /* Se usa para comparar el valor de salida de */ char buf[TAMBUFF+l]; /* Buffer de salida */ * * *I while ( I = fread(buf, sizeof(char), TAMBUFF, ar) ) if (write(des-socket-de-servicio, buf, I) == -I){ perror("write()"); exit(1); 1 if (fflush(ar) != O) { perror("fflush()"); exit(1); 1 if (ferror(ar)) { perror("fread()"); exit(1); 1 } I* envia-salida() *I Universidad Autónoma Metropolitana. Unidad lztapalapa I 243 CaDítulo 8 EL PROGRAMA CLIENTE Consta de dos archivos: el de cabecera (%liente.h7 que contiene las macros y variables usadas por el programa, el cual se encuentra en el archivo t1iente.c:' El programa ejecutable se llama "cliente". ARCHIVO DE CABECERA /* c1iente.h *I #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <netdb.h> #include <sys/socket.h> #include <errno.h> I #define PUERTO-MAX 60000 #define TAM-COM 81 #define CAD-FINAL "adios" #define PUERTO 4500 #define CAD-AYUDA "?" #define NUM-COMANDOS 6 #define CS 1O0 #define TAMBUFF 512I* I* Número de puerto máximo válido' I* Tamaño de la cadena que contendrá los comandos I* Cadena para finalizar el programa I* Número de puerto "de escucha" (del servidor) I* Contiene la cadena que despliega la ayuda I* Número de comandos que se pueden ejecutar /* Tamaño de las cadenas que guardanlos nombres de los hosts cliente y servidor Tamaño del buffer que recibe la información del programa servidor int long-dir = sizeof(struct sockaddr-in); int num-serv-loc = O; /* Núm. de servicios locales int num-serv-rem = O; /* Núm. servicios se remotos Implementación de *I *I *I *I int desc-socket-cliente; I* socket cliente = socket local */ struct sockaddr-in dir-socket-local; I* Info. del socket cliente struct sockaddr-in dir-socket-servidor; I* Info. del socket servidor *I struct hostent *info-serv; /* Info. del host servidor struct hostent *info-clien; I* Info. del host cliente char host-clien[CS]; /* Nombre del host cliente *I char host-serv[CS]; I* Nombre del host servidor char prog-cliente[CS]; I* Nombre del programa cliente *I long hora-fech; /* Hora regresada por time() *I char *hora-fech-inicio; I* Hora y fecha devueltas por ctime() char comando[TAM-COM]; I* Comando enviado al servidor *I char *ctime(); /* Devuelve un puntero a cadens una *I que contiene la fecha y hora int num-puerto; /* Número de puerto usado por el cliente */ 244 *I */ *I *I */ *I *I *I *I *I *I un shell remoto I ~ ." Un shell remoto CÓDIGO DEL CLIENTE /* clier1te.c */ #include "c1iente.h" /* ***************** Función principal. main() ...................... * Despuésdeque se inicializan unas variables se y guarda el primer * argumento del programa, se obtiene el nombre del host cliente por medio de la función gethostento. Ya en el switch, si el número deargumentos * proporcionados por el usuario es tres,se convierte el número de puerto de * cadena a entero y se valida su rango: en seguida se obtiene el nombre del * host servidor (remoto)ysesale del switch. Si el número de argumentos es * diferente el código es obvio. Finalmente se llaman tres funciones(). ***** * * * * * * * */ main (argc, argv) int argc; char *argv[]; { memset((char *)&dit--socket-local, O, long-dir); memset((char *)&dir-socket-servidor, O, long-dir); memset(host-clien, O, CS); memset(host-serv, O, CS); strcpy(prog-cliente, argv[O]); I if ( gethostname(host-ser, CS) == -1 ){ perror("gethostname()"); exit(1); 1 switch (argc) { case 3: if ( (num-puerto = atoi(argv[2]) ) == O 11 num-puerto < IPPORT-RESERVED 11 num-puerto > PUERTO-MAX) { fprintf(stderr, "%u: puerto invalid0 o fuera de rango\n", num-puerto); exit(1); } case 2: if ( (info-sew = gethostbyname(argv[l])) == NULL ) strcpy(host-serv, argvtl]); else strcpy(host-sew, info-serv->h-name); break; case 1: printf("Uso: %S host-servidor [num-puerto]\n", prog-cliente); printf("%u num-puerto <= %u \n",IPPORT-RESERVED,PUERTO-MAX); exit(0); I 1 Universidad AutónomaMetropolitana. Unidad lztapalapa 245 CaDítulo 8 default: fprintf(stderr, "Numerode parametros invalido\n"); exit(1); } /* switch */ t prepara-socket(argc); desp-info(); comunicacion(); } /* main() */ /* ......................... * * * * * prepara-socket() ........................... S e crea el socket cliente (socket());si el usuario especificó un número de puerto (argc=3) &te se enlaza al socket oreado, de lo contrario el sistema asigna un puerto a la dirección del socket creado (bind()). Después se prepara la dirección del socket servidor para hacer la conexión con el socket cliente (connect()). ............................. prepara-socket(argc1) int argcl; { if ( (desc-socket_cliente=socket(AF-lNET, SOCK-STREAM, O)) == -1 ) { perror("socket()"); fprintf(stderr, "No se puede crear el socket %s\n",prog-cliente); exit(1); I I if (argcl == 3) { dir-socket-local.sin-port = htons((u-short)num-puerto); dir-socket-local.sin-family = AF-INET; dir-socket-local.sin-addr.s-addr = INADDR-ANY; if ( bind(desc-socket-cliente, &dir-socket-local,long-dir) I I perror("bind()"); fprintf(stderr,"No se puede asociar la direccion a exit(1); == -1 ) { 1 %s\n", prog-cliente); dir-socket-servidor.sin-port=htons(PUERTO); dir-socket-servidor.sin-family=AF-lNET; dir-socket-servidor.sin-addr.s-addr= ((struct in-addr *)(info-serv->h-addr))->s_addr; if ( connect(desc-socket-cliente, &dir-socket-servidor, long-dir) == -1 ) { perror("connect()"); fprintf(stderr,"O/OS no se puede conectar a %s\n",prog-cliente, host-serv); exit(1); I /* prepara-socket() */ 246 Implementación deremoto un shell ". Un shell remoto dQGPI,,f"() /* . . . . . . . . . . . . . . . . . . . . . . . . * ........................... ' Se obtierle Illlortnacir5rl del socket local paradesplegarseen parllalla * (getsockname()). Además del número de puerto de conexión se despliegan los * nombresde.loshosts cliente y servidor,así como la horade inicio ***** desp-info() { if ( getsockname(desc-socket-cliente, ¿idir-socket-local, I A * */ &long-dir)== -1 ) { perror("getsockname()"); fprintf(stderr, "No se puede leer informacion del socket local %s\n", prog-cliente); exit(1); 1 time(&hora-fech); hora-fech-inicio=ctime(&hora-fech); printf("%s conectado a %S en el puerto %u: %s\n", host-clien, host-sew, ntohs(dir-socket-local.sin-port), hora-fech-inicio); } /* desp-inf-inicio() */ /* . . . . . . . . . . . . . . . . . . . . . . . . . 1 Tabla-de-comandos ......................... */ int existe-com(x-comando) char x-comando[]; { static char *tab-com[NUM-COMANDOS]= { "ls","pwd", "who", "cp","cat" }; int i; for (¡=O;i<NUM-COMANDOS; i++) if (strcmp (tab-corn[¡], x-comando) == O) return(¡); return(-I); } /* existe-comando() */ /* .............................. ayuda0 ............................. */ aYudaO{ printf(Vs> [argumentos] listar directorio remoto\n"); printf("<!ls> [argumentos] listar directorio local\n"); printf("<pwd> ver directorio actual remoto\n"); printf("<!pwd> ver directorio actual local\n"); printf("<who> [argumentos] ver usuarios en la red del servidor\n"); printf("'c!who> [arguentos] ver usuarios en la red del clienteh"); printf("<cp> [argumentos] copiar archivos remotos\n"); printf("<!cp> [argumentos] copiar archivos locales\n"); printf("<cat> <nom-arch>visualizar un archivo remoto\n"); printf("<!cat> <nom-arch> visualizar un archivo local\n"); printf("<%s> terminar sesion\n", CAD-FINAL); } /* ayuda() *I Universidad Autónoma Metropolitana. Unidad lztapalapa 247 Capitulo 8 " /* . . . . . . . . . . . . . . . . . . . . . . . . . comunicacion() . . . . . . . . . . . . . . . . . . . . . . . . . . . * * Después de leer comando el por medio de gets() existen cuatro * posibilidades: band=l, se pidió finalizar el programa; band=2 se pidió * ayuda;band=3 se teclea un posible comando local; band=4 se teclea un * posible remoto. comando *I comunicacion() { char com-aux[TAM-COM]; I* Cadena auxiliar que guarda el comando *I int i,j; I* Contadores *I int band = O; I* bandera *I printf("Ayuda: %s\n", CAD-AYUDA); printf("Finalizar: %s\n\n\n", CAD-FINAL); while (band != 1) { memset(comando, O, TAM-COM); memset(com-aux, O, TAM-COM); printf("%s>> host-sew); gets(comand0); if ( strcmp(comando, CAD-FINAL) == O ) band = 1; else band = 2; if ( strcmp(comando, CAD-AYUDA) == O ) else if ( comando[O]=='!' ) band = 3; else band = 4; switch (band) { case 2: ayuda(); default: case 1: break; case 3: ¡=O;j=1; do { com-aux[i] = comando[j]; ++i; ++j; } while (comando[j]!='\O' && j<= TAM-COM && comando[j]!=' if ( existe-com(com-aux) != -1 ) { comando[O] = I ; if ( system(comando) != -1 ) num-sew-loc++j else perror("system()"); I); 1 else fprintf(stderr, "Comando Invalido.Teclear %s\n", CAD-AYUDA); break; case 4: ¡=O; do { com-aux[i] = comando[¡]; . ++i; } while (comando[i]!='\O' && i<= TAM-COM && comando[¡]!= t I); 248 . __ Implementación de ~ _ " ^ I _ un shell remoto * * * " Un shell remoto if ( existe-com(com-aux) I= -1 ) { envia-comando(); recibe wlidn(); I\~IIII"V-IL)I11~ I I ; 1 else fprintf(stderr, "Comando Invalido.Teclear %s\n", CAD-AYUDA); break; } /* switch */ } /* while */ finaliza(); } /* comunicacion */ /* ....................... finaliza() { char *¡net-ntoa(); finaliza() ............................. */ /* Dirección de una máquina a formato Internet */ if ( shutdown(desc-socket-cliente, 2) == -1 ) { perror("shutdown()"); fprintf(stderr, "No se puede cerrar el socket %s\n", prog-cliente); exit(1); 1 close(desc-socket-cliente); printf("lnicio: o/os\n", hora-fech-inicio); printf("C1iente: %S %S; puerto %u\n", host-clien, inet-ntoa(dir-socket-Iocal.sin-addr), ntohs(dir-socket-local.$in-port)); printf("Servidor: %S %S; puerto %u\n", host-sew, inet_ntoa(dir-socket-sewidor.sin-addr), ntohs(dir-socket-sewidor.sin-port)); printf("Servicios locales: %d\n", num-sew-loc); printf("Sewicios remotos: %d\n", num-sew-rem); time(&hora-fech); printf("Finalizo: %s\n", ctime(&hora-fech)); } /* finaliza() */ /* ......................... envia-comando() * **t******************,***** * Envía el comando al servidor carácter a carácter ....................... *I envia-comando() { int i; int I; I = strlen(cornand0); Universidad AutónomaMetropolitana. Unidad lztapalapa 249 Capitulo U I for (¡=O; ¡<=I; i++) { if ( (send(desc-socket-cliente, &comando[i], 1, O)) != 1 ){ perror("send()"); exit(1); I } /* for */ } /* envia-comando() */ /* ....................... recibe-salida() .......................... *I recibe-salida( ){ int I; char buf[TAMBUFF+I]; /* Buffer que recibe la salida del socket servidor */ do { memset(buf, O, TAMBUFF+I); if ( (I = read(desc-socket-cliente, buf, TAMBUFF)) == - I ) { perror("read()"); exit(1); 1 printf("%s", buf); }while (I >= TAMBUFF); } /* recibe-salida() *I 250 Implementación un de shell remoto ~~ Un shell remoto 2’ TRIMESTRE. CONCLUSIONES S e presentaenestasección medio de conclusiones. un análisis y evaluación del proyecto en su totalidad,por l . Los sockets utilizan el protocolo TCP, por considerarse más adecuado para unprimer trabajo de programación para comunicaciones, debido a su confiabilidad. 2. El servidor tiene las siguientes características: a) Es orientado a estado, ya que unavezestablecida la conexión con el cliente, se pueden ejecutar los comandos remotos, sin necesidad de enviar información adicional al servidor. b) El servidor puede ser visto a su vez como un cliente, ya que pide un servicio (la fecha y hora) al sistema en un momento dado. c) L a autorización puede controlarse al usar la llamada al sistema socket(), cuando se llena la información del socket de escucha mediante la estructura struct sockaddr-in. E n este casose usó la macro INADDR-ANY.(Ver código fuente del programa servidor). d) Está hechodemanera concurrente, ya quede manera secuencia1 sería de poca utilidad. e)Comentamos que se pueden mejorar los aspectos de seguridad porun lado, y el control del programa cuando falla la llamada al sistema popen(). (Vercapítulo 5). 3. El cliente tiene las siguientes características: a) Proporciona un servicio no estándar. b) Es completamenteparametrizado (esdecir, sepuedeespecificarun númerode puertoarbitrario para llevar a cabo el servicio). (Ver el capítulo 5 para obtener una descripción de estos conceptos) c) Sugerimos la mejora del sistema validando el ciclo que contiene la llamada al sistema system(). 4. La conexión entre cliente y servidor se lleva a cabo en forma bloqueante. (Ver cap. 6). 5. L a transmisión de mensajes entre cliente estructurada. (Ver capítulo 6)“ y servidor es bloqueante,síncrona y I 6. No se trabajó únicamente en el cubículo H-I 1 1 , por.lo que nos vimos precisados a usar diferentes versiones de HP-UX (7.0, 8.0 y 9.0). Decidimos entonces usar directivasde compilación condicional. S e usan sólo en el código del servidor (ya que es el que cambia ligeramente). La forma de compilar de describe con ejemplos en el archivo “servidor.h”. 7. Seha desarrollado una herramientade comunicación entre procesos,que ejecuta comandos locales y remotos, a la cual se el pueden agrega; más comandos con relativa facilidad; se puede asimilar su estructura para implementar un programa de Universidad Autónoma Metropolitana. Unidad lztapalapa 251 I Capítulo 8 comunicaciones que ofrezca unservicio de cualquiertipo;finalmente se pueder, hacer los cambios necesarios en el mismo, y adiciones y/o mejoras como las sugeridas en los puntos 2 y 3. 1 8. Este conjunto de programas también puede verse comunicaciones, el cual puede ser validado como tal. como un protocolo de 9. Finalmente, esperamos que al integrar la documentación y los códigos del cliente y del servidor desarrollados, se ofrezca allectorun panoramabásico pero completo y con calidad de los mecanismosde comunicación entre procesos en el sistema UNIX, aún cuando se trabaje con otraimplementación o con versiones posteriores de HP-UX, ya que según nuestra experiencia, las variaciones en ambos casos son pocas. Benito Cruz Mendoza José Luis Méndez Montes 8 2 52 Implementación un de remoto shell I ___ __(.". I 1 APÉNDICES Y BIBLIOGRAFÍA I APÉNDICE 11" I LLAMADAS AL SISTEMA PROPIAS DE SOCKETS ~ ~~ accept I uso retcodigo = accept(socket, dir, longdir); DESCRIPCI~N Los servidoresusan la función accept para aceptar la siguiente conexión dellamada enun socket pasivo despuesdehaberllamadoa socket para crear un socket,a bind paraespecificarunadirecci6n IP local y un númerode puerto deprotocolo, y a listen para hacer el socket pasivo y establecer la longitud de lacola de conexión. accept elimina la siguiente solicitud de conexi6n de la cola (o espera hasta que llegue una conexión), crea un nuevo :ocket para la solicitud, y regresa el descriptor del nuevo socket. accept solamente se aplica a sockets de flujo (por ejemplo los que usan TCP). ARGUMENTOS Argumento socket dir int &sockaddr longdir &int Significado Un descriptor de socket creado por la función socket. Un puntero una a estructura de dirección. accept llena la estructura con la dirección IP y el númerodepuertode protocolo de la máquina remota. puntero Un a un entero que inicialmente especificatamaño el del argumento sockaddr y, cuando retorna la llamada, especifica el número de bytes almacenados en el argumento dir. CóDIGO DE RETORNO accept regresa un descriptor de socket no negativo si no hay problemas y -1 indica que ha ocurrido un error. Cuando ocurre un error, la variable global errno contieneunode los siguientes valores: Valor en errno Causa del error EBADF ENOTSOCK EOPNOTSUPP EFAULT EWOULDBLOCK EMFILE ENFILE ENOBUFS El primer argumento no especifica un descriptor valido. El primer argumento no especifica un descriptor de socket. El socket no esde tipo SOCK-STREAM. El puntero del argumento 2 es invalido. El socket esta marcado como no bloqueante y las conexiones no estan esperando ser aceptadas. El número maximo de descriptores de archivo para este proceso ya esta abierto. La tabla del sistema esta llena y no se pueden aceptar mas accept() enese momento. No hay espacio de buffer disponible. EINVAL EAGAIN EINTR E/S no bloqueante usada con O-NONBLOCK. stream sockets 256 El socket referenciado por el descriptor del socket no esta a la escucha, o se ha ejecutado un shutdown(). La llamada fue interrumpida por un signal()antes de la conexi6n. APÉNDICE I’ RESUMEN DE LLAMADAS AL SISTEMA PROPIAS DE SOCKETS I DESCRIPCI~N LLAMADAS AL SISTEMA socket() bind() ~ listen() connect() I ~~ Crea un socket, o punto de comunicación para el proceso que hace la llamada. Asigna una dirección desocketal socket especificado por el proceso que hacela llamada. Asigna una dirección de socket al socket especificado por el Droceso aue hace lallamada. Establece unacola para las solicitudes desconexión que llegan. (Solamente paralos stream sockets’ ). Para stream sockets, solicita y creaunaconexión entre el socket remoto (especificado mediante una dirección) y el socket del procesoquehace la llamada (especificado mediante un descriptor). Para sockets dedatagramas, especifica elsocketremoto corresoondiente. Acepta una conexiónentre el socket local del proceso que hace accept() la llamada y el socket especificado en la llamada asociada con la conexión. (Solamente para streamsockets). send(), sendto(), sendmsg() Envían datos desdeel socket especificado. Reciben datos desdeel socket especificado. recv(), recvfromo, Desconecta el sock& especificado. shutdown() Obtiene la dirección del socket especificado. getsockname0 getsockopt(), setsockopt0 Obtienen, o colocan las opciones asociadas conun socket. Obtiene el nombre del socket pareja” (remoto) conectado al getpeername0 I socket especificado. I ~ ~~ ” “stream sockets”= “socketsde flujo” I bind uso retcodigo = bind(socket, localaddr, addrlen); DESCRlPCldN blnd especifica una dirección local y un número de puerto de protocolo para un socket. blnd es usada principalmente por los servidores, lo cual implica que se debe especificar un puerto de protocolo bien conocido. ARGUMENTOS ' I Argumento socket localaddr int dsockaddr addrlen int Significado Un descriptorsocket decreado llamada la por socket. La dirección de una estructura que especifica una dirección IP y un número de puerto deprotocolo. El tamaño de la estructura de dirección en octetos (bytes). En el tema de sockets enla segunda parte se describe la estructura sockaddr. CóDIGO DE RETORNO bind regresa O si no hubo problemas y -1 para indicar que ocurrió un error. Cuando ocurre f especifica la causa de el error. Los un error, la variable global errno contiene un código que posibles errores son: Valor en errno Causa del error EBADF El argumento socket no especifica un descriptor válido. El argumento socket no especifica un socket válido. ENOTSOCK EADDRNOTAVAIL La dirección especificada es inválida (por ejemplo, una dirección IP no es compatible con unainterface local). La dirección especificada está en uso. EADDRINUSE El socket ya tiene una dirección asociada. EINVAL familia de direcciones del EAFNOSUPPORT La dirección solicitada noconcuerdaconla socket. El programa de aplicación no tiene permiso de usar la dirección EACCESS especificada. El puntero al argumentolocaladdr es inválido. EFAULT El tipo de descriptor de socket no soportala dirección de enlace. EOPNOTSUPP No hay espacio debuffer disponible. ENOBUFS El protocolo X.25 de nivel 2 está dado de baja. ENETUNREACH El segundo parámetro(de dirección) no fue especificado. EDESTADDREQ El nombre de campox25ifname especifica una interface no existente. ENODEV El nombre decampo x25ifname especifica una interface que fue ENETDOWN funciona el enlace del desconectada, nunca fue inicializada, o no protocolo de nivel 2. ~ I 257 connect uso retcodigo = connect(socket, addr, addrlen); DESCRIPCI~N Una vez que el proceso servidor est6 a la escucha de solicitudes de conexibn, el proceso cliente puede solicitar una conexión con la llamada connect. connect inicia una conexión y la bloquea si dicha conexión no está lista, a menos que se esté usando entradahatida no bloqueante. Cuando la conexión está lista, el proceso cliente completa su llamada connect y el proceso servidor puede completar su llamada accept. ARGUMENTOS Argumento socket addr addrlen int &sockaddr_in int Significado Descriptor de un socket. Puntero a ladirección de la máquina remota. Longitud del segundo argumento. CóDIGO DE RETORNO connect regresa O si no hubo problemas y -1 indica que ocurrió un error. Cuando ocurre un error, la variable global errno contiene uno delos siguientes valores: Valor en errno EBADF ENOTSOCK EAFNOSUPPORT EADDRNOTAVAIL EISCONN ETIMEDOUT ECONNREFUSED ENETUNREACH EADDRINUSE EINPROGRESS EALREADY EINVAL EFAULT ENODEV ENOSPC ENETDOWN ENOBUFS EINTR EOPNOTSUPP 258 Causa del error El primer argumento especifica no descriptor un válido. El primer argumento no especifica un descriptor de socket, La familia de dirección especificada en el sobket remoto no puede ser usada con este tipo de socket. La dirección del socket remoto especificada no es válida. El socket ya está conectado. (Solamente TCP) El protocolo alcanzó un intervalo de tiempo dado sin establecer una conexión satisfactoriamente. (Solamente TCP) La conexión fue rechazada por la máquina remota. (Solamente TCP) La red no está actualmente disponible. La dirección especificada ya está en uso. y un intento de conexión podría (SolamenteTCP) El socket es no bloqueante bloquearlo. y lallamadapodríaesperaruna (SolamenteTCP) El socketesnobloqueante conexión previa que l a intente completar. El socket ya ha sido desconectado o tiene un listen() activo. El segundo argumento no es un puntero válido.' El campo x25ifname se refiere a una interface existente. Todos los circuitos virtuales disponibles están en uso. Lainterface x25ifname especificadaenelsegundoparámetrofueencontrada pero no inicializada. No hay espacio de buffer disponible. de La conexión fue interrumpida intencionalmente por u11a señal antes completarse Se hizo un intento de connect() en un socket que no soporta esta llamada. 1 sa errno getpeernamv uso retcodigo = getpeername(socket, remaddr,addrlen); , DESCRIPCI~N . Una aplicación usa getpeername para obtener la dirección remota (de un socket) para un socket conectado. Normalmente, un cliente conoce la dirección del socket remoto porque lo llama con connect para establecer la conexión. Sin embargo, un servidor que usa accept para obtenerunaconexión podría necesitar preguntaralsocketcorrespondientesu dirección remota. ARGUMENTOS Argumento Significado socket Un int descriptor de socket creado por la función socket. remaddr &sockaddrUnpunteroa la estructura sockaddrquecontendrá la dirección remota. addrlen &int Un puntero a un entero que contiene la longitud del segundo argumento inicialmente, y la longitud actual de la dirección remota al final. CóDIGO DE RETORNO getpeername regresa O si no hubo problemasy -1 para indicar que ocurrió un error. Cuando ocurre un error, la variable global errno contiene uno delos siguientes valores: en Valor EBADF ENOTSOCK ENOTCONN ENOBUFS EFAULT EINVAL EOPNOTSUPP del error El primer argumento no especifica un descriptor válido. El primerargumentono especifica un descriptor de socket. El socket no está conectado. El sistema tiene recursos insvficientes para llevar acabola operación. El puntero al argumento remaddres inválido. El socket ha sido desconectado. Operación no soportadaporsockets AF-UNIX. 259 getsockname uso retcodigo = getsockname(socket, name, namelen); DESCRIPCI~N getsockname obtiene la dirección del socket especificado. ARGUMENTOS Argumento socket name namelen + Tipo int &char &int Significado Descriptor de socket creado por la función socket. Un puntero a una cadena. El número de posiciones de la cadena name; regresa la longitud de la dirección. CóDIGO DE RETORNO getsockname regresa O si no hay problemas y -1 indica que ocurrió un error. Cuando ocurre un error, la variable global errno contiene uno de los siguientes valores: en Valor errno EBADF ENOTSOCK EBOBUFS EFAULT EINVAL EOPNOTSUPP Causa del prror El primer argumento no especifica un descriptor válido. El primerargumento no especifica undescriptor desocket. No hay espacio de buffer suficiente disponible en el sistema. La dirección de name o namelen es incorrecta. El socket ha sido desconectado. Operación no soportada por sockets AF-UNIX. 260 .In""L getsockopt uso retcodigo = getsockopt(socket, level, opt, optval, optlen); DESCRIPCI6N getsockopt permite a una aplicación obtener el valor de un parámetro (opción) de un socket o de un protocolo que usa el socket. I ARGUMENTOS ’ Argumento socket level opt optval optlen Tipo int int int &char &int Significado El descriptor de un socket. Un entero que identificanivel un de protocolo. Un entero que identifica una opción. La dirección de un buffer en la cual se regresa un valor. Tamaño del buffer; regresa la longitud del valor regresado. Las opciones del nivel de socket que se aplican a todos los sockets incluyen: SO-DEBUG SO-REUSEADDR SO-KEEPALIVE SO-DONTROUTE SO-LINGER SO-BROADCAST SO-USELOOPBACK SO-SNDBUF SO-RCVBUF SO-ERROR Estado de la información de depuración. ¿Permite reutilizar una dirección local? Estado de la conexión “keep-alive”. ¿Se permite la desviación para mensajes de salida? ¿Cómo se debe cerrar el socket si hay datos por enviar? ¿Hay permiso para obtener mensajes de difusión? Opción booleana, no funcional: incluida por compatibilidad. Tamaño del buffer de salida. Tamaño del buffer de entrada. Obtener y limpiar el ultimo error del socket. I CóDIGO DE RETORNO getsockopt regresa O si no hubo errores y -1 indica que ocurrió un error. Cuando ocurre un error, la variable global errno contiene uno de los siguientes valores: Valor en errno EBADF ENOTSOCK ENOPROTOOPT EFAULT La EOPNOTSUPP ENOBUFS EINVAL La Causa del error El primer argumento no especifica descriptor un válido. El primer argumento no especifica un descriptor de socket. El argumento opt es incorrecto. dirección de optval o de optlen es incorrecta. La opciónno es soportada por el protocolo usado por el socket. Espacio de buffer no disponible. o el socket ha sido opción es desconocida en nivel el de socket, desconectado. 261 uso retcodigo = listen(socket, queuelen); DESCRIPCI~N Los servidores usan listen para hacer un socket pasivo (es decir, prepararlo para aceptar las solicitudes que llegan). listen tambiénestablece el númerode solicitudes deconexiónde llegada que el protocolo encola para un socket dado mientrap el servidor maneja otra solicitud. listen solamente se aplica a sockets usados conTCP. ARGUMENTOS Argumento socket queuelen Tipo int int Significado Un descriptor creadopor la llamada socket. El tamañode la cola de las solicitudes deconexiónque llegan. I CóDIGO DE RETORNO listen regresa O si nohayproblema y -1 para indicar que ha ocurrido un error. Cuando ocurre un error, la variable global errno contiene uno delos siguientes valores: en errno Valor EBADF ENOTSOCK EOPNOTSUPP EDESTADRREQ ENOBUFS EINVAL Causa del error El primer argumento no especifica un descriptor válido. El primerargumentono especifica un descriptor de socket. El tipo desocketnosoporta listen. La dirección deenlaceno fue establecida. (Series 300/400 solamente). No hay espacio de buffers disponible El socket ha sido desconectado o ya está conectado. 1 262 sa errno I recv uso retcodigo = recv(socket, buffer, length, flags); DESCRIPCI~N recv obtiene el siguiente mensaje de llegada de un socket. . ARGUMENTOS Argumento socket buffer length flags I int &char int int Significado Un descriptor de socket creado porla función socket. La dirección de un buffer que guarda el,mensaje. La longitud del buffer. Bits de control que especifican si se reciben datos urgentes. CóDIGO DE RETORNO recv regresa el número de bytes en el mensaje si no hay problema y -1 para indicar que ha los ocurrido un error. Cuando ocurre un error, la variable global e r n 0 contieneunode siguientes valores: S en Valor EBADF ENOTSOCK EWOULDBLOCK EINTR EFAULT EMSGSIZE ETIMEOUT ENOTCONN EINVAL EOPNOTSUPP ENOBUFS ECONNRESET del error El primer argumento no especifica un descriptor válido. El primer argumento noespecifica un descriptor de socket. El socket notiene datos, pero ha sido especificada E/S' bloqueante. Una señal llega antes que la operación de lectura pudiera entregar los datos. El argumento bufferes incorrecto. Una longitud en la estructura msghdr es inválida. La conexión fue establecida fuera de tiempo. Recibe en un SOCK-STREAM qVe aún no se conecta. La longitud de lenght en la estructura msghdr es inválida. Verificar las banderas con eltipo de socket. Recursos insuficientes en el sistema. Una conexiónfue forzada a cerrar por sucorresponsal. I E/S = entradakalida. 263 recvfrom uso retcodigo = recvfrom(socket, buffer, buflen, flags, from, fromlen); DESCRIPCI~N recvfrom extrae el siguiente mensaje que llega al socket y registra la dirección del emisor. ARGUMENTOS Argumento socket buffer buflen flags from &char id int &sockaddr fromlen &inf int Significado Un descriptor de socket creado porla función socket. La dirección de un buffer que almacena el mensaje. La longitud del buffer. Bits de control para especificar mensajes urgentes. La dirección de una estructura que almacena la dirección del emisor. La longitud del buffer h m , regresa el tamaño de la longitud de la dirección del emisor. CóDIGO DE RETORNO recvfrom regresa el número de bytes en el mensaje si no hubo problemas y -1 para indicar que ocurrió un error. Cuando ocurre un error, la variable global errno contieneunode los siguientes valores: en Valor errno EBADF ENOTSOCK EWOULDBLOCK EINTR El primer argumento noespecifica un descriptor válido. El primer argumento noespecifica un descriptor de socket. El socket no tiene datos, pero ha sido especificada E/S' no bloqueante. Una señal llegó antes de que la operación de lectura pudiera entregar los EFAULT EMSGSIZE ETIMEOUT ENOTCONN EINVAL EOPNOTSUPP ENOBUFS ECONNRESET datos. El argumento buffer es incorrecto. Una longitud en la estructura msghdr es inválida. La conexión fue establecida fuera de tiempo. Recibe en un SOCK-STREAM que aún no se conecta. La longitud de lenght en la estructura msghdr es inválida. Verificar las banderas con el tipo de socvet. Recursos insuficientes en el sistema. Una conexión fue forzada cerrar a por su corresponsal. Causa del error E/S = entrada/salida. 264 sa errno recvmsg uso retcodigo = recvmsg(socket,msg flags); I DESCRIPCI~N recvrnsg regresa el siguiente mensaje que llega a un socket. Coloca el mensaje en una estructura que incluye una cabecera conlos datos. ARGUMENTOS Argumento socket msg flags int &struct rnsghdr int Significado Descriptor de socket creadopor la función socket. Dirección de la estructura de un mensaje. Bits de control para especificar mensajes urgentes. El formato de la estructura rnsghdrse encuentra enel tema correspondiente asockets. CóDIGO DE RETORNO recvmsg regresa el número de bytes enel mensaje si no hay problemay -1 para indicar que ha ocurrido un error. Cuando ocurre un error, la variable global errno contieneunode los siguientes valores: en Valor EBADF ENOTSOCK EWOULDBLOCK EINTR EFAULT EMSGSIZE ETIMEOUT ENOTCONN EINVAL EOPNOTSUPP ENOBUFS ECONNRESET del error El primer argumento no especifica un descriptor válido. El primer argumento noespecifica un descriptor de socket. El socket no tiene datos, pero ha sido especificada E/S' no bloqueante. Una señal llegó antes de que la operación de lectura pudiera entregar los datos. El argumento buffer es incorrecto. Una longitud en la estructura msghdr es inválida. La conexión fue establecida fuera de tiempo. Recibe en unSOCK-STREAM que aún no seconecta. La longitud de lenght en la estructura,.msghdr es inválida. Verificar las banderas con eltipo de socket. Recursos insuficientes en el sistema. Una conexiónfue forzada a cerrar por su corresponsal. E/S = entradakalida. 265 " I_ send . . " , uso retcodigo = send(socket, msg, msglen,flags); DESCRIPCI~N Las aplicaciones llaman a send para transferir un mensaje aotra máquina. ARGUMENTOS Argumento socket msg msglen flags inf &char inf inf Significado Descriptor de socket creadq mediante la función socket. Un puntero al mensaje. La longitud del mensaje en bytes. Bits de control que especifican datos urgentes. CóDIGO DE RETORNO send regresa el número de caracteres enviados y -1 indica que ocurrió un error. Cuando ocurre un error, la variable global errno contiene uno delos siguientes valores: en Valor errno EBADF ENOTSOCK EFAULT EMSGSIZE EWOULDBLOCK Causa del error El primer argumento noespecifica un descriptor válido. El primer argumento noespecifica un descriptor de socket. El argumento bufferes incorrecto. El mensajees demasiado largo para el socket. El socketno tiene datos, peroha sido especificada E/S" bloqueante. El sistema tiene insuficientes recursospara llevar acabo la ENOBUFS operación. El proceso haceun broadcast yel socket no lo soporta. EACCES La operación fue interrumpida por una señal antes de que los EINTR datos fueran enviados. En un send() un socket no dstá conectado, no se completa la ENOTCONN secuencia de conexión, o no está conectado con su pareja. EPIPE and SlGPlPE (signals) Se intentó hacer un send() en un socket que fue conectado pero que ya no lo es. E/S = entradahalida. Tipo . "I sendmsg uso retcodigo = sendmsg(socket, msg, flags); DESCRIPCI~N sendmsg envía un mensaje, extrayéndolo de unaestructura rnsghdr. ARGUMENTOS . Argumento socket msg flags inf &stmct msghdr inf Significado Descriptor de socket creado mediante la función socket. Un puntero a la estructura del mensaje. Bits de control para especificar datos urgentes, El formato de laestructura rnsghdr se encuentra en el tema correspondiente sockets. a CóDIGO DE RETORNO sendmsg regresa el número de bytes enviados si no hubo problema y -1 indica que ocurrió un error. Cuandoocurre un error, la variable global errno contieneunode los siguientes valores: errno en Valor EBADF ENOTSOCK EFAULT EMSGSIZE EWOULDBLOCK ENOBUFS EAFNOSUPOORT El0 ENETDOWN EOPNOTSUPP ENETUNREACH ECONRESET del Causa error El primer argumento no especifica un descriptor válido. El primer argumento noespecifica un descriptor de socket. El argumento buffer es incorrecto. El mensaje es demasiado largo para el socket. El socketno tiene datos, peroha sido especificada E/S' bloqueante. El sistemafiene insuficientes recursospara llevar acabo la operación. Dirección solicitada incompatible con la familia de dirección del socket. Ocurrió un tiempo fuera. La interface usada para la, dirección especificada está dada de baja, o no se encontró, o el nivel X.25 está dado de baja. MSG-OOB no es soportada por socketsAF-UNIX. (LAN) Todas las encapsulaciones hansido cortadas. Una conexiónfue cerrada por su pareja. 1 E/S = entradakalida. 267 ausa errno I I 1 Sendto uso retcodigo = sendto(socket, msg, msglen,flags, to, tolen); sendto envía un mensaje tomando la dirección destino de una estructura. ARGUMENTOS Argumento socket msg msglen flags to tolen Significado Descriptor de socket creado mediantela función socket. Un puntero al mensaje. La longitud del mensaje en bytes. Bits de control que especifican datos urgentes. Un puntero a laestructura dq la dirección. La longitud de la dirección en bytes. int &char int int &sockaddr int CóDIGO DE RETORNO sendto regresa el númerode bytes enviados si nohayproblema y -1 para indicar que ocurrió un error. Cuando ocurre un error, la variable global errno contiene uno delos siguientes valores: en Valor EBADF ENOTSOCK EFAULT EMSGSIZE EWOULDBLOCK ENOBUFS EACCES EINTR EISCONN EINVAL EDESTADDREQ del error El primer argumento no especifica un descriptor válido. El primer argumento noespecifica un descriptor de socket. El argumento buffer es incorrecto. El mensaje es demasiado largo para el socket. El socketno tiene datos, peroha sido especificada E/S' bloqueante. El sistema tiene insuficientes recursospara llevar acabo la operación. El proceso haceun broadcast y el socket no lo soporta. La operación fue interrumpida por una señal antes de que los datos fueran enviados. Fue especificada unaconexiónpor un to paraunsocket SOCK-DGRAM el cual ya está conectado. (sendtoo). La longitud de los últimos dos parámetros de sendto(), o una longitud en la estructura msghdr es inválida. El parámetro to en sendto() necesita especificar una dirección de destino para el mensaje. E/S = entradalsalida. 268 1 " " S setsockopt uso retcodigo = setsockopt(socket, level, opt, optval, optlen); DESCRIPCI~N setsockopt permite a una aplicación cambiar el valor de un parámetro (opción) asociado con un socket o de un protocolo que usa el socket. ARGUMENTOS ’ Argumento socket level opt optval int int int &char Tipo optlen &int ’ Significado El descriptor de un socket. Un entero que identifica un protocolo (por ejemploTCP). Un entero que identifica una opción. La dirección de un buffer que contiene un valor (normalmente habilitar una opción o O para deshabilitarla). La longitud optval. de 1 para Las opciones del nivel de socket que se aplican a todos los sockets incluyen: SO-DEBUG SO-REUSEADDR SO-KEEPALIVE SO-DONTROUTE SO-LINGER SO-BROADCAST SO-USELOOPBACK SO-SNDBUF SO-RCVBUF SO-ERROR Estado de la informabión de depuración. ¿Permite reutilizar una dirección local? Estado de la conexión “keep-alive”. ¿Se permite la desviación para mensajes desalida? ¿Cómo se debe cerrar el socket si hay datos por enviar? ¿Hay permiso para obtener mensajes de difusión? Opción booleana, no funcional: incluida por compatibilidad. Tamaño del buffer de salida. Tamaño del buffer de entrada. Obtener y limpiar el último error del socket. CóDIGO DE RETORNO I setsockopt regresa O si no hubo errores y -1 indica que ocurrió un error. error, la variable global errno contiene uno de los siguientes valores: en Valor errno EBADF ENOTSOCK ENOPROTOOPT EFAULT EOPNOTSUPP ENOBUFS EINVAL Cuando ocurre un Causa del error El primer argumento no especifica descriptor un válido. El primer argumento no especifica un descriptor de socket. El argumento opt es incorrecto. . La dirección de optval o de optlen es incorrecta. La opción no es soportada por el protocolo usado por el socket. Espaciobuffer de no disponible. La opción es desconocida en nivel el de socket, o el socket ha sido desconectado. 269 uso retcodigo = shutdown(socket, directuion); DESCRIPCI~N La función shutdown se aplica a conexión. los sockets full-dútplex y se usa para cerrar parcialmente la ARGUMENTOS " Araumento socket TiDo int int direction Significado Un descriptor de socket creado mediante la llamada socket. La dirección en la cual se desea cortar la conexión: O significa terminar las entradas posteriores, 1 significa terminar lassalidas posteriores, y dos significa terminartanto las entradas como las salidas. CóDIGO DE RETORNO La llamada shutdown regresa O si la operación es correcta y -1 para indicar que ocurrió un error. Cuando ocurre un error, la variableglobal errno contiene un código que especifica la causa del error. Los posibles errores son: en Valor errno EBADF ENOTSOCK EINVAL Causa del error El primer argumento no especifica un descriptor El primerargumentono especifica undescriptor El socket especificado no está conectado. I válido. desocket. socket uso retcodigo = socket(family, type, protocol); I DESCRIPCI~N La función socket crea un socket usado por la red decomunicaciones, y regresa un . descriptor entero para ese socket. ARGUMENTOS Argumentos Tipo family tY Pe int int protocol int Protocolo o familia de Significado dirección (por ejemplo AF-INET). Tipo servicio de (SOCK-STREAM para TCP o SOCK-DGRAM para UDP) Número de protocolo usar a o O para solicitar por defecto para una familia y tipo dados. CóDIGO DE RETORNO La llamada socket regresa undescriptor o -1 para indicar que ocurrióunerror. Cuando ocurre un error, la variable global errno contiene un código que especifica la causa del error. Los posibles errores son: en Valor errno EPROTONOSUPPORT EMFILE ENFILE ENOBUFS EHOSTDOWN EAFNOSUPPORT ESOCKNOSUPPORT EPROTOTYPE ETIMEDOUT EINVAL Causa del error Error en los argumentos:elserviciorequerido o elprotocolo especificado es inválido. El descriptor de la tabla de aplicación está lleno. La tabla de archivos del sistema interno está llena. El sistema no tiene espacio disponible en el buffer No está activa la red. La familiade la dirección especificada no es soportada esesa versión'del sistema. El tipo de socket especificado no es soportado en esta familia de direcciones. El tipo de socket y de protocolo no coinciden. Conexión fuera de tiempo. SOCK-DGRAM no es soportado por la familia AF-UNIX. 271 APÉNDICE 111”’ RESUMEN DE LLAMADAS AL SISTEMA ÚTILES CUANDO SE USAN SOCKETS LLAMADA AL SISTEMA DESCRIPCI~N ?cad() Puede usarse para leer datos de sockets de flujo o de datagramas de la misma forma que recv o recvfrop, sin el beneficio de las banderas de recv. read ofrece independencia de implementación; el descriptor puede ser para un archivo, un socket o cualquier otro objeto. write() Puede usarse para escribir datos de sockets de flujo (y de sockets de datagramas si sedeclara una dirección pordefectoparael socket remoto) dela mismaforma que send. write ofreceindependencia de implementación; el descriptor puede ser un archivo, un socket o cualquier otro objeto. close() Deshabilita los descriptores de sockets. El último close puede usarse para destruir un socket. dose desconecta deuna manera ‘Suave’ o “brusca” dependiendo de la opción LINGER. select() Puede usarse para mejorar la eficiencia de un proceso que accede a múltiples sockets u otros dispositivos de E/S simultáneamente. ¡octo Puede usarse para encontrar el número de bytes recibidos con FIONREAD y para establecer una E/S como no bloqueantecon la bandera FIOSBNBIO. También puede usarse para que un socket reciba señales asíncronas con FIOASYNC. fcntl() Puede usarse para duplicar un descriptbr de socket y para establecer las banderas O-NDELAY o O-NONBLOCK. fork() Aunque no está relacionadadirectamente conla comunicación de sockets, fork es esencial porque los servidores lo usanpara crea1 procesos concurrentes. fork crea un nuevo proceso ejecutando el mismc procesos comparten todos los código que el original. Los dos descriptores de archivo y de socket que están abiertos cuando ocurre I E llamada fork. Los dosprocesos tienen diferentes identificadores de procesos y diferentes identificadores de procesos padres. 272 ”. .. APÉNDICE IV~V I RESUMEN DE LLAMADAS DE LIBRERIA ÚTILES CUANDO SE UTILIZAN SOCKETS LIBRERIA htonl htons ntohl ntohs DESCRIPCION convierten valores de la red a un host y viceversa ¡net-addr ¡net-lnaof ¡net-makeaddr ¡net-netof ¡net-network rutinas de manipulación dedirecciones Internet setservent endservent getservbyname getservbyport getservent obtienen o colocan entradas deservicio setprotoend mdprotoend aetprotobyname getprotobynumber getprotoent obtienen o colocan la entrada de un protocolo setnetent mdnetent Jetnetbyname getnetbyaddr aetnetent obtienen o colocan entradas de lared sethostend endhostent gethostbyname gethostbyaddr gethostent obtienen o colocan entradas dehosts 273 BIBLIOGRAFíA UNlX SISTEMA V. VERSION 4 MANUAL DE REFERENCIA OSBORNE/McGRAW-HILL STEPHEN COFFIN LAS REDES DE COMPUTADORAS MONOGRAF~A RICARDO MARCELiN JIMÉNEZ ORESTES TÉLLEZ ANALCO RUBÉN VAZQUEZ MEDINA INTERNETWORKING WITH TCPllP VOLUMEN I PRENTICE HALL DOUGLAS E. COMER SISTEMAS OPERATIVOS CONCEPTOS FUNDAMENTALES ADDISON-WESLEY IBEROAMERICANA A. SILBERSCHATZ J. PETERSON P. GALVIN DISTRIBUTED OPERATING SYSTEMS THE LOGICAL DESIGN ADDISON-WESLEY PUBLISHING COMPANY ANDREJ GOSClNSKl BERKELEY IPC PROGRAMER‘S GUIDE EDICION 2 HEWLETT PACKARD COMUNICACIONES EN UNlX McGRAW-HILL JEAN-MARIE RIFFLET I REDES DE ORDENADORES PRENTICE HALL HISPANOAMERICANA S.A. ANDREW S. TANENBAUM DISTRIBUTED SYSTEMS CONCEPTS AND DESIGN ADDISON WESLEY PUBLISHING COMPANY GEORGE COULOURIS JEAN DOLLIMORE TIM KINDBERG DESIGN AND VALlDATiON OF COMPUTER PROTOCOL PRENTICE HALL GERARD J. HOLZMANN INTERNETWORKING WITH TCPllP VOLUMEN 111 PRENTICE HALL DOUGLAS E. COMER I DICCIONARIO DE COMPUTACI~N INGLÉS-ESPANOL ESPAÑOL-INGLÉS McGRAW-HILL 119941 ALAN FREEDMAN GUIDE'S USER (SECCIONES2 Y 3) HP-UX. VERSIONES 7.0 Y 9.0 HEWLETT PACKARD i Tomado de ComerBERKELEY IPC PROGRAMER'S GUIDE (Ver bibliografía) ii Tomado deINTERNETWORKING WITHTCP/IP VOLUMEN 111 y actualizado para 'I' Tomado de ComerBERKELEY IPC PROGRAMER'S GUIDE (Ver bibliografía). HP-UX 9.0 (bibliografía). '" Tomado de Comer BERKELEY IPC PROGRAMER'S GUIDE (Ver bibliografla). 275 , 0 INDICE I iNDlCE vii INTROUUCCI~N CAPÍTULO I PROTOCOLOS DE COMUNICACI~N.CONCEPTOS BASICOS I PROTOCOLOS DE COMUNICACIóN. CONCEPTOS BÁSICOS FUNCIONES PROTOCOLOS DE LOS 7 PROTOCOLOS NORMALIZAC16N DE Normalización telecomunicaciones 8 en las . La I S 0organismos y otros de normalización 8 OS1 EL OS1 l objetivos Los enfoque del Conceptos capas Las OS1 subsistema El de transporte de OS1 riores capas Las de OS1 TIPOS to ARQ y espera repetición ARQ con selectiva no repetición ARQ con selectiva El protocolo de alto nivel de control de enlace de datos Y VALIDACIóN DE DESCRIPCIóN PROTOCOLOS DE PROTOCOLOS Diferencias entre el modelo OS1 y TCPllP Organización de TCP/IP Presentación Los El protocolo IP nivel del protocolos Los de 35transporte El protocolo UDP (Protocolo de Datagama de Usuario) 3 5 10 10 10 12 13 13 16 17 18 (HDLC) 19 25 26 27 29 31 34 35 35 131 protocolo TCP (Protocolo de Control Transporte) de deEsquema general El Las funcionamiento 37 37 37 I .os scrvicios csthwkws L,os servicios generales Los servicios UNIX 38 38 39 CAPIP'UIN 2 FUNDAMENTOS DE REDES DE COMPUTADORAS dl FUNDAMENTOS DE REDES DE COMPUTADORAS 43 OBJETIVOS DE LAS REDES APLICACIONES DE LAS REDES ESTRUCTURAGENERALDEUNARED CLASIFICACIONES DE REDES Topología Cobertura Redes conmutadas de y redes difusión Velocidad Tipo de información que cursan COMUNICACI~N ESTRATEGIAS DE ENRUTAMIENTO 46 47 48 50 51 1 54 54 55 56 56 56 Estrategias de conexi6n Conflictos TECNOLOGíAS DE REDES TECNOLOGíAS ETHERNET, TOKEN RINGY ATM Tecnología Ethernet Token Ring Modelo de Transferencia Aslncrono (ATM) 57 58 59 63 64 68 70 CAPÍTULO 3 EL SISTEMA OPERATIVO UNIX 75 EL SISTEMA OPERATIVO UNIX 77 tras filosofía sistema del El saber y la controversia que rodean al sistema UNlX 78 La 78 UNlX El UNlX moderno Historia La Temas 79 Requerimientos para rnicrocomputadoras Ensaml)Iaje de un sistcma unix Nola sobrc compatililidad USD y XENIX 83 x3 x4 TUTORIAL Presentación sistemadelpantallaLa de ventanas X Lectura Listado de ficheros Visualizaci6n de un fichero fichero Supresión de un 89 Lectura de correo 89 Envío de correspondencia Quién Cambio de contraseña Despedida Miscelánea ARCHIVOS Y ÓRDENES DE UNlX ÚTILES PARA TRABAJAR CON PROTOCOLOS archivos Los Órdenes de administración procesos Los ' onio El demonios Los de servicios estándares Las servicios órdenes de 97 estándares de ordenes Las UNlX de estructuras Las 1:I Inanqjo tlc las tlircccioncs 6 1 manejo de puertos y servicios Los protocolos ntre comunicación 84 85 86 87 88 91 91 92 92 94 95 96 98 1O0 I-" 100 102 102 La Los mecanismos de direccionamiento El Correo 103 104 LOS PROCESOS EN 106 ELUNlX SISTEMA 106 Control de procesos 110Administración de procesos CAPIlULO 4 SISlEMAS OPERATIVOS DISTRIBUIDOS 1115 SISTEMAS OPERATIVOS DISTRIBUIDOS 117 117 Motivación Una definición y funciones de un sistema operativo distribuido 120 operativos red de Caracteristicas básicas de los sistemas Diferencias entre sistemas operativos de red y sistemas operativos distribuidos 280 122 123 125 distribuido Migraciones sistema en un Aspectos de ,_ COOriDlNACldN Ordenación de Exclusión Prevenci6n de bloqueos mutuos Deteccibn mutuos de bloqueos Solidez Acuerdos Algoritmos de SISTEMAS DE ARCHIVOS 145 DISTRIBUIDOS Antecedentes Nominación y transparencia Servicios Memoria 154 Replicación de archivos diseño IIIBUIDA sucesos elección 127 129 129 , 134 -135 140 141 143 146 147 CAPI7’lJI.O 5 MOI1EI.O CLIENTE-SERVIDOR Y CONCURRENCIA 157 1 MODELO CLIENTE-SERVIDOR Y CONCURRENCIA 159 EL MODELO CLIENTE-SERVIDOR (MOTIVACIóN) 160 Terminologia y conceptos no contra estándar cliente Software estándar CONCURRENCIA EN REDES servidores Concurrencia en 168 Terminología y conceptos 159 161 166 168 CAPiTULO 6 COMUNICACIVN ENTRE PROCESOS 173 COMUNICACI~NENTRE PROCESOS 179 176 COMUNICACIóN ORIENTADA A MENSAJES LLAMADA A PROCEDIMIENTOS REMOTOS 187(RPC) COMUNlCAClÓN POR TRANSACCIONES EN SISTEMAS OPERATIVOS IDOS 7 CAPITUI,O LOS SOCKEII’S 207 209 209 LOS SOCKETS CARACTERíSTICAS UN DE SOCKET dominio 210 socket El de un tipo socket El de un creación La de un socket La supresión de un socket Enlazamiento socketun de a una dirección LA COMUNICACIóN POR DATAGRAMAS Principio general operaciones Las de envio 215 y recepción doconexiones” Las LA COMUNICACIóN MODO EN CONECTADO Principio punto El del de vista 220 servidor 222 cliente Eldel punto de vista clientelservidor El diálogo LA SEÑAL SlGlO TOMA LA EN CUENTA DE MENSAJES URGENTES LA PARAMETRIZACIÓN DE SOCKETS LOS PROBLEMAS DE SEGURIDAD 21 1 21 212 213 214 215 2 9 21 226 227 230 231 CAPI’TLJLO8 UN SHELL 233 REMOTO UN SHELL REMOTO 235 2x I REMOTO? SHELL UN &UÉ ES SEMESTRE. IDENTIFICACIONDE PROBLEMAS T E ~ R I C O S Cl?l"M WE LO§ ALCANCES OBTENIDOS EL C6)DIGO DEL PROGRAMA SERVIDOR 13 I 235 236 237 237 2 Ití 230 244 244 24FJ 251 253 APÉNDICE I RESUMEN DE LLAMADAS AL SISTEMA PROPIAS DE SOCKETS 255 257 APÉNDICE II 256 SOCKETS SISTEMA LLAMADAS PROPIAS DE AL 256 APÉNDICE 111 272 APÉNDICEIV 273 BIBL~OGELAFÍA 274 ÍNIMCE 2 77 iNDICE 27 9