26
1. Definición de puerto 2. Sockets 3. Conceptos cliente/servidor 4. Definición de Stream 5. Concurrencia, multiprogramación y multitarea 6. Servidores iterativos y concurrentes 7. Estándares Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

Presentación de PowerPointprofesores.fi-b.unam.mx/yasmine/acs1_2.pdf · Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza . Concurrencia •Es el número máximo

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • 1. Definición de puerto

    2. Sockets

    3. Conceptos cliente/servidor

    4. Definición de Stream

    5. Concurrencia, multiprogramación y

    multitarea

    6. Servidores iterativos y concurrentes

    7. Estándares

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Stream

    • Es una secuencia de datos habilitados en un momento

    dado.

    • Una abstracción utilizada cuando se leen o escriben

    archivos, o cuando se realiza una comunicación mediante

    sockets.

    • Son canales preconectados de entradas y salidas entre

    una computadora, generalmente una secuencia de bytes.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Tipos de stream • Las conexiones I/O son conocidas como entrada estándar, salida

    estándar y salida de error estándar.

    • Un stream (flujo) es una secuencia de caracteres que fluyen hacia o desde un proceso.

    • Un input stream (flujo de entrada) esta ligado a alguna fuente de entrada para el proceso, p.e. teclado o socket.

    • Un output stream (flujo de salida) está ligado a una salida del proceso, p.e. monitor o socket.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Ejemplo aplicación cliente-servidor

    1) El cliente lee líneas desde la entrada estándar (flujo inFromUser), las envía al servidor vía un socket (flujo outToServer)

    2) El servidor lee líneas desde el socket

    3) El servidor las convierte a mayúsculas, y las envía de vuelta al cliente

    4) El cliente lee y muestra la línea modificada desde el socket (flujo inFromServer)

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Concurrencia

    • Es el número máximo de flujos de ejecución secuenciales

    (hilos) que podría estar ejecutado simultáneamente

    • Las ejecuciones pueden ser en una máquina multitarea,

    en una con múltiples procesadores o por medio de una

    red de datos en varias computadoras.

    • Un programa concurrente puede contener dos o más

    procesos que cooperan para llevar a cabo una tarea en

    común.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Multiprogramación

    • Este concepto se refiere a diversas fracciones de

    memoria las cuales contienen diferentes programas.

    • División de tiempo compartido en donde diferentes

    usuarios puedes ejecutar programas propios de forma

    concurrente usando el mismo sistema desde la misma o

    diferentes computadoras.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Multitarea

    • La multitarea de computadoras se divide en dos campos:

    procesos y threads (o procesos de poco peso)

    • La multitarea son varias entidades (tareas) ejecutables

    activas al mismo tiempo

    • Ejemplo:

    • Un navegador

    • Cada ventana es un nuevo proceso y cada petición un thread.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • ¿Qué pasa cuando varios clientes tratan

    de conectarse en el mismo tiempo a un

    servidor?

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Servidores Iterativos

    • Una forma de ir atendiéndolos es uno por ciclo, como el

    programa que atiende pedidos de archivos:

    • Se acepta una conexión

    • Se lee la petición

    • Se lee desde el archivo y se escribe en el socket hasta encontrar

    el fin de archivo.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Servidor secuencial (iterativo)

    atendiendo a más de un cliente

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Durante la conversación, el puerto 4444 no puede

    escuchar otras peticiones

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Solo después de efectuar la transmisión el puerto

    4444 puede volver a escuchar

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Si hay interacción del servicio con el usuario, p. e.

    transferir un archivo y digitar el nombre; el servidor

    queda en espera de que el usuario conteste. –

    Ineficiente -

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • ¿Qué sucede si el servidor tiene que

    esperar mucho al usuario? • Timeout de petición, y puede escuchar al siguiente cliente

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Desventajas servidores iterativos

    • El problema es que todo cliente debe esperar su turno

    para ser atendido.

    • Si uno de ellos pide un archivo muy grande los demás

    tienen que esperar.

    • La mayor parte de espera es debido a las operaciones

    I/O, hay capacidad de CPU desperdiciada.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Servidor concurrente

    • Un servidor concurrente atiende a varios clientes al

    mismo tiempo.

    • Más aún, mientras está atendiendo sigue escuchando.

    • Se trata de crear un nuevo proceso o línea de ejecución

    cada vez que un cliente “llega” a pedir un servicio.

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Servidores Concurrentes: hay procesos

    separados para atender el puerto y para

    transferir la respuesta o el resultado de

    la petición

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Después que el cliente contacta al servidor,

    éste crea otro proceso para atender al cliente y

    queda escuchando el puerto 4444

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Mientras el nuevo proceso está atendiendo

    al primer cliente, el segundo cliente puede

    contactar al servidor en el puerto 4444

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine

    Macedo Reza

  • Y el servidor crea otro proceso…

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Estándares

    POSIX

    (Portable Operating System Interface for UNIX)

    • La norma POSIX fue elaborada por IEEE para conseguir

    la portabilidad en distintos entornos UNIX.

    • La familia de estándares POSIX es designada

    formalmente como IEEE 1003.

    • En donde se definen varios puntos de la funcionalidad

    como scheduling y el uso de hilos, entre otros

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • RFC (Request For Comments)

    • Son un conjunto de informes, propuestas de documentos

    y estándares de protocolos que describen el

    funcionamiento interno de la Internet.

    • Cada uno de estos documentos contiene una propuesta

    oficial para generar un nuevo protocolo de Internet.

    http://www.rfc-editor.org/

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Ejemplo SMTP (RFC 5321)

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • Ejemplos: Número de RFC No. RFC Protocolo

    768 UDP

    783 TFTP

    791 IP

    793 TCP

    894 IP sobre ethernet

    2131 DHCP

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza

  • 2. Creación de sockets cliente/servidor

    • Sockets en TCP

    • Sockets en UDP

    • Definición de DAEMON

    • Concepto de Hilos

    Arquitecturas Cliente/Servidor, Sem 2016-1 M.I.Yasmine Macedo Reza