Comunicación entre procesos: sockets udp. Jorge Iván Meza Martínez

Documentos relacionados
Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda

Sockets UDP. Arquitecturas Cliente/Servidor, Sem M.I.Yasmine Macedo Reza

Arquitecturas cliente/servidor

Tema 3: COMUNICACIÓN ENTRE PROCESOS

Aplicaciones Cliente-Servidor Con Datagramas

Material Apoyo Práctica 2. Programación de la interfaz de acceso a los servicios de transporte de Internet en JAVA

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2)

Tema II. Sockets. Desarrollo de Aplicaciones para Internet Curso Miguel Reboiro Jato

Arquitecturas cliente/servidor

Conexión TCP Servidor

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

Introducción a las Redes de Computadoras

Introducción a las Redes de Computadoras. Capa de aplicación. Programación con Sockets. Capitulo 2 Capa de Aplicación

Unidad 4. Introducción a los sistemas distribuidos

UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA

Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Contenido. Comunicación entre Procesos. Contenido. Definición. Definición Fundamentos

Redes de Computadores Nivel de Transporte: Introducción + UDP

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

Federico Peinado

Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense de Madrid.

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Redes (9359). Curso Ingeniería Técnica en Informática de Sistemas (plan 2001)

Capa Aplicación: Programación de sockets

Redes (9359). Curso Ingeniería Técnica en Informática de Sistemas (plan 2001)

Capa Aplicación: Programación de sockets

Problema de agotamiento de direcciones

PROGRAMACION DISTRIBUIDA

Red LSUB. 4 de marzo de 2015 GSYC

Universidad de Cantabria

UDP Tema 3.- Nivel de transporte en Internet

Capítulo 5. Programación de aplicaciones de red

PROGRAMACION DISTRIBUIDA

APLICACIONES TELEMÁTICAS

Comunicación entre procesos: sockets tcp. Jorge Iván Meza Martínez

Capítulo 3: Capa Transporte - I

Práctica 3: Introducción a los sockets en Java

Propósito de la capa de transporte

1.- FUNDAMENTOS FUNCIONAMIENTO GENÉRICO JAVA SOCKETS Creación de Streams de Entrada...7

Capítulo 4. Transporte UDP y TCP. Redes de Ordenadores 2º Grado en Ingeniería en Tecnologías de Telecomunicación

Capa Aplicación: Programación de sockets

Examen de Redes - Primer Parcial - ETSIA - 17 de Junio de 2005

PROTOCOLOS DE RED SMTP

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

Direcciones IP y puertos

EL LENGUAJE DE PROGRAMACIÓN JAVA TM

LABORATORIO DE RC PRÁCTICA 2: IMPLEMENTACIÓN DE UN CLIENTE Y SERVIDOR DE

La pila TCP/IP es la familia de protocolos que dirige el internet actual. Mientras otros protocolos también se usa en redes de computador, TCP/IP es

Examen de prácticas de Programación 1

2.4 Sockets sockets cliente/servidor servidor cliente

Introducción a redes Ing. Aníbal Coto Cortés

Curso de Java Java Redes

Servicios de Internet

Sistemas Distribuidos ITInformática (UVA) César Llamas Bello - Febrero 2003

Java: comunicación en Internet. Modem. Satelite UMTS W-LAN. Láser. Fibra óptica. Conceptos básicos

Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Invocación remota de métodos. Jorge Iván Meza Martínez

Nivel de transporte: UDP

Protocolos de transporte y aplicación

1 SOCKETS EN JAVA. Sistemas Distribuidos::Sockets en Java EUI-SG/INFOR.UVA.ES 1

Sistemas Distribuidos -Comunicación entre Procesos (IPC)

Servicios de Internet

Invocación de Métodos Remotos: Prácticas de Laboratorio

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

Capa de Transporte del modelo TCP/IP

Programa Formativo. Código: Curso: Programación con JAVA 8 SE Standard Edition Modalidad: ONLINE Duración: 120h.

Formato para prácticas de laboratorio

Desarrollo de Aplicativos con winsockets

PROCESAMIENTO DISTRIBUIDO

Examen Final de Redes - ETSIA - 1 de Junio de 2007


Nivel de Transporte en Internet

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Práctica 4: Desarrollo de clientes bajo TCP y UDP.

Bloque III: El nivel de transporte. Tema 5: UDP y TCP

Capa de Transporte del modelo OSI

Protocolos. Ventajas de un Sistema Distribuidos

El nivel de transporte

Posibles implementaciones

Protocolos de Telecomunicaciones. Semana 3, Capas de Transporte y Red

Lab 01: Programación de Sockets en TCP

Interfaz de Socket. Agustín J. González ELO309 ELO309 1

TCP Transmission Control Protocol

Visualizador del examen - ENetwork Chapter 4 - CCNA Exploration: Network Fundamentals (Versión 4.0)

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Sistemas de Transportes de Datos (STD) Tema III: UDP Y TCP (Entrega 1) Nivel de. Proceso. Nivel de Transporte. Nivel de Red.

Capítulo 3: Capa Transporte - I

Examen de Redes - ETSIA - 11 de septiembre de 2007

Programación para redes con Java

Tema 7. Programacion en red.

Teoría de las Comunicaciones

Guía del Curso Especialista TIC en Programación con JAVA 8 SE Standard Edition

PROTOCOLO FTP PROTOCOLO DE TRANSFERENCIA DE ARCHIVOS ING. RAUL BAREÑO GUTIERREZ RAUL BAREÑO GUTIERREZ 1

GUÍA DE ESTUDIO TEMA 2. MODELO OSI. ESTÁNDARES Y PROTOCOLOS. MODELO TCP/IP.

Transcripción:

Comunicación entre procesos: sockets udp Jorge Iván Meza Martínez jimezam@gmail.com Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia Sede Manizales 1/31

Contenidos Conceptos generales de sockets Tipos de envío y recepción Síncronos Asíncronos 2/31

Evaluación pre-contenido 1. Qué es un socket? 2. Qué tipos de socket existen? 3. Qué información requiere un socket cliente para realizar su conexión con el servidor? 4. Cuáles son las primitivas principales de los sockets? 5. Qué significa que estas primitivas sean síncronas o asíncronas? 3/31

Soporte a sockets 4/31

Envío síncrono Send (cualquier puerto) Msg Buffer (dirección IP, puerto) Buffer Emisor La comunicación está sincronizada. Las primitivas son bloqueantes. Receptor Receive 5/31

Envío asíncrono Send (cualquier puerto) (dirección IP, puerto) Msg Buffer Emisor La comunicación no está sincronizada. El envío es no bloqueante. La recepción puede ser bloqueante o no bloqueante. Receptor Buffer Receive 6/31

Sockets Proveen comunicación entre procesos que pueden estar en la misma o diferentes máquinas. Creado inicialmente para BSD Unix. Se asocian a una dirección IP y un puerto (2 16 ) específicos (cliente / servidor). Es responsabilidad del desarrollador la representación del mensaje. A través del mismo socket se puede leer y escribir. Están asociados a TCP o UDP. 7/31

Esquema general de la conexión 8/31

Primitivas de los Sockets Conectarse a un servidor remoto Enviar información Recibir información Cerrar una conexión Asociarse a un puerto Escuchar por información entrante Aceptar conexiones remotas por el puerto asociado 9/31

Evaluación post-contenido 1. Qué es un socket? 2. Qué tipos de socket existen? 3. Qué información requiere un socket cliente para realizar su conexión con el servidor? 4. Cuáles son las primitivas principales de los sockets? 5. Qué significa que estas primitivas sean síncronas o asíncronas? 10/31

Sockets con User Datagram Protocol (UDP) 11/31

Contenidos Conceptos generales de los sockets UDP. Ventajas y desventajas de los sockets UDP. Usos mas frecuentes para los sockets UDP. Flujo de eventos durante una comunicación utilizando sockets UDP. Implementación de una conexión con sockets UDP en Java. 12/31

Evaluación pre-contenido 1. Cuáles es la característica principal de los sockets UDP? 2. Cuáles son las ventajas y desventajas de utilizar sockets UDP? 3. Para qué tipo de aplicaciones o servicios es idóneo el uso de sockets UDP y para cuales no? 13/31

Características de los sockets UDP RFC 768. Son no orientados a conexión. No se garantiza la presencia del destino ni la existencia de una ruta. Los mensajes son enviados en paquetes o datagramas. Distintos datagramas de un mismo mensaje pueden utilizar distintos caminos para llegar a su destino. Por este motivo pueden llegar en desórden (unos tardan mas que otros) o inclusive, no llegar. 14/31

Datagramas UDP 15/31

Tamaño del Datagrama Tamaño máximo: 64KB incluyendo el mensaje (payload) y diversas cabeceras (headers). Mejor tamaño? Criterios rlogin pequeño (1 letra). tftp grandes Red poco confiable pequeños Red confiable grandes En general 8KB es una buena opción. 16/31

Sockets UDP Rápidos pero no fiables. Analogía: el modelo del correo postal. 17/31

Modelo de fallos de UDP No incluye mensaje de reconocimiento (acknowledge) o reintentos en caso de problemas menor sobrecarga (tamaño). Los paquetes pueden no llegar en su totalidad. Los paquetes pueden llegar desordenados. Incluye una suma de verificación (checksum). Los paquetes pueden ser desechados en ciertas condiciones: exceso de tráfico, buffer lleno, etc. 18/31

Usos de sockets UDP Útil en servicios que puedan tolerar pérdidas ocasionales: DNS (búsqueda) DHCP BOOTP SNMP VoIP Audio y video streaming 19/31

Sockets UDP 20/31

Implementación Java de sockets UDP DatagramSocket socket UDP que envía y recibe datagramas. DatagramPacket - mensaje a ser enviado a través de una conexión UDP. InetAddress dirección IP (v4 o v6) SocketException - error sucedido creando o accediendo a un socket. IOException - Error genérico de E/S. 21/31

Servidor UDP Java (general) DatagramSocket asocket = new DatagramSocket(8989); byte[] buffer = new byte[1000]; DatagramPacket request = new DatagramPacket(buffer, buffer.length); asocket.receive(request); DatagramPacket reply = new DatagramPacket (data.getbytes(), data.getbytes().length, request.getaddress(), request.getport()); asocket.send(reply); 22/31

Cliente UDP Java (general) DatagramSocket asocket = new DatagramSocket(); byte[] m = new String("Mensaje").getBytes(); InetAddress ahost = InetAddress.getByName("127.0.0.1"); int serverport = 8989; DatagramPacket request = new DatagramPacket(m, m.length, ahost, serverport); asocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); asocket.receive(reply); 23/31

Como ejecutar el ejemplo: GritonUDP Compilar las clases (manualmente o utilzar Netbeans) $ javac *.java Ejecutar el servidor $ java GritonUDPServer Ejecutar el cliente (en otra consola) Verificar que los nombres y la extensión de los archivos coincidan. Incluyendo las mayúsculas y minúsculas. $ java GritonUDPClient 24/31

Implementación Java de sockets UDP Hola mamá estoy triunfando en programación 1010010011101011 200 OK true 625 25/31

Implementación Java de sockets UDP ByteArrayInputStream flujo de datos construído a partir de un buffer interno. DataInputStream permite leer tipos primitivos de datos desde un flujo. 26/31

Cliente UDP Java (payload no es String) //... DatagramPacket request = new DatagramPacket(m, m.length, ahost, serverport); asocket.send(request); DatagramPacket reply = new DatagramPacket(buffer, buffer.length); asocket.receive(reply); InputStream in = new ByteArrayInputStream(reply.getData(), reply.getoffset(), reply.getlength()); DataInputStream din = new DataInputStream(in); // readboolean(), readbyte(), readchar(), readfloat(),... 27/31

Ejemplo: escaner de puertos UDP local import java.net.*; public class UDPPortScanner { public static void main(string[] args) { for (int port = 1024; port <= 65535; port++) { try { DatagramSocket server = new DatagramSocket(port); server.close( ); } catch (SocketException ex) { System.out.println("There is a server on port " + port + "."); } // end try } // end for } } 28/31

29/31

Evaluación pre-contenido 1. Cuáles es la característica principal de los sockets UDP? 2. Cuáles son las ventajas y desventajas de utilizar sockets UDP? 3. Para qué tipo de aplicaciones o servicios es idóneo el uso de sockets UDP y para cuales no? 30/31

Actividad Desarrollar una aplicación Java basada en datagramas con sockets que implemente una calculadora cliente-servidor. Desde el cliente se le enviarán solicitudes de operaciones como 4 + 9 5 a través de la línea de comando y el servidor enviará de vuelta al cliente el resultado: 8. Para esto considere las operaciones aritméticas básicas (+, -, *, /) y no tenga en cuenta la precedencia de los operadores. Investigar como evitar en Java que un receive en el cliente no bloquee infinitamente la aplicación cuando no reciba una respuesta del servidor en un tiempo prudencial. 31/31