No. RFC Protocolo

Anuncio
1.
2.
3.
4.
5.
Definición de puerto
Sockets
Conceptos cliente/servidor
Definición de Stream
Concurrencia, multiprogramación y
multitarea
6. Servidores iterativos y concurrentes
7. Estándares
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.
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.
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)
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.
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.
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.
¿Qué pasa cuando varios clientes tratan de
conectarse en el mismo tiempo a un servidor?
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.
Servidor secuencial (iterativo)
atendiendo a más de un cliente
Durante la conversación, el puerto 4444 no puede
escuchar otras peticiones
Solo después de efectuar la transmisión el puerto 4444
puede volver a escuchar
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 -
¿Qué sucede si el servidor tiene que
esperar mucho al usuario?
• Timeout de petición, y puede escuchar al
siguiente cliente
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.
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.
Servidores Concurrentes: hay procesos
separados para atender el puerto y para
transferir la respuesta o el resultado de
la petición
Después que el cliente contacta al servidor,
éste crea otro proceso para atender al cliente y
queda escuchando el puerto 4444
Mientras el nuevo proceso está atendiendo
al primer cliente, el segundo cliente puede
contactar al servidor en el puerto 4444
Y el servidor crea otro proceso…
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
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/
Ejemplo SMTP (RFC 5321)
Ejemplos: Número de RFC
No. RFC
Protocolo
768
UDP
783
TFTP
791
IP
793
TCP
894
IP sobre ethernet
2131
DHCP
2. Creación de sockets cliente/servidor
• Sockets en TCP
• Sockets en UDP
• Definición de DAEMON
• Concepto de Hilos
Descargar