server-client communication without connection

25
1 Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1 Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores Server-Client communication without connection When the communication consists of sending and/or receiving datagram packets instead of a data stream it is called a connectionless communication This means there is no “virtual link” created between both end of a communication. This is very near to how the packages are actually delivered over the over the internet. This is why the arriving, order or uniqueness of packages cannot be guaranteed.

Upload: hagop

Post on 15-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

Server-Client communication without connection. When the communication consists of sending and/or receiving datagram packets instead of a data stream it is called a connectionless communication This means there is no “virtual link” created between both end of a communication. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Server-Client communication without connection

1Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Server-Client communication without connection

When the communication consists of sending and/or receiving datagram packets instead of a data stream it is called a connectionless communication

This means there is no “virtual link” created between both end of a communication.

This is very near to how the packages are actually delivered over the over the internet.

This is why the arriving, order or uniqueness of packages cannot be guaranteed.

Page 2: Server-Client communication without connection

2Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Datagram management with JAVA Communication is based on assembling UDP packages

and sending them to the interent. An UDP package consists of: Data: a bytes array Destination Port : int Destination Address: InetAddress

A server start by listening at a certain port for packages. The client assembles a packages and send it to the net. The server receives the package (routed by the net to its

final destination) and extracts the data. If the server needs to answer, it extracts the sender

address and port (the client must be listening for packages)

Page 3: Server-Client communication without connection

3Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Classes for Datagrams in Java: Send Create a socket for sending a Datagram to the internet

DatagramSocket ds = new DatagramSocket(); Create and assemble the Datagram

byte[] data = new byte[256]; InetAddress address = InetAddress.getByName(“www.ctc.cl”);

DatagramPacket pack = new DatagramPacket(data, data.length,address,4444);

Sendds.send(pack);

Wait for an answersocket.receive(pack); //make sure it is clean before, perhaps

by using a new one !!!EchoUDPClient DateUDPClient

Page 4: Server-Client communication without connection

4Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Start listening for Datagrams on a certain socket socket = new DatagramSocket(4444);

Preparing a Datagram for receiving data byte[] data = new byte[256]; DatagramPacket pack = new DatagramPacket(data,data.length);

Start listening for a package socket .receive(pack);

Obtaining the data and address and port of sender int port = pack.getPort(); InetAddress address = pack getAddress(); String content = new String(pack.getData()); Or just by using the data variable which points to the byte-array

Classes for Datagrams in Java: Receive

DateUDPServer EchoUDPServer

Page 5: Server-Client communication without connection

5Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

An UDP Ping Client We will use the echo server by default In a unix machine there is normally an echo server

listening at port 7 for UDP and for TCP requests It is not the same server, but it is possible to open 2

sever sockets for the same port but for different protocols

The Ping client will send a package to the server with time of issue, which will be returned by the server

By comparing time in the Datagram and current time we can have the round-trip delay

The program will also calculate max/min and avg

Ping.java

Page 6: Server-Client communication without connection

6Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Multicasting

Qué pasa cuando se quiere hacer un broadcasting de datos demasiado pesados ?

Por cada cliente, el servidor queda mucho rato “pegado” escribiendo datos.

Imáginémonos ahora la situación en una videoconferencia: se trata de transmitir varios frames de video por segundo a una cantidad grande de “oyentes” => no es posible en la práctica!

En el Multicasting se trata de transmitir una sola vez la información a un punto en la internet, y desde ahí la leen los clientes.

Esto implica que el hardware (el de la red, se entiende) debe ser “multicastingable”

Page 7: Server-Client communication without connection

7Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

El Paradigma del Multicast

PROG1

PROG2

PROG2

PROG2

Page 8: Server-Client communication without connection

8Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Multicast & Broadcast Multicast & Broadcast son protocolos que

permiten a una aplicación poner un paquete único en la red el cual será recibido por varias aplicaciones

Broadcast trabaja sólo dentro de la red local. Un paquete mandado por broadcast lo recibirán todos.

Requiere soporte de hardware de la red local. Un paquete de multicast sólo lo recibirán los

programas que se registraron para ello previamente

Multicast requiere apoyo en el host y los routers

Page 9: Server-Client communication without connection

9Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Multicast

Multicast en Java es similar a UDP excepto que el envío-recibo de paquetes debe ser implementado para una dirección IP en el rango (224.0.0.0 - 239.255.255)

Para poder recibir paquetes de multicast el cliente debe haber previamente haber expresado su interes en unirse a un grupo multicast identificado por una direccion IP multicast y un port.

La red (es decir los ruteadores) se encargarán de transmitir los paquetes a todas las aplicaciones interesadas en la internet (teóricamente!)

Cualquier aplicación puede mandar paquetes al grupo !

Page 10: Server-Client communication without connection

10Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Qué pasa cuando se lanza un paquete

El paquete será tomado por todas las máquinas de la red local interesadas.

Además, los ruteadores tomarán el paquete y lo mandarán a las redes vecinas si hay una aplicación interesada

El determinar si hay una aplicación interesada en las redes adyacentes añade una complejidad significativa al algoritmo de ruteo

El problema es cómo va a saber el ruteador si una vecina a la vecina está interesada

Esto requiere el almacenaje de mayor información en las tablas de ruteo

Page 11: Server-Client communication without connection

11Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de ComputadoresApoyo de Java para Multicast

MulticastSocket: extensión de DatagramSocketMulticastSocket( ) se amarra a cualquier port libreMulticastSocket(int port) usa port específico

Muchos socekts multicast pueden ser amarrados al mismoport! (no como en TCP o UDP)

Métodos heredados (send, receive) + 3 nuevosjoinGroup(InetAddress group)leaveGroup(InetAddress group)setTimeToLive(int ttl)

Page 12: Server-Client communication without connection

12Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

import java.io.*;import java.net.*;public class MulticastClient { public static void main(String[] args) throws IOException { MulticastSocket socket = new MulticastSocket(4446);

InetAddress address = InetAddress.getByName("224.2.2.3");

socket.joinGroup(address);

byte[] buf = new byte[256];DatagramPacket packet;

while(true) { packet = new DatagramPacket(buf, buf.length); socket.receive(packet);

String received = new String(packet.getData()); System.out.println("Received: " + received); try {

Thread.currentThread().sleep(0); }catch (InterruptedException e) {

} }}

Ejemplo de Multicast en Java

import java.io.*;import java.net.*;import java.util.*;public class MulticastServer { static public void main(String args[]) { DatagramSocket socket = null; BufferedReader in = null; boolean moreQuotes = true; try { socket = new DatagramSocket(); while (true) { InetAddress grupo = InetAddress.getByName("224.2.2.3"); for (int i=1; i< 1000; i++) { String dString = i+"--"+(InetAddress.getLocalHost()); byte[] buf = dString.getBytes();

DatagramPacket packet = new DatagramPacket(buf, buf.length, grupo, 4446); socket.send(packet); try {

Thread.currentThread().sleep(200); }catch (InterruptedException e) {}

} } } catch (IOException e) {} }}

Page 13: Server-Client communication without connection

13Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Sending video by Multicast

MulticastMovieServer

MulticastMovieClient

Page 14: Server-Client communication without connection

14Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Un Chat basado en Multicast

No hay servidor. Cada participante corre el mismo

programa uniéndose al grupo multicast Los mensajes salen como datagramas

“multicast” a la red, por lo cual cualquier aplicación interesada lo recibirá

No hay garantía de si llegará, en cuanto rato, en qué órden ni si se duplicarán !

MulticastChat

Page 15: Server-Client communication without connection

15Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Comunicación de Grupo con Multicast

Provee: • Tolerancia a fallas basada en la replicidad de servicios: un servicio replicado consiste en un grupo de servidores. El cliente manda el request a todos los servidores que realizan la misma operación. • Encuentro de servicios de descubrimiento de servidores: clientes y servidores usan mensajes de multicast para localizar servicios presentes en la red para poder registrar sus interfaces y y hacer lookup de interfaces de otros servicios• Mejor performance por datos replicados: a veces se replican los datos en los computadores cliente (cache) cuando estos varían el servidor manda mensajes por multicast• Propagación de eventos de notificación: para notificar a procesos interesados en ciertos eventos que estos tuvieron lugar (jini)

Page 16: Server-Client communication without connection

16Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Modelo de Multicast para grupos

Multicast tiene cualidades que lo hacen más eficiente para transmitir un mensaje a varios miembros de un grupo

Modelo: message(g,m) : operación de transmisión de un

mensaje m a los miembros de un grupo g deliver(m) : operación de proceso de mensaje m sender(m) : identificación del que manda el mensaje group(m) : grupo de destino del mensaje open/closed group : el grupo puede/no puede recibir mensajes mandados por un por un miembro que no pertenece al grupo

Page 17: Server-Client communication without connection

17Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Spontaneous Networking

Multicasting is the right way to program systems when the participants in the session may come and go very frequently

This is the case of spontaneous networking with mobile devices in a room

Someone “announce” her presence to the other members by sending message to all at regular intervals

The fact that someone has left is recorded by the others when there have been no messages from her since a certain period of time

Page 18: Server-Client communication without connection

18Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

An Awareness Example

The MulticastRegister program will show all people participating in the multicast group

It implements a thread that will send every second a packet with the client's identification

It starts 3 other threads:ReceiveThread: will listen to packets sent by other members of

the group. When it receives one, it will register it in a vector containing a pair (participant-id, time) with the time the last packet received from a participant was received

ChckThread: check the vector every 2 seconds the vector and deletes the entries from the participants whose last package was received more than 10 seconds ago

RefreshThread: it simply refreshes the list showing the active participants according to the vector’s content

Page 19: Server-Client communication without connection

19Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Reliable Multicast

Reliable multicast implica que se cumplen 3 propiedades:

Integridad: el mensaje que se manda es igual al que se procesa y que ningún mensaje es procesado dos veces. Un proceso p hace la operación deliver(m) una sola vez y p group(m)

Validez : si un proceso manda un mensaje multicast, tarde o temprano él también lo procesará si pertenece al grupo

Agreement : si un proceso procesa un mensaje m el resto de los miembros del grupo también lo hará

Page 20: Server-Client communication without connection

20Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Reliable Multicast con IP !

• Cada proceso p mantiene un número de secuencia S(p,g) para cada grupo g al que pertenece. • También mantiene un registro R(q,g) que es el número de secuencia del último mensaje procesado del proceso q que mandó al grupo g. • Cuando p quiere mandar un mensaje a g incluye el número S(p,g) y pares <q,R(q,g)>, luego incrementa S(p,g). • Un proceso del grupo procesa el mensaje mandado por p sólo si el S = R(p,g) +1• Si S <= R(p,g) es un mensaje repetido y lo descarta• Si S > R(p,g) + 1 significa que perdió un mensaje y manda un ack negativo para que lo mande de nuevo. • Integridad se alcanza por la detección de duplicados y los checkeos de IP en los datagramas. Validez por propiedad de IP. Agreement implica que los procesos siempre guardan copias de mensajes enviados para enviarlos de nuevo • para que esto funcione los proceso no deben fallar !!!!

Page 21: Server-Client communication without connection

21Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Ordenando los mensajes de Multicast

• Se usa un cola de mensajes multicast para guardarlos antes de procesarlos. Se trata de asignar un número de secuencia para cada mensaje en el cual todos estén de acuerdo. Cada proceso q en un grupo g mantiene un número A(q,g), el más grande de la secuencia acordada que se ha observado para un grupo g y P(q,g) el mayor de la secuencia propia. Cuando p quiere mandar un mensaje:

• Manda en forma segura <m,i> siendo m el mensaje e i un identificador único para m• cada proceso q responde a p con una proposición para acordar un número de secuencia para ese mensaje P(q,g) = Max(A(q,g), P(q,g))+1. Cada proceso guarda en su cola el mensaje con el número de secuencia que propuso provisionalmente ordenado de menor a mayor número de secuencia• p recolecta todos los números de secuencia propuestos y selecciona el mayor a como el que se usará definitivamente y lo transmite en un mensaje broadcast seguro <i,a>• cada proceso entonces ordena la cola de mensajes antes de procesarlos según los números de secuencia acordados

Page 22: Server-Client communication without connection

22Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Time to Live

Los paquetes multicast incluyen (como todos los paquetes de internet) un campo TTL que en este caso adquiere la importancia de evitar que se propague demasiado por la internet

Por esto también es posible en java definir el TTL que saldrán de un socket dado.

Page 23: Server-Client communication without connection

23Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

MBone Multicast no está muy difundida en la internet. Esto

es por un lado porque se genera muho tráfico y, por el otro, la ausencia de ruteadores con el protocolo IGMP

Hay una subred llamada MBone que comunica islas de redes multicas permitiéndo que los paquetes multicast viajen entre ellas a través de túneles.

Un tunel omunica los routers de dos redes que no están físicamente adjacentes.

Los paquetes serán pasados de una red a otra como si estuvieran conectados físicamentes

Page 24: Server-Client communication without connection

24Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

Broadcast

Broadcast es similar a Multicast pero en una red local

Cada red basada en broadcast (como ethernet) tiene una dirección de broadcast IP. Cualquier mensaje mandado a esta dirección será recibido por todos los coputadores de esa red.

Usualmente esta es la última dirección IP de la subred: Clase C: 192.1.2.0 -> 192.1.2.255Para una subred de 16 hosts 197.84.66.192 ->

197.84.66.207 Se debe en todo caso especificar el número de port

UDPBroadcastClient/Server

Page 25: Server-Client communication without connection

25Universidad de Chile - Tupper 2007, Santiago - Fono: 678 4888 - Fax: 698 8427 - Email: victoria.gaete @die.uchile.cl 2000/1

Módulo 9: Desarrollo de Aplicaciones en Redes de Computadores

¿ Broadcast o Multicast ?

Si se puede elegir es mejor usar multicast porque moleta sólo a las máquinas interesadas.

A veces es necesario tener privilegios sobre la red para usar la direccion multicast.

Multicast permite definir varios grupos dentro de la misma red

El tráfico generado es el mismo: se pone un paquete en la red pero todos lo leerán

Broadcast no tiene absolutamente ningúna diferencia con UDP en Java. Sólo la dirección IP es especial