SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
RESUMEN
A continuación en el presente informe se mostrara los resultados obtenidos en el taller
de comunicación entre procesos. En el transcurso del taller se usan protocolos como lo
son TCP (Transmission Control Protocol) y UDP (User Datagram Protocol). A lo largo de la
práctica veremos algunas de sus características así como también veremos cómo da
soporte Java a UDP, tanto para envío unicast, como multicast, de igual manera para TCP.
También se mostrara los resultados de interoperabilidad, accediendo al servidor escrito en
Java mediante un cliente TCP desarrollado en lenguaje C.
INTRODUCCION
Hoy por hoy, los procesos que se ejecutan en una computadora necesitan obtener o
enviar información a otros procesos que se localizan en una computadora diferente, esto
se logra utilizando los protocolos de comunicación TCP y UDP.
UDP es un protocolo no orientado a conexión. O sea para efecto de ejemplo: cuando una
maquina A envía paquetes a una maquina B, el flujo es unidireccional. La transferencia de
datos es realizada sin haber realizado previamente una conexión con la máquina de
destino (maquina B), y el destinatario recibirá los datos sin enviar una confirmación al
emisor (la maquina A)
El protocolo TCP establece un conducto de comunicación punto a punto entre dos
computadoras, lo que quiere decir que cuando se solicita la transmisión de un flujo de
datos entre dos equipos, es decir a diferencia de UDP el TCP si es orientado a conexión, el
protocolo TCP implanta un conducto exclusivo entre dichos equipos para que los datos
sean transmitidos y este perdurará hasta que la transmisión haya finalizado, gracias a esto
TCP garantiza que los datos enviados de un extremo de la conexión lleguen al otro
extremo y en el mismo orden en que fueron enviados. Las características que posee TCP
hacen que el protocolo sea conocido como un protocolo orientado a conexión.
Finalmente, para establecer una comunicación entre estos procesos se emplean sockets,
los sockets forman el mecanismo para la entrega de paquetes de datos provenientes de la
tarjeta de red a los procesos o hilos apropiados. Un socket queda definido por un par de
direcciones IP local y remota, un protocolo de transporte y un par de números de puerto
local y remoto. Los sockets poseen un ciclo de vida dependiendo si son sockets de
servidor, que esperan a un cliente para establecer una comunicación, o socket cliente que
busca a un socket de servidor para establecer la comunicación.
 Método experimental:
Para efectos del taller, se diseñó y desarrolló una interfaz gráfica sencilla usando Java
Swing. El cliente cuenta con un selector de protocolos: UDP, TCP y MultiCast: un spinner
para seleccionar la cantidad de mensajes, y una barra deslizante para seleccionar el
tamaño del paquete. Además, dos campos de texto: respuesta y mensaje, en el primero se
muestran las respuestas del servidor y en el segundo se le envían mensajes.
Para iniciar el programa, es necesario tener instalado el entorno el entorno de desarrollo
NetBeans en su versión 8.0 con una versión del Java SE Development Kit superior a la 8.31.
Para correr el código fuente en lenguaje C, se debe compilar en una maquina con el
sistema operativo Linux, para fines de la practica, se utilizo Virtual Box, un simulador de
sistemas operativos, cabe destacar que aunque no se use Linux de forma nativa en la
maquina, posee las mimas funcionalidades de red, por lo que no afecta la practica del
taller, el software se ejecuto en Linux debían 7.
 Resultados
1. Socket UDP
 Verifique si el servidor detecta la pérdida de mensajes enviados por el cliente.
Variando número de mensajes de acuerdo al viejo cono monetario nacional y el
tamaño en 8, 10, 20, 50 y 100 kb.
La primera prueba consiste en enviar un conjunto de paquetes desde el cliente hasta el
servidor y determinar cuantos paquetes han llegado satisfactoriamente.
Es importante destacar la ubicación del cliente y el servidor, ya que pueden tener distintos
resultados cuando el servidor y el cliente están ubicados en la misma maquina que cuando
están en equipos separados.
Comenzamos realizando la prueba de conexión en la misma maquina, enviando 20
mensajes y variando en cada iteración el tamaño de cada mensaje.
Figura 1. Estado inicial del servidor y el cliente antes de la prueba en la misma maquina, a
la izquierda la ventana del cliente y la derecha el servidor, configurado para enviar 20
paquetes de 8kb de tamaño.
Luego de la prueba, el servidor recibió los 20 paquetes de prueba exitosamente, el cliente
luego de enviar el paquete fue respondido de forma inmediata por el servidor.
Figura 2. Estado final del servidor y el cliente después de la prueba en la misma maquina.
Se obtuvo el mismo resultado al variar el tamaño de los paquetes.
 Modifique el programa cliente para leer repetidamente una entrada de usuario.
Envíe esta entrada al servidor y adapte el código del servidor para responder al
cliente. Establezca un tiempo de espera (timeouts) en el socket para que el cliente
se entere cuando el servidor no responde.
Para comprobar el tiempo de espera del cliente, se envió un mensaje con el servidor
desconectado.
Figura 3. Prueba de tiempo de espera, el cliente (la ventana izquierda) luego de 30
segundos de haber enviado el paquete, notificara al usuario de que el mensaje no se pudo
entregar.
Finalmente se comprueba si un mensaje llega exitosamente al servidor.
Figura 4. Prueba de mensajes, el cliente (la ventana izquierda) envía un mensaje al
servidor, el servidor recibirá el mensaje y enviara una respuesta para notificar al cliente
que su mensaje fue recibido.
2. Socket TCP
 Modifique los programas TCPClient y TCPServer para que el cliente lea
repetidamente varias entradas de usuario de una línea y los escriba en el stream
de datos del cliente. El servidor recibe el stream de datos e imprime el resultado
de cada lectura.
Luego hacer las modificaciones necesarias de los códigos adjuntados para resolver las
peticiones de dicho taller presentamos los siguientes resultados:
El funcionamiento de los Socket que necesitamos para una conexión TCP consta de dos
componentes, en el que podemos distinguir dos tipos de Socket el del Servidor y el del
Cliente.
-Servidor: Para crear los socket se crea un objeto del tipo TCPServer, una vez que hemos
creado el objeto mandamos un parámetro que indicará el puerto por el que se realzará las
comunicaciones.
-Cliente: Para crear los socket se crea un objeto del tipo TCPlient, le indicamos donde se va
a ejecutar el cliente, en nuestro caso indicamos que será en “localhost”.
Para establecer una conexión se fija el protocolo que se desea emplear mediante el
selector de protocolos, en este caso el protocolo usado es el TCP, una vez que se inicia el
servidor el siguiente paso es hacer lo mismo con el cliente, como se puede apreciar en la
figura 1, el cliente establece una conexión satisfactoria con el servidor ejecutado.
Figura 1.
Se procede a hacer la prueba enviando varios mensajes, haciendo que el cliente lea varios
mensajes repetidamente, cada vez más largos que son enviados por el stream de datos, el
servidor recibe todos los mensajes y muestra el resultado de cada lectura, como se puede
evidenciar en la figura 2 y 3.
Figura 2.
Figura 3.
3. UDP Multicast
Use el programa MultiCastPeer con los mismos datos usados en el ejercicio 1, para
establecer las condiciones bajo las cuales un mensaje es perdido por alguno de los
miembros del grupo de multidifusión. Modifique el programa para que el proceso de
envío sea múltiple.
En este apartado podemos darnos cuenta que el Multicast o Multidifusión es un método de
direccionamiento IP. Una dirección multicast está afiliada con un conjunto de receptores
interesados , el emisor envía un único datagrama a la dirección multicast y el router se encargará
de hacer copias y enviarlas a todos los receptores que hayan informado de su interés por los datos
de ese emisor.
Para ingresar a un grupo se utiliza: joinGroup(InetAddress mcastaddr) así, el socket
pertenecerá a un grupo de multidifusión en un puerto dado y recibirá los datagramas
enviados por los procesos en otros computadores a ese grupo en ese puerto. De la misma
manera se puede dejar un grupo invocando el método leaveGroup(InetAddress
mcastaddr) de su socket multicast.
Para enviar datos se emplea el método send(DatagramPacket p, byte ttl), este método es
muy equivalente al de la clase DatagramSocket, la diferencia es que este datagrama será
enviado a todos los miembros del grupo multicast.
Y finalmente para recibir datos de un grupo multicast se utiliza el método
receive(DatagramPacket p) de la clase DatagramSocket superclase de MulticastSocket.
Para esta prueba basta con ejecutar varios clientes, se conectan todos al mismo destino,
por lo que cada mensaje que se envie llegara para todos los sockets conectados al grupo,
como se puede evidenciar en la figura 4.
Figura 4.
4. Multiplataforma:
 Programe un cliente en lenguaje c, plataforma linux, y verifique interoperabilidad
con los servidores de las actividades 1 y 2.
 Programe un nodo en lenguaje c, plataforma linux, y agregue al grupo de
multidifusión en activida 3
Para la prueba de interoperabilidad, se creo un cliente TCP para ejecutarse en una
maquina con Linux.
Desde la maquina nativa Windows, se inicio el servidor TCP desarrollado en Java, mientras
que en Linux Debian se trato de establecer una conexión desde el cliente desarrollado en
C.
Se pudo confirmar una conexión exitosa entre el cliente y el servidor, independiente de su
plataforma o lenguaje desarrollado, ambos pudieron conectarse y también comunicarse
sin problemas.
Figura 1.
CONCLUSION
 UDP no establece una conexión entre el cliente y el servidor, sino que estos se
comunican a través de paquetes enviados entre si.
 En UDP, Para confirmar que un paquete fue entregado desde el cliente al servidor,
el servidor debe de estar siempre a la espera de nuevos paquetes, y al recibir
alguno, reenviar otro paquete para confirmar al cliente que su paquete fue
recibido. El cliente por su parte después de enviar el paquete debe
inmediatamente estar a la espera del paquete.
 Debido a que la llamada al método para recibir paquetes en UDP es bloqueante
(no se ejecutara ninguna línea de código hasta haber recibido el paquete),
normalmente se establece un tiempo de espera al cliente para evitar bloqueos
extensos.
 TCP establece una conexión entre el cliente y el servidor, siendo más segura que el
UDP. Sin embargo siendo más lenta que el UDP.
 A diferencia del UDP, TCP maneja conexiones de flujo de datos entre el cliente y el
servidor.
 El rol del servidor TCP es estar siempre a la escucha de nuevas peticiones de
conexión, una ves recibida una petición, el servidor debe crear un hilo o thread
para el nuevo cliente. Este hilo tendrá como objetivo estar a la espera de nuevos
mensajes, y responderlos apropiadamente.
 UDP Multicast tiene como objetivo realizar transmisión de información sin
importar el destinatario.
 Un cliente multicast es tanto cliente como servidor a la vez.
 Cuando un cliente multicast envía un mensaje, todos aquellos que estén
conectados a la red multicast recibirán el mensaje.
 Se pueden establecer conexiones y comunicación entre distintos sockets
independientes del sistema operativo en el que estén ejecutándose o el lenguaje
de programación en el que se hayan desarrollado.
REFERENCIAS
http://www.binarytides.com/programming-udp-sockets-c-linux/
http://www.linuxhowtos.org/C_C++/socket.htm
http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html

Más contenido relacionado

La actualidad más candente

CMMI v2.0: Más dinámico, ligero y adaptable
CMMI v2.0: Más dinámico, ligero y adaptableCMMI v2.0: Más dinámico, ligero y adaptable
CMMI v2.0: Más dinámico, ligero y adaptableSoftware Guru
 
An SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsAn SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsGiacomo Vacca
 
Mapa Conceptual Servidores web
Mapa Conceptual Servidores webMapa Conceptual Servidores web
Mapa Conceptual Servidores webArturo_09
 
Ataques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptx
Ataques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptxAtaques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptx
Ataques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptxWilsonOrellana11
 
14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...
14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...
14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...Luis Fernando Aguas Bucheli
 
Ejemplo de cuestionario para auditoría de sistemas informáticos
Ejemplo de cuestionario para auditoría de sistemas informáticosEjemplo de cuestionario para auditoría de sistemas informáticos
Ejemplo de cuestionario para auditoría de sistemas informáticosDiana Alfaro
 
Métricas de procesos y proyectos
Métricas de procesos y proyectosMétricas de procesos y proyectos
Métricas de procesos y proyectosjose_macias
 
Marco jurídico de la auditoría informática
Marco jurídico de la auditoría informáticaMarco jurídico de la auditoría informática
Marco jurídico de la auditoría informáticaGalo Lalangui
 
Proyecto de una Red LAN
Proyecto de una Red LANProyecto de una Red LAN
Proyecto de una Red LANOdette Cf
 

La actualidad más candente (20)

CMMI v2.0: Más dinámico, ligero y adaptable
CMMI v2.0: Más dinámico, ligero y adaptableCMMI v2.0: Más dinámico, ligero y adaptable
CMMI v2.0: Más dinámico, ligero y adaptable
 
An SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environmentsAn SFU/MCU integration for heterogeneous environments
An SFU/MCU integration for heterogeneous environments
 
Proyecto ciber
Proyecto ciberProyecto ciber
Proyecto ciber
 
HISTORIA DEL INTERNET EN BOLIVIA
HISTORIA DEL INTERNET EN BOLIVIAHISTORIA DEL INTERNET EN BOLIVIA
HISTORIA DEL INTERNET EN BOLIVIA
 
Iso 15504
Iso 15504Iso 15504
Iso 15504
 
Mapa Conceptual Servidores web
Mapa Conceptual Servidores webMapa Conceptual Servidores web
Mapa Conceptual Servidores web
 
Ataques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptx
Ataques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptxAtaques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptx
Ataques en el Protocolo DHCP Spoofing - Grupo2 -Redes de Computadoras (1).pptx
 
Ensayo IPV6
Ensayo IPV6Ensayo IPV6
Ensayo IPV6
 
14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...
14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...
14 Unidad-4. Aseguramiento de Calidad de Software QA, 4.1. Aplicación del ase...
 
Ejemplo de cuestionario para auditoría de sistemas informáticos
Ejemplo de cuestionario para auditoría de sistemas informáticosEjemplo de cuestionario para auditoría de sistemas informáticos
Ejemplo de cuestionario para auditoría de sistemas informáticos
 
Ofimatica proyecto 2
Ofimatica proyecto 2Ofimatica proyecto 2
Ofimatica proyecto 2
 
2.0.1.2 class activity identify running processes
2.0.1.2 class activity   identify running processes2.0.1.2 class activity   identify running processes
2.0.1.2 class activity identify running processes
 
Real-Time Streaming Protocol
Real-Time Streaming Protocol Real-Time Streaming Protocol
Real-Time Streaming Protocol
 
Áreas Telmex
Áreas Telmex Áreas Telmex
Áreas Telmex
 
Métricas de procesos y proyectos
Métricas de procesos y proyectosMétricas de procesos y proyectos
Métricas de procesos y proyectos
 
PROYECTO DE REDES
PROYECTO DE REDESPROYECTO DE REDES
PROYECTO DE REDES
 
Marco jurídico de la auditoría informática
Marco jurídico de la auditoría informáticaMarco jurídico de la auditoría informática
Marco jurídico de la auditoría informática
 
Modelo propuesta Servicios TIC
Modelo propuesta Servicios TICModelo propuesta Servicios TIC
Modelo propuesta Servicios TIC
 
Proyecto de una Red LAN
Proyecto de una Red LANProyecto de una Red LAN
Proyecto de una Red LAN
 
WebRTC DataChannels demystified
WebRTC DataChannels demystifiedWebRTC DataChannels demystified
WebRTC DataChannels demystified
 

Similar a Análisis de los protocolos TCP y UDP mediante la implementación de sockets en Java y C

Similar a Análisis de los protocolos TCP y UDP mediante la implementación de sockets en Java y C (20)

Comunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidosComunicación entre procesos Sistemas distribuidos
Comunicación entre procesos Sistemas distribuidos
 
Capa de Transporte - Redes de Computadoras
Capa de Transporte - Redes de ComputadorasCapa de Transporte - Redes de Computadoras
Capa de Transporte - Redes de Computadoras
 
Tema iv comunicación entre procesos
Tema iv comunicación entre procesosTema iv comunicación entre procesos
Tema iv comunicación entre procesos
 
programacion_redes_informaticas_clase_3_19042024.pptx
programacion_redes_informaticas_clase_3_19042024.pptxprogramacion_redes_informaticas_clase_3_19042024.pptx
programacion_redes_informaticas_clase_3_19042024.pptx
 
Proyecto final teleprocesamiento
Proyecto final teleprocesamientoProyecto final teleprocesamiento
Proyecto final teleprocesamiento
 
Resumen libro carlos suqui
Resumen libro carlos suquiResumen libro carlos suqui
Resumen libro carlos suqui
 
Networking
NetworkingNetworking
Networking
 
Capa de transporte
Capa de transporteCapa de transporte
Capa de transporte
 
Practica1
Practica1Practica1
Practica1
 
Sistemas operativos distribuidos ii
Sistemas operativos distribuidos iiSistemas operativos distribuidos ii
Sistemas operativos distribuidos ii
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socket
 
11 aplicaciones tcp ip
11 aplicaciones tcp ip11 aplicaciones tcp ip
11 aplicaciones tcp ip
 
Tcp
TcpTcp
Tcp
 
Tutorial de protocolos udp,tcp,sctp
Tutorial de protocolos udp,tcp,sctpTutorial de protocolos udp,tcp,sctp
Tutorial de protocolos udp,tcp,sctp
 
Modelo tcp ip
Modelo tcp ipModelo tcp ip
Modelo tcp ip
 
Sockets tcp
Sockets tcpSockets tcp
Sockets tcp
 
Modelo tcp
Modelo tcpModelo tcp
Modelo tcp
 
Practica cliente servidor java
Practica cliente servidor javaPractica cliente servidor java
Practica cliente servidor java
 
Redes Lan
Redes LanRedes Lan
Redes Lan
 
Capa de transporte jose manosalva
Capa de transporte jose manosalvaCapa de transporte jose manosalva
Capa de transporte jose manosalva
 

Más de Hector L

Seguridad vs Software Libre
Seguridad vs Software Libre Seguridad vs Software Libre
Seguridad vs Software Libre Hector L
 
Seguridad vs Software libre
Seguridad vs Software libreSeguridad vs Software libre
Seguridad vs Software libreHector L
 
Redes en Linux
Redes en LinuxRedes en Linux
Redes en LinuxHector L
 
Tendencias informaticas Hardware
Tendencias informaticas Hardware Tendencias informaticas Hardware
Tendencias informaticas Hardware Hector L
 
Tendencias en redes y telecomunicaciones
Tendencias en redes y telecomunicaciones Tendencias en redes y telecomunicaciones
Tendencias en redes y telecomunicaciones Hector L
 
Gestion de riesgo software
Gestion de riesgo softwareGestion de riesgo software
Gestion de riesgo softwareHector L
 

Más de Hector L (7)

Seguridad vs Software Libre
Seguridad vs Software Libre Seguridad vs Software Libre
Seguridad vs Software Libre
 
Seguridad vs Software libre
Seguridad vs Software libreSeguridad vs Software libre
Seguridad vs Software libre
 
Redes en Linux
Redes en LinuxRedes en Linux
Redes en Linux
 
Tendencias informaticas Hardware
Tendencias informaticas Hardware Tendencias informaticas Hardware
Tendencias informaticas Hardware
 
Unix
UnixUnix
Unix
 
Tendencias en redes y telecomunicaciones
Tendencias en redes y telecomunicaciones Tendencias en redes y telecomunicaciones
Tendencias en redes y telecomunicaciones
 
Gestion de riesgo software
Gestion de riesgo softwareGestion de riesgo software
Gestion de riesgo software
 

Análisis de los protocolos TCP y UDP mediante la implementación de sockets en Java y C

  • 1. RESUMEN A continuación en el presente informe se mostrara los resultados obtenidos en el taller de comunicación entre procesos. En el transcurso del taller se usan protocolos como lo son TCP (Transmission Control Protocol) y UDP (User Datagram Protocol). A lo largo de la práctica veremos algunas de sus características así como también veremos cómo da soporte Java a UDP, tanto para envío unicast, como multicast, de igual manera para TCP. También se mostrara los resultados de interoperabilidad, accediendo al servidor escrito en Java mediante un cliente TCP desarrollado en lenguaje C.
  • 2. INTRODUCCION Hoy por hoy, los procesos que se ejecutan en una computadora necesitan obtener o enviar información a otros procesos que se localizan en una computadora diferente, esto se logra utilizando los protocolos de comunicación TCP y UDP. UDP es un protocolo no orientado a conexión. O sea para efecto de ejemplo: cuando una maquina A envía paquetes a una maquina B, el flujo es unidireccional. La transferencia de datos es realizada sin haber realizado previamente una conexión con la máquina de destino (maquina B), y el destinatario recibirá los datos sin enviar una confirmación al emisor (la maquina A) El protocolo TCP establece un conducto de comunicación punto a punto entre dos computadoras, lo que quiere decir que cuando se solicita la transmisión de un flujo de datos entre dos equipos, es decir a diferencia de UDP el TCP si es orientado a conexión, el protocolo TCP implanta un conducto exclusivo entre dichos equipos para que los datos sean transmitidos y este perdurará hasta que la transmisión haya finalizado, gracias a esto TCP garantiza que los datos enviados de un extremo de la conexión lleguen al otro extremo y en el mismo orden en que fueron enviados. Las características que posee TCP hacen que el protocolo sea conocido como un protocolo orientado a conexión. Finalmente, para establecer una comunicación entre estos procesos se emplean sockets, los sockets forman el mecanismo para la entrega de paquetes de datos provenientes de la tarjeta de red a los procesos o hilos apropiados. Un socket queda definido por un par de direcciones IP local y remota, un protocolo de transporte y un par de números de puerto local y remoto. Los sockets poseen un ciclo de vida dependiendo si son sockets de servidor, que esperan a un cliente para establecer una comunicación, o socket cliente que busca a un socket de servidor para establecer la comunicación.
  • 3.  Método experimental: Para efectos del taller, se diseñó y desarrolló una interfaz gráfica sencilla usando Java Swing. El cliente cuenta con un selector de protocolos: UDP, TCP y MultiCast: un spinner para seleccionar la cantidad de mensajes, y una barra deslizante para seleccionar el tamaño del paquete. Además, dos campos de texto: respuesta y mensaje, en el primero se muestran las respuestas del servidor y en el segundo se le envían mensajes. Para iniciar el programa, es necesario tener instalado el entorno el entorno de desarrollo NetBeans en su versión 8.0 con una versión del Java SE Development Kit superior a la 8.31. Para correr el código fuente en lenguaje C, se debe compilar en una maquina con el sistema operativo Linux, para fines de la practica, se utilizo Virtual Box, un simulador de sistemas operativos, cabe destacar que aunque no se use Linux de forma nativa en la maquina, posee las mimas funcionalidades de red, por lo que no afecta la practica del taller, el software se ejecuto en Linux debían 7.  Resultados 1. Socket UDP  Verifique si el servidor detecta la pérdida de mensajes enviados por el cliente. Variando número de mensajes de acuerdo al viejo cono monetario nacional y el tamaño en 8, 10, 20, 50 y 100 kb. La primera prueba consiste en enviar un conjunto de paquetes desde el cliente hasta el servidor y determinar cuantos paquetes han llegado satisfactoriamente. Es importante destacar la ubicación del cliente y el servidor, ya que pueden tener distintos resultados cuando el servidor y el cliente están ubicados en la misma maquina que cuando están en equipos separados. Comenzamos realizando la prueba de conexión en la misma maquina, enviando 20 mensajes y variando en cada iteración el tamaño de cada mensaje.
  • 4. Figura 1. Estado inicial del servidor y el cliente antes de la prueba en la misma maquina, a la izquierda la ventana del cliente y la derecha el servidor, configurado para enviar 20 paquetes de 8kb de tamaño. Luego de la prueba, el servidor recibió los 20 paquetes de prueba exitosamente, el cliente luego de enviar el paquete fue respondido de forma inmediata por el servidor. Figura 2. Estado final del servidor y el cliente después de la prueba en la misma maquina. Se obtuvo el mismo resultado al variar el tamaño de los paquetes.
  • 5.  Modifique el programa cliente para leer repetidamente una entrada de usuario. Envíe esta entrada al servidor y adapte el código del servidor para responder al cliente. Establezca un tiempo de espera (timeouts) en el socket para que el cliente se entere cuando el servidor no responde. Para comprobar el tiempo de espera del cliente, se envió un mensaje con el servidor desconectado. Figura 3. Prueba de tiempo de espera, el cliente (la ventana izquierda) luego de 30 segundos de haber enviado el paquete, notificara al usuario de que el mensaje no se pudo entregar. Finalmente se comprueba si un mensaje llega exitosamente al servidor.
  • 6. Figura 4. Prueba de mensajes, el cliente (la ventana izquierda) envía un mensaje al servidor, el servidor recibirá el mensaje y enviara una respuesta para notificar al cliente que su mensaje fue recibido. 2. Socket TCP  Modifique los programas TCPClient y TCPServer para que el cliente lea repetidamente varias entradas de usuario de una línea y los escriba en el stream de datos del cliente. El servidor recibe el stream de datos e imprime el resultado de cada lectura. Luego hacer las modificaciones necesarias de los códigos adjuntados para resolver las peticiones de dicho taller presentamos los siguientes resultados: El funcionamiento de los Socket que necesitamos para una conexión TCP consta de dos componentes, en el que podemos distinguir dos tipos de Socket el del Servidor y el del Cliente. -Servidor: Para crear los socket se crea un objeto del tipo TCPServer, una vez que hemos creado el objeto mandamos un parámetro que indicará el puerto por el que se realzará las comunicaciones. -Cliente: Para crear los socket se crea un objeto del tipo TCPlient, le indicamos donde se va a ejecutar el cliente, en nuestro caso indicamos que será en “localhost”. Para establecer una conexión se fija el protocolo que se desea emplear mediante el selector de protocolos, en este caso el protocolo usado es el TCP, una vez que se inicia el servidor el siguiente paso es hacer lo mismo con el cliente, como se puede apreciar en la figura 1, el cliente establece una conexión satisfactoria con el servidor ejecutado.
  • 7. Figura 1. Se procede a hacer la prueba enviando varios mensajes, haciendo que el cliente lea varios mensajes repetidamente, cada vez más largos que son enviados por el stream de datos, el servidor recibe todos los mensajes y muestra el resultado de cada lectura, como se puede evidenciar en la figura 2 y 3.
  • 8. Figura 2. Figura 3. 3. UDP Multicast Use el programa MultiCastPeer con los mismos datos usados en el ejercicio 1, para establecer las condiciones bajo las cuales un mensaje es perdido por alguno de los miembros del grupo de multidifusión. Modifique el programa para que el proceso de envío sea múltiple. En este apartado podemos darnos cuenta que el Multicast o Multidifusión es un método de direccionamiento IP. Una dirección multicast está afiliada con un conjunto de receptores interesados , el emisor envía un único datagrama a la dirección multicast y el router se encargará de hacer copias y enviarlas a todos los receptores que hayan informado de su interés por los datos de ese emisor. Para ingresar a un grupo se utiliza: joinGroup(InetAddress mcastaddr) así, el socket pertenecerá a un grupo de multidifusión en un puerto dado y recibirá los datagramas enviados por los procesos en otros computadores a ese grupo en ese puerto. De la misma manera se puede dejar un grupo invocando el método leaveGroup(InetAddress mcastaddr) de su socket multicast. Para enviar datos se emplea el método send(DatagramPacket p, byte ttl), este método es muy equivalente al de la clase DatagramSocket, la diferencia es que este datagrama será enviado a todos los miembros del grupo multicast. Y finalmente para recibir datos de un grupo multicast se utiliza el método receive(DatagramPacket p) de la clase DatagramSocket superclase de MulticastSocket.
  • 9. Para esta prueba basta con ejecutar varios clientes, se conectan todos al mismo destino, por lo que cada mensaje que se envie llegara para todos los sockets conectados al grupo, como se puede evidenciar en la figura 4. Figura 4. 4. Multiplataforma:  Programe un cliente en lenguaje c, plataforma linux, y verifique interoperabilidad con los servidores de las actividades 1 y 2.  Programe un nodo en lenguaje c, plataforma linux, y agregue al grupo de multidifusión en activida 3 Para la prueba de interoperabilidad, se creo un cliente TCP para ejecutarse en una maquina con Linux. Desde la maquina nativa Windows, se inicio el servidor TCP desarrollado en Java, mientras que en Linux Debian se trato de establecer una conexión desde el cliente desarrollado en C. Se pudo confirmar una conexión exitosa entre el cliente y el servidor, independiente de su plataforma o lenguaje desarrollado, ambos pudieron conectarse y también comunicarse sin problemas.
  • 11. CONCLUSION  UDP no establece una conexión entre el cliente y el servidor, sino que estos se comunican a través de paquetes enviados entre si.  En UDP, Para confirmar que un paquete fue entregado desde el cliente al servidor, el servidor debe de estar siempre a la espera de nuevos paquetes, y al recibir alguno, reenviar otro paquete para confirmar al cliente que su paquete fue recibido. El cliente por su parte después de enviar el paquete debe inmediatamente estar a la espera del paquete.  Debido a que la llamada al método para recibir paquetes en UDP es bloqueante (no se ejecutara ninguna línea de código hasta haber recibido el paquete), normalmente se establece un tiempo de espera al cliente para evitar bloqueos extensos.  TCP establece una conexión entre el cliente y el servidor, siendo más segura que el UDP. Sin embargo siendo más lenta que el UDP.  A diferencia del UDP, TCP maneja conexiones de flujo de datos entre el cliente y el servidor.  El rol del servidor TCP es estar siempre a la escucha de nuevas peticiones de conexión, una ves recibida una petición, el servidor debe crear un hilo o thread para el nuevo cliente. Este hilo tendrá como objetivo estar a la espera de nuevos mensajes, y responderlos apropiadamente.  UDP Multicast tiene como objetivo realizar transmisión de información sin importar el destinatario.  Un cliente multicast es tanto cliente como servidor a la vez.  Cuando un cliente multicast envía un mensaje, todos aquellos que estén conectados a la red multicast recibirán el mensaje.  Se pueden establecer conexiones y comunicación entre distintos sockets independientes del sistema operativo en el que estén ejecutándose o el lenguaje de programación en el que se hayan desarrollado.