Lab 01: Programación de Sockets en TCP



Documentos relacionados
ARQUITECTURAS CLIENTE/SERVIDOR

Arquitecturas cliente/servidor

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

Curso de Redes Computadores 1 Tema 3 Introducción a la capa de transporte. Interfaz de programación en redes. Sockets.

INTERNET 4º ESO INFORMATICA / DEP. TECNOLOGIA

Introducción a las Redes de Computadoras. Obligatorio

Modelo de Objetos Distribuidos

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Lab 05: Redes Inalámbricas

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

Federico Peinado

La vida en un mundo centrado en la red

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

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

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

1. Definición de puerto 2. Sockets 3. Conceptos cliente/servidor 4. Definición de Stream 5. Concurrencia, multiprogramación y multitarea 6.

Servidor FTP. Ing. Camilo Zapata Universidad de Antioquia

DIPLOMADO EN SEGURIDAD INFORMATICA

Aplicaciones Cliente/Servidor en Gambas Prof: Mileti, P.

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

INSTITUTO TECNOLÓGICO DE SALINA CRUZ. Fundamentos De Redes. Semestre Agosto-Diciembre Reporte De Lectura

TEMA: PROTOCOLOS TCP/IP

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

Crear un servidor Web en IIS

Host. En este texto, entenderemos por host toda máquina - léase computadora. Cuenta. Una cuenta, en general, es un espacio de memoria y de disco que

FUNDAMENTOS DE REDES CONCEPTOS DE LA CAPA DE APLICACIÓN

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial

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

PREPARATORIA DIURNA DE CUAUTLA

Las clases Java Socket y ServerSocket

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA

Internet, conceptos básicos

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

Servidor FTP en Ubuntu Juan Antonio Fañas

Configuración de Aspel-SAE 5.0 para trabajar Remotamente

Comunicacion en Java. Alejandro Escobar

Redes y Telecomunicaciones II

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

Configuración de Aspel-SAE 6.0 para trabajar Remotamente

Lab: Wireshark - DNS 1

Crear un servidor FTP

Nivel aplicación Interacción Cliente Servidor. ELO322: Redes de Computadores Agustín J. González

Capa de Aplicación (Parte 2 de 2)

Conceptos básicos de redes TCP/IP

Integración de Laboratorios Remotos en emersion

Aspectos Básicos de Networking

TELECOMUNICACIONES Y REDES

Enlace web remoto a travez de SSh Juan Badilla Riquelme Anibal Espinoza Moraga Cesar Reyes Pino

Práctica 2: Java Remote Method Invocation (RMI)

Crear un servidor FTP

Sockets. Introducción. Las redes de computadoras permiten al usuario. Curso Propedéutico Maestría en Ciencias de la Computación BUAP

Práctica de laboratorio Configuración TCP/IP de red para PC

Reflexión. Inicio. Contenido

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

Paradigma cliente-servidor

Introducción a las Redes de Computadoras

Comunicación entre Procesos y Sockets

Estructuras de Sistemas Operativos

Facultad de Ciencias del Hombre y la Naturaleza SISTEMAS OPERATIVOS DE REDES CICLO II Materia: Sistemas Operativos de Redes Tema:

SOLUCIÓN ACTIVIDAD. Diagrama de topología Red punto a punto Redes conmutadas. Objetivos de aprendizaje. Información básica

Tema 4.1: - TRANSPORTE-

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

I. Verdadero o Falso (16 puntos)

ASP.NET. Prof. Gina Huertas Camacho

Telnet Comunicaciones 1. Luis Alfredo da Silva Gregori Gonzalez Rhamin Elrhouate July 2014

RMI [Remote Method Invocation]

Paradigma cliente-servidor

Programación para redes con Java

Práctica de laboratorio 4.5.2: Protocolos de la capa de Transporte TCP/IP, TCP y UDP Diagrama de topología

Capitulo 5. Implementación del sistema MDM

LA ARQUITECTURA TCP/IP

2. Qué dispositivo se debe utilizar para enrutar un paquete a una red remota? A switch de acceso B servidor de DHCP C hub D router

Como crear un túnel entre dos PC s usando el Protocolo SSH

Gracias a ese IP único que tiene cada ordenador conectado a la red de internet se pueden identificar y comunicar los ordenadores.

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

CAPITULO 2 COMUNICACION ATRAVES DE LA RED

Manual de uso para la aplicación cliente para uso de FTP, FTPS y SFTP Configuración de Filezilla *

Práctica de laboratorio 3.4.2: Administración de un servidor Web Diagrama de topología

Trabajo Práctico N 2

CAPITULO 3 MOVILIDAD EN LA NAVEGACIÓN Y ALMACENAMIENTO EN BASES DE DATOS

Configuración de Aspel-BANCO 4.0 para trabajar Remotamente

Redes de Computadoras Junio de Teoría y problemas

Uso del Shield Ethernet con Arduino

Práctica 6 - Página Web

CONCEPTOS BÁSICOS. HTML (Hypertext Markup Language) lenguaje de marcas de hipertexto Es el lenguaje en el que están escritas las páginas de la Web.

Cátedra de Sistemas Distribuidos Escuela de Ingeniería Electrónica Departamento de Sistemas e Informática

Internet y sus Servicios

ENVÍO DE POR MEDIO DE SMTP

Manual de Usuario CPE OX330. Manual de Usuario CPE OX330

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

TELNET SSH FTP. Redes de Computadoras. 1º Cuatrimestre Adrian Juri Juan Pablo Moraes Patricio Tella Arena

CFGM. Servicios en red. Unidad 2. El servicio DHCP. 2º SMR Servicios en Red

Transcripción:

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO Departamento Académico de Informática REDES Y TELECOMUNICACIONES 2 Lab 01: Programación de Sockets en TCP Ingº Manuel Peñaloza Figueroa Dime y lo olvidaré. Muéstrame y lo recordaré. Involúcrame y lo entenderé Proverbio chino 1. OBJETIVOS: 1.1 Entender lo básico de la comunicación por redes. 1.2 Programar aplicaciones de red usando sockets. 1.3 Aprender como construir aplicaciones cliente/servidor que se comunican usando sockets 1.4 Aprender el uso de sockets en Java. 2. BASE TEORICA COMPLENTARIA Capa de Transporte: - Puede ofrecer a sus usuarios un sistema transparente de intercambio de datos confiable, operando de extremo a extremo (end-to-end). - La capa de transporte es la responsable por la entrega proceso-a-proceso la entrega de un paquete, la parte de un mensaje, desde un proceso a otro.

TCP: Transmission Control Protocol - RFC 793 - Transporte/Servicio orientado a la conexión - Protocolo de transporte de Internet - Transferencia de datos full-dúplex - Transporte confiable: Control: o de transmisión o de flujo o de errores o de congestión de red o... - Provee servicio a la capa de aplicación - Adaptable a LAN/WAN - Transferencia de un stream de bytes entre sistemas finales (end-to-end) - - Cuando 2 aplicaciones desean comunicarse el uno al otro confiablemente, ellos establecen una conexión y envían datos de una parte a la otra sobre esa conexión. - TCP provee un canal punto-a-punto para aplicaciones que requieren comunicaciones confiables. o HTTP (HyperText Transfer Protocol), FTP (File Transfer Protocol), y Telnet son algunos ejemplos de aplicaciones que requieren un canal de comunicación confiable. o El orden en la cual los datos son enviados y recibidos sobre la red es crítico para el éxito de estas aplicaciones. o Cuando HTTP es usado para leer desde un URL, los datos tienen que ser recibidos en el orden en el cual fueron enviados. De otra manera, se acabaría con un archivo HTML revuelto, un archivo ZIP corrupto, ó alguna otra información inválida. Puertos: - En general, una computadora tiene una simple conexión física a la red. o Todos los datos destinados a una computadora en particular llega a través de esa conexión. o Sin embargo, los datos puede ser pretendidos por diferentes aplicaciones

o corriendo en el mismo computador. Así como la computadora sabe a cual aplicación reexpedir los datos? A través del uso de los puertos - Cada proceso que desea comunicarse con otro proceso se identifica a si mismo para la suite de protocolos TCP/IP por 1 ó más puertos. - Los datos trasmitidos por el Internet están acompañados por información de direccionamiento que identifica a la computadora y al puerto para el cual están destinados. o o La computadora está identificada por su dirección IP de 32-bit. Los puertos son identificados por un número de 16-bit, los cuales TCP y UDP usan para entregar los datos a la aplicación correcta. - Hay 2 tipos de puertos: o "Well-known" ó bien-conocidos: 0: reservado 1 1023: procesos servidor o Efímeros: 1023-65535: usuarios, clientes - Sin embargo, el IETF IANA define 3 rangos de puertos: o Puertos Well-Known ó bien-conocidos rango: 0 1023 son asignados por el IANA o Puertos Registrados rango: 1024 49151 no deberían ser usados sin el registro del IANA o Puertos Dinámicos y/o Privados rango: 49152 65535 típicamente usados como puerto fuente por clientes TCP ó UDP. Socket: - una interface: o en el host local o creada por la aplicación o controlada por el SO (una "puerta") dentro de la cual el proceso de aplicación puede tanto enviar como recibir mensajes a/desde otro proceso de aplicación

- Conexiones: o Normalmente, un servidor corre sobre una computadora específica y tiene un socket que está LIGADO al número de puerto respectivo. o El servidor justamente espera, escuchando al socket por un cliente haga una petición de conexión. o En el lado del cliente: el cliente sabe el nombre_de_host de la máquina en el cual el servidor está corriendo y el número de puerto en el cual el servidor esta escuchando. Para hacer una petición de conexión, el cliente intenta citarse con el servidor en la máquina y puerto del servidor. El cliente también necesita identificar a si mismo al servidor así se liga a un puerto local que usará durante la conexión (el número de puerto es usualmente asignado por el sistema). o Si todo va bien, el servidor acepta la conexión. A la aceptación, el servidor obtiene un nuevo socket ligado a su mismo puerto local y también tiene su socket seteado a la dirección y puerto del cliente. El servidor necesita este nuevo socket a fin de poder continuar escuchando en el socket original por peticiones de conexión de otros clientes mientras atiende ó sirve a las necesidades del cliente conectado.

o o En el lado del cliente, si la conexión es aceptada, un socket es satisfactoriamente creado y el cliente puede usar este socket para comunicarse con el servidor. El cliente y el servidor pueden ahora comunicarse con escribir A ó leer DESDE sus sockets. - El par <dirección IP>, <Nº de puerto> brinda una identificación única para los servicios de capa de aplicación en un host, y sirve para identificar a un socket. o Cada lado de una conexión TCP tiene un socket que puede ser identificado por: la 3-tupla <TCP, dirección IP, # puerto> ó la 2-tupla <dirección IP, # puerto>. o Si 2 procesos están comunicándose sobre TCP, ellos tienen una conexión lógica que es de una manera única identificable por los 2 sockets involucrados, esto es, por: una 5-tupla <TCP, dirección IP local, # puerto local, dirección IP remota, # puerto remoto> ó una 4-tupla <dirección IP local, # puerto local, dirección IP remota, # puerto remoto>. o Entonces, una conexión TCP está identificada por un par de sockets (el del cliente y el del servidor) en ambos extremos. 3. RECURSOS Los recursos a utilizar en el trabajo de laboratorio son: 3.1 Java 4. DESARROLLO DE LA PRACTICA: En el presente trabajo de laboratorio se visualizará el estado de las conexiones TCP y se implementará tanto un cliente que envía datos en minúscula a un servidor, como un servidor que recibe datos en minúscula desde un cliente y lo devuelve de regreso pero en mayúsculas haciendo uso del lenguaje Java. 4.1 Estado de las conexiones TCP: - abrir una ventana DOS - en el Prompt de comandos tipear: netstat o muestra las conexiones, puertos de escucha, estado de las conexiones y

estadísticas por protocolo (-a) 4.2 Escribir una aplicación cliente/servidor que implemente el servicio CAMBIAR DATOS EN MINUSCULAS A MAYUSCULAS. - En la programación de sockets, la estructura del programa es en mucho el mismo: Abrir un socket Abrir un stream de entrada y un stream de salida para el socket. Leer desde y escribir hacia el stream conforme al protocolo del servidor. Cerrar los streams. Cerrar el socket. - Ejemplo: aplicación cliente-servidor: APLICACIÓN CLIENTE: 1. Pre-condición: El proceso servidor debe estar 1ro. en ejecución 2. Cliente lee la línea desde la entrada estándar (stream indesdeusuario), y lo envía al server vía socket (stream outalserver) 3. El servidor lee la línea desde el socket. 4. El server convierte la línea a mayúsculas, lo envía de regreso al cliente 5. Cliente lee, imprime la línea modificada desde el socket (indesdeserver)

- APLICACIÓN SERVIDOR Y CLIENTE: -

APLICACIÓN CLIENTE: ClienteTCP.java /* */ import java.io.*; import java.net.*; class ClienteTCP { public static void main(string argv[]) throws Exception { // variables String sentencia; String sentenciamodificada; // crear un stream de entrada para la entrada del usuario BufferedReader indesdeusuario = new BufferedReader(new InputStreamReader(System.in)); // crear socket cliente y conectarse al server Socket socketcliente = new Socket("id_Servidor", 6789); // crear un stream de salida ligado al socket DataOutputStream outalservidor = new DataOutputStream(socketCliente.getOutputStream()); // crear un stream de entrada ligado al socket BufferedReader indesdeservidor = new BufferedReader(new InputStreamReader(socketCliente.getInputStream())); // leer entrada sentencia = indesdeusuario.readline(); // enviar la entrada al server outalservidor.writebytes(sentencia + '\n'); // leer paquete de réplica del server sentenciamodificada = indesdeservidor.readline(); System.out.println("RESPUESTA DESDE EL SERVER: " + sentenciamodificada); // cerrar socketcliente.close(); } } APLICACIÓN SERVIDOR: ServidorTCP.java /* */

import java.io.*; import java.net.*; class ServidorTCP { public static void main(string argv[]) throws Exception { String sentenciacliente; String sentenciaenmay; // crear el socket servidor (TCP) en el puerto 6789 ServerSocket socketservidor = new ServerSocket(6789); while(true) { // el socket servidor espera, escuchando por contacto por el cliente, // si lo acepta un nuevo socket es creado y la conexión es hecha Socket socketconexion = socketservidor.accept(); // crear un stream de entrada ligado al socket BufferedReader indesdecliente = new BufferedReader( new InputStreamReader(socketConexion.getInputStream())); // crear un stream de salida ligado al socket DataOutputStream outalcliente = new DataOutputStream(socketConexion.getOutputStream()); // leer el mensaje desde el socket sentenciacliente = indesdecliente.readline(); // construir respuesta sentenciaenmay = sentenciacliente.touppercase() + '\n'; } } } // escribir el mensaje al socket outalcliente.writebytes(sentenciaenmay); - En Windows abrir 2 ventanas DOS, e ir al directorio donde se encuentran los programas fuente. - Si necesario, en ambas ventanas, establecer la ruta al compilador y al intérprete de Java SET PATH=%PATH%;C:\Archivos de programa\java\jdk1.6.0\bin - En cada ventana, compilar el correspondiente archivo de Java javac ClienteTCP.java javac ServidorTCP.java - En la ventana del servidor ejecutar la aplicación servidor java ServidorTCP

- En la ventana del cliente ejecutar la aplicación cliente. java ClienteTCP - (comentarios) 5. CONTROL: TRABAJOS DE LABORATORIO. 5.1 Investigar y documentar en netstat las opciones: -n, -r, -b 5.2 Investigar y documentar en netstat opciones sobre las interfaces presentes en la PC. 5.3 La asistencia al laboratorio se considera como tal si se cumple con lo solicitado en 4.