Publicado el 14 de Enero del 2017
1.038 visualizaciones desde el 14 de Enero del 2017
756,1 KB
46 paginas
Creado hace 16a (17/11/2008)
PROGRAMACIÓN
CONCURRENTE Y DISTRIBUIDA
VI.1: Socket Java
Laura Barros
Notas:
Posibilidades que ofrece Java para la comunicación en red: Socket,RMI y URL.
1
Modelo OSI (Modelo de Referencia de Interconexión de
Sistemas Abiertos)
El molelo OSI está formado por 7 niveles. Cada nivel llama a los servicios del
nivel que está justo por debajo. Los niveles paritarios de las dos máquinas que
comunican lo hacen virtualmente, a través de los niveles inferiores, sólo el nivel
físico comunica realmente con la otra máquina.
Entre dos niveles vecinos se establece un interfaz para el intercambio de unidades
de información conocidas como PDU (unidad de datos de protocolo).
Procodis’08: VI- Sockets
Laura Barros
2
Notas:
2
Modelo TCP/IP
Modelo de Internet.
Agrupa las capas del modelo OSI.
Es modelo software
(no define capa física).
Se añade cabeceras
(información de control)
a medida que descendemos
por la pila.
Procodis’08: VI- Sockets
Laura Barros
3
Notas:
La mayoría de los programadores, no quieren saber cuando programan, de los detalles de bajo nivel
de las aplicaciones, necesarios para comunicar un computador con otro.Los programadores prefieren
manejar abstracciones de algo nivel que son más fáciles de entender.
El programador no se preocupa por los detalles de la transmisión de “1s y 0s” que se produce entre
dos computadores que quieren compartir información. Son los protocolos los que se preocupan por
ello. Nos permiten manejar las aplicaciones a nivel de aplicación sin tener que preocuparnos por los
detalles de red de bajo nivel. Estos conjuntos de protocolos se llaman pilas . La mas común es la pila
TCP/IP. El primero que se estableció fue el modelo de referencia de Interconexión de Sistemas
Abiertos (OSI, Open System Interconnection) . El modelo en sí mismo no puede ser considerado una
arquitectura, ya que no especifica el protocolo que debe ser usado en cada capa, sino que, suele
hablarse de modelo de referencia.
Los sockets residen en la capa de sesión del modelo OSI. La capa de sesión se encuentra entre las
capas de aplicación y las de comunicación de datos de bajo nivel. La capa de sesión provee servicios
de manejo y control del flujo de datos entre dos ordenadores.
Podemos realizar un símil con una llamada telefónica.El teléfono es un interfaz de red y el usuario no
requiere conocer los detalles de cómo la voz es transportada. Del mismo modo, un socket actúa como
una interfaz de alto nivel que esconde la complejidad de transmitir 1s y 0s a través de los canales
desconocidos.
3
Protocolo de comunicaciones
La interconexión entre dos o más ordenadores a través de una red es
dirigida o supervisada por un protocolo de comunicaciones, el cual, debe
ser aceptado por los distintos ordenadores que intervengan en la conexión.
Define las reglas que se deben seguir en la comunicación.
Hay muchos protocolos disponibles (ejemplos de protocolos de
aplicación):
HTTP: define como se van a comunicar los servidores y navegadores
web.
SMTP: define la forma de transferencia del correo electrónico.
Hay otros protocolos que actúan por debajo del nivel de aplicación.
El programador de Java no necesita conocerlos.
Las redes están separadas lógicamente en capas (layers).
La comunicación a través de cada capa es establecida por el protocolo
correspondiente.
Procodis’08: VI- Sockets
Laura Barros
4
Notas:
4
Protocolo de comunicaciones II
El protocolo TCP/IP transporta bytes.
El protocolo de Aplicación proporciona la semántica.
Application
byte stream
TCP/IP
Application
byte stream
TCP/IP
Here are some
bytes. I don’t
know what
they mean.
I’ll pass
these to
the app. It
knows
what to do.
Procodis’08: VI- Sockets
Laura Barros
5
Notas:
TCP/IP opera sólo en los niveles superiores de red, resultándole indiferente el conjunto de protocolos
que se encuentren por debajo de dicha capa.
5
Aplicaciones Cliente-Servidor I
Servidor: parte que está escuchando la petición de algún servicio por parte del
Cliente.
Cliente: parte que realiza las peticiones al Servidor.
1-PETICIÓN
2-RESPUESTA
Cliente:
Inicia la comunicación
Solicita un servicio al servidor
Ejemplo:
-Un cliente web solicita una página
-Un proceso P2P solicita un fichero a
otro proceso P2P
Servidor:
Espera peticiones
Proporciona el servicio solicitado
Ejemplo:
-El servidor web envía la página solicitada por el cliente
-El proceso P2P envía el fichero solicitado por otro proceso
P2P
Procodis’08: VI- Sockets
Laura Barros
6
Notas:
Medio de conexión: Internet, Ethernet...
6
Aplicaciones Cliente-Servidor II. Puerto
Un puerto es una dirección numérica de la cual se procesa un servicio.
Son direcciones lógicas proporcionadas por el SO.
Procodis’08: VI- Sockets
Laura Barros
7
Notas:
Los puertos son direcciones lógicas proporcionadas por el sistema operativo para poder responder
(distinguir de los puertos hardware).
7
Aplicaciones Cliente-Servidor III.Socket
Es una abstracción del sistema operativo (no Hw)
Las aplicaciones los crean, los utilizan y los cierran cuando ya no son necesarios
Su funcionamiento está controlado por el sistema operativo
Comunicación entre procesos
Los procesos envían/reciben mensajes a través de su socket
Los socket se comunican entre ellos
La comunicación en Internet es de socket a socket
El proceso que está comunicándose se identifica por medio de su socket
El socket tiene un identificador
Identificador = dir. IP del computador + núm. Puerto
Socket
IP:128.2.1.1
Puerto:1256
Transporte
Red
Enlace
Físico
IP:62.3.8.59
Puerto:80
Transporte
Red
Enlace
Físico
Procodis’08: VI- Sockets
Laura Barros
8
Notas:
The socket is the software abstraction used to represent the "terminals" of a connection
between two machines. For a given connection, there's a socket on each machine, and you
can imagine a hypothetical "cable" running between the two machines with each end of the
"cable" plugged into a socket. Of course, the physical hardware and cabling between
machines is completely unknown. The whole point of the abstraction is that we don't have to
know more than is necessary. Bruce Eckel ,Thinking in Java.
8
Aplicaciones Cliente-Servidor IV.Socket API
Servidor y Cliente intercambian mensajes a través de la red
mediante la API Socket.
Server
ports
Clients
TCP/UDP
Socket API
TCP/UDP
IP
IP
user
space
kernel
space
Ethernet Adapter
Ethernet Adapter
hardware
Procodis’08: VI- Sockets
Laura Barros
9
Notas:
Los procesos de las aplicaciones residen en el espacio de usuario.
Los procesos de los protocolos de transporte forman parte del S.O.
Se necesita un mecanismo para ponerlos en contacto: API (Application Programming Interface):
-Permite a las aplicaciones utilizar los protocolos de la pila TCP/IP.
-Define las operaciones permitidas y sus argumentos:
Similar a la forma de acceder a los ficheros en Unix
•Operaciones: open, read,write, close
•Cuando se abre un fichero obtenemos un descriptor
9
IP,Internet Protocol
Protocolo usado para la comunicación entre dos aplicaciones
que usan como medio de comunicación Internet.
Se encarga de mover datos en forma de paquetes entre un
origen y un destino.
Todo dispositivo conectado a Internet posee al menos un
identificador (una dirección IP de 4 bytes=32 bits) que lo
define unívocamente.
Origen y destino, basan su comunicación en la utilización de
direcciones IP.
Procodis’08: VI- Sockets
Laura Barros
10
Notas:
10
TCP, Transfer Control Protocol
Protocolo incorporado al protocolo IP para dar seguridad a la
comunicación realizada a través del protocolo IP.
Se utiliza para corroborar que todos los paquetes que
constituyen un mensaje llegan a su destino y en el orden
correcto para la recomposición del mensaje original por parte
del destinatario.
Puede pedir la retransmisión de los paquetes que hubiesen
llegado en mal estado o se hubiesen perdido.
El funcionamiento de este protocolo, es similar al de una
llamada de teléfono.
Procodis’08: VI- Sockets
Laura Barros
11
Notas:
Llamada de teléfono: en primer lugar, el equipo local solicita al remoto el establecimiento de un
canal de comunicación; y solamente cuando el canal ha sido creado, y ambas máquinas están
preparadas para la transmisión, empieza la transferencia de datos real.
11
Analogía de TCP con llamada telefónica
TCP
Garantía de llegada
Byte stream – llegada en orden
Orientado a la conexión – un socket
por conexión
Se establece la conexión y se envían
los datos
Llamada telefónica
Garantía de llegada
Llegada en orden
Orientado a la conexión
Se establece la conexión y se
establece la conversación
Procodis’08: VI- Sockets
Laura Barros
12
Notas:
12
UDP, User Datagram Protocol
Protocolo que se utiliza combinado con el protocolo IP, en
aquellos tipos de comunicaciones en los que no resulta tan
importante que lleguen todos los mensajes a un destinatario, o
que lleguen en el orden en que se han enviado.
Es preferible que cada paquete llegue lo más rápidamente
posible, incluso a costa de perder algunos paquetes.
Desventajas respecto al protocolo TCP:
Es un protocolo menos fiable.
Los procesos que hagan uso de UDP han de implementar, si es
necesario, sus propias rutinas de verificación de envío y
sincronización.
El funcionamiento de este protocolo, es similar al del envío de
una carta.
Procodis’08: VI- Sockets
Laura Barros
13
Notas:
13
Analogía de UDP con envío postal
UDP
Envío Postal
Un socket para recibir los mensajes
No hay garantía de llegada
La llegada no es necesariamente en
orden
Datagram – paquetes independientes
Muchas direcciones cada paquete
Un buzón para recibir las cartas
No hay garantía de llegada
La llegada no es necesariamente en
orden
Las cartas son independientes
Una respuesta puede ir a varias
direcciones
Procodis’08: VI- Sockets
Laura Barros
14
Notas:
14
Analogía de Programación en Red
Comentarios de: PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA - VI.1: Socket Java (0)
No hay comentarios