lab01 - programacion de sockets en tcp.desbloqueado
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