lab01 - programacion de sockets en tcp.desbloqueado

Upload: keny-orlando-m-cano

Post on 05-Jul-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    1/10

    UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCODepartamento Académico de Informática

    REDES Y TELEPROCESO 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 cómo construir aplicaciones cliente/servidor que se comunican usandosockets

    1.4   Aprender el uso de sockets en ava.

    2.  BASE TEORICA COMPLENTARIA 

    Capa de Transporte: 

    !  Puede o"recer a sus usuarios un sistema transparente de intercambio de datos con"iable#operando de e$tremo a e$tremo %end!to!end&.

    !  'a capa de transporte es la responsable por la entrega proceso!a!proceso ( la entregade un paquete# la parte de un mensa)e# desde un proceso a otro.

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    2/10

     TCP: Transmission Control Protocol

    !  *+, -3!  ransporte /0ervicio orientado a la cone$ión!  Protocolo de transporte de nternet!  rans"erencia de datos "ull!dple$

    !  ransporte con"iable,ontrolo  de transmisióno  de "lu)oo  de erroreso  de congestión de redo  ...

    !  Provee servicio a la capa de aplicación!   Adaptable a 'A/5A!  rans"erencia de un stream de bytes  entre sistemas "inales %end!to!end&!  6

    !  ,uando 2 aplicaciones desean comunicarse el uno al otro con"iablemente# ellosestablecen una cone$ión 7 env8an datos de una parte a la otra sobre esa cone$ión.

    !  ,P provee un canal punto!a!punto para aplicaciones que requieren comunicacionescon"iables.

    o  9P %97pere$t rans"er Protocol +P %+ile rans"er Protocol 7 elnet sonalgunos e)emplos de aplicaciones que requieren un canal de comunicación

    con"iable.o  El orden en la cual los datos son enviados 7 recibidos sobre la red es cr8tico para

    el :$ito de estas aplicaciones.o  ,uando 9P es usado para leer desde un ;*'# los datos tienen que ser

    recibidos en el orden en el cual "ueron enviados. ' revuelto# un arc=ivo ?P corrupto# ó alguna otrain"ormación inválida.

    Puertos:

    !  En general# una computadora tiene una simple cone$ión "8sica a la red.o  odos los datos destinados a una computadora en particular llega a trav:s de

    esa cone$ión.o  0in embargo# los datos puede ser pretendidos por di"erentes aplicaciones

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    3/10

    corriendo en el mismo computador.o  @As8 como la computadora sabe a cuál aplicación ree$pedir los datos

    A través del uso de los puertos

    !  ,ada proceso que desea comunicarse con otro proceso se identi"ica a s8 mismo parala suite de protocolos ,P/P por 1 ó más puertos.

    !  'os datos trasmitidos por el nternet están acompaBados por in"ormación dedireccionamiento que identi"ica a la computadora 7 al puerto para el cual estándestinados.

    o  'a computadora está identi"icada por su dirección P de 32!bit.o  'os puertos son identi"icados por un nmero de 1C!bit# los cuales ,P 7 ;

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    4/10

     !  Conexiones:

    o  ormalmente# un servidor corre sobre una computadora espec8"ica 7 tiene unsocket que está 'JA

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    5/10

    satis"actoriamente creado 7 el cliente puede usar este socket para comunicarsecon el servidor.

    o  El cliente 7 el servidor pueden a=ora comunicarse con escribir A ó leer

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    6/10

    !  en el Prompt de comandos tipear

    netstat -an

    Conexiones activas

    Proto Dirección local Dirección remota Estado

    TCP 0.0.0.0:80 0.0.0.0:0 LISTENING

    TCP 0.0.0.0:! 0.0.0.0:0 LISTENINGTCP "#$.0.0.":!% 0.0.0.0:0 LISTENING

    TCP "#$.0.0.":#%0" 0.0.0.0:0 LISTENING

    TCP "."'8.".':!% 0.0.0.0:0 LISTENING

    TCP "."'8.".':"%& 0.0.0.0:0 LISTENING

    TCP "."'8.".':'"& '&."$#.#0".#08:80 EST()LIS*ED

    TCP "."'8.".':'#0 "'.!8.#"&."%0:% EST()LIS*ED

    +DP "."'8.!'.":"%8 ,:,

    +DP "."'8.!'.":"&00 ,:,

    +DP "."'8.!'.":!'#8 ,:,

    4.2  Escribir una aplicación cliente/servidor que implemente el servicio Q,A>RA*;0,;'A0 A >AS;0,;'A0T.

    !  En la programación de sockets# la estructura del programa es en muc=o elmismo

     Abrir un socket

     Abrir un stream de entrada 7 un stream de salida para el socket.

    'eer desde 7 escribir =acia el stream con"orme al protocolo del servidor.

    ,errar los streams.

    ,errar el socket.

    !  E)emplo aplicación cliente!servidor

    APLICACIÓN CLIENTE:1.  Pre!condición El proceso servidor debe estar 1ro. en e)ecución 

    2.  ,liente lee la l8nea desde la entrada estándar %stream in

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    7/10

     

    APLICACIÓN SERVIDOR Y CLIENTE:

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    8/10

    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 usuarioBufferedReader 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 socketBufferedReader 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();

    }

    }

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    9/10

    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 5indos abrir 2 ventanas

  • 8/16/2019 Lab01 - Programacion de Sockets en TCP.desbloqueado

    10/10

     !  En la ventana del servidor e)ecutar la aplicación servidor

     )ava 0ervidor/,P

    !  En la ventana del cliente e)ecutar la aplicación cliente.

     )ava ,liente/,P

    5.  CUESTIONARIO: 

    G.1  ,ompletar el comando dado a continuación# para que solo muestra lastransmisiones/cone$iones asociados con un determinado mero de Puerto

    En indos:

    netstat -aon //////////////////// 

    En Linx

    netstat -ta1n //////////////////

    G.2  @,uál de las siguientes combinaciones de parámetros de netstat muestra los nmerosde puerto asociados 7 el identi"icador de procesosa.  netstat !a !o (nb. netstat !b !e ("c.  netstat !" !s (pd. netstat !m !o (v

    G.3  AA meros de puerto en el rango de F a 1F23 son conocidos comoa.  Puertos e"8merosb. Puertos bien!conocidosc.  Puertos del sistemad. Puertos dinámicose.  Puertos registrados

    G.4  AA 'os nmeros de puerto en el rango de 1F24 al 41G1 son re"eridos comoa.  Puertos privadosb. Puertos dinámicos

    c.  Puertos bien!conocidosd. Puertos de usuarioe.  Puertos registrados

    G.G  AA Puertos re"eridos como puertos dinámicos# privados# o e"8meros tienennmeros en el rango dea.  41G2 ( CGG3Gb. F ( 1F23c.  1F24 ( 41G1