Server-Client communication without connection - PowerPoint PPT Presentation

About This Presentation
Title:

Server-Client communication without connection

Description:

... the package (routed by the net to its final destination) and extracts the data. ... the server needs to answer, it extracts the sender address and port (the client ... – PowerPoint PPT presentation

Number of Views:50
Avg rating:3.0/5.0
Slides: 26
Provided by: vicg9
Category:

less

Transcript and Presenter's Notes

Title: Server-Client communication without connection


1
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.

2
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)

3
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 byte256
  • InetAddress address InetAddress.getByName(www.c
    tc.cl)
  • DatagramPacket pack new DatagramPacket(data,
    data.length,address,4444)
  • Send
  • ds.send(pack)
  • Wait for an answer
  • socket.receive(pack) //make sure it is clean
    before, perhaps by using a new one !!!

EchoUDPClient DateUDPClient
4
Classes for Datagrams in Java Receive
  • Start listening for Datagrams on a certain socket
  • socket new DatagramSocket(4444)
  • Preparing a Datagram for receiving data
  • byte data new byte256
  • 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

DateUDPServer EchoUDPServer
5
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
6
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 gt 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

7
El Paradigma del Multicast
PROG2
PROG1
PROG2
PROG2
8
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

9
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 !

10
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

11
Apoyo de Java para Multicast
  • MulticastSocket extensión de DatagramSocket
  • MulticastSocket( ) se amarra a cualquier port
    libre
  • MulticastSocket(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 nuevos
  • joinGroup(InetAddress group)
  • leaveGroup(InetAddress group)
  • setTimeToLive(int ttl)

12
Ejemplo de Multicast en Java
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 byte256 DatagramPacket packet while(tru
e) 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)
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 i1 ilt 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)

13
Sending video by Multicast
MulticastMovieServer
MulticastMovieClient
14
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
15
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)

16
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
17
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

18
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
    vectors content

19
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á
20
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 ltq,R(q,g)gt, 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 lt R(p,g) es un mensaje repetido y lo
    descarta
  • Si S gt 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 !!!!

21
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 ltm,igt 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 lti,agt
  • cada proceso entonces ordena la cola de mensajes
    antes de procesarlos según los números de
    secuencia acordados

22
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.

23
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

24
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 -gt 192.1.2.255
  • Para una subred de 16 hosts 197.84.66.192 -gt
    197.84.66.207
  • Se debe en todo caso especificar el número de
    port

UDPBroadcastClient/Server
25
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
Write a Comment
User Comments (0)
About PowerShow.com