Sie sind auf Seite 1von 16

Arquitecturas cliente/Servidor

Conceptos Básicos
Contenido
1. Pila de Protocolos en internet
2. Definición de puerto.
3. Sockets.
4. Conceptos cliente/Servidor.
5. Definición de Stream.
6. Concurrencia, multiprogramción y multitarea.
7. Servidores iterativos y concurrentes.
8. Estándares
Pila de protocolos en internet

Aplicación Compuesta por las aplicaciones de Red: FTP, SMTP, HTTP

Transporte Transferencia de datos host – host : TCP, UDP

Ruteo de datagramas desde fuente a destino: IP, protocolos de


Red
ruteo

Transferencia de datos entre elementos vecinos en la red: P2P,


Enlace
Ethernet

Físico Transporte de bits, p.e “RJ-45”


Pila de protocolos en internet
Ejemplo de funcionamiento :
El protocolo Http
Un cliente Web selecciona automáticamente los comandos HTTP necesarios para recoger la información
requerida por el usuario. Así, ante la activación de un enlace, siempre se ejecuta una operación GET para
recoger el documento correspondiente. El envío del contenido de un formulario utiliza GET o POST, en
función del atributo de <FORM METHOD="...">. Además, si el cliente Web tiene un caché de páginas
recientemente visitadas, puede utilizar HEAD para comprobar la última fecha de modificación de un fichero,
antes de traer una nueva copia del mismo.

Operaciones:
http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/http.html
¿Qué es un Puerto?
Puerto.
Un puerto en la capa de transporte está representado por un número de 16 bits, que es
utilizado para identificar los puntos finales de la conexión, en las cabeceras UDP o TCP

Los números de puerto: 0 a 65,535

La pila de protocolos de red añade los puertos como una abstracción para la red.

Son canales que utiliza el subsistema de red para redireccionar la información al


programa apropiado.
Clasificación de los Puertos.
Puertos Bien Utilizados para servicios de red conocidos (FTP, HTTP,
Conocidos Telnet, DNS, etc.

Puertos entre 1024 a 49151. Pueden ser usados de


Puertos registrados manera temporal por los clientes pero también pueden
representar servicios registrados por un tercero

Puertos Dinámicos o Puertos entre 49152 y 65535, pueden también ser


privados utilizados por el cliente, pero se utilizan menos
frecuentemente.

Controlado por IANA (Internet Asisigned Numbers Authority)

Revisar: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
Socket
Un número de puerto y una dirección de red

Un par de sockets, uno en cada host, forma una conexión única.

Es un punto final de un enlace de comunicación de dos vías entre dos


programas que se ejecutan a través de la red.

El cliente y el servidor deben ponerse de acuerdo sobre el protocolo que utilizarán.


Proceso
Programa en ejecución en una computadora.

Dentro de la misma computadora, dos procesos se comunican entre


sí usando comunicación entre procesos * (definida por OS)
Procesos en diferentes host se comunican vía intercambio de
mensajes.

* Comúnmente IPC, del inglés Inter-Process Communication) es una función básica


de los sistemas operativos. ... Las técnicas de IPC están divididas dentro de
métodos para: paso de mensajes, sincronización, memoria compartida y llamadas
de procedimientos remotos (RPC)
Procesos y Sockets
Los procesos envían/reciben mensajes
a/desde sus sockets.

El Proceso transmisor confía en la


infraestructura de transporte al otro
lado del puerto para llevar los
mensajes al socket en el proceso
receptor Proceso Proceso

Controlado por el Sistema


Operativo
Relación entre Proceso y Socket
Streams
Procesos Concurrentes
Concepto de Hilos
class Proceso extends Thread {
private int repeticiones;
private String mensaje;

Proceso (String msg, int n)


{ mensaje = msg; repeticiones = n; }
public void run () {
for (int i = 1; i <= repeticiones; i++)
System.out.println (mensaje + " " + i); }

public static void main (String args[])


{ Proceso r1 = new Proceso ("Rojo", 5);
Proceso r2 = new Proceso ("Azul", 80);
rl.start ();
r2.start ();
}
Hilos – usando Runnable
class Proceso2 implements Runnable {
En el caso de crear un private int repeticiones;
hilo extendiendo la clase private String mensaje;
Thread, se pueden Proceso2 (String msg, int n) {
heredar los métodos y mensaje = msg; repeticiones = n;
variables de la clase }
padre. Si es así, una
misma subclase public void run () {
solamente puede for (int i = 1; i <= repeticiones; i++)
extender o derivar una System.out.println (mensaje + " " + i);
vez de la clase padre }
Thread. Esta limitación }
de Java puede ser
superada a través de la public static void main (String args[]) {
implementación de Proceso rl = new Proceso ("Rojo", 5);
Runnable Thread r2 = new Thread (new Proceso2 ("Azul",
80));
r1. start ();
r2. start ();
}
Un poco más de Hilos –

http://dhw.umh.es/alex-bia/teaching/PC/material/programacion-
concurrente-java.htm

Das könnte Ihnen auch gefallen