Practica, Sockets, Exposición

Anuncio
TCP/IP
Protocolos, Sockets, Exposición
Universidad Americana de Acapulco
Maestría en Ciencias de la
Computación
Modulo: Protocolo TCP/IP
Trabajos: Practica de Protocolos
Sockets
Exposición del Proyecto
Win 2000
Equipo No 2:
Diana Nogueda Anaya
Manfred Camero García
Nereo Hernández Sosa
Profesor: M.C.C. Enrique Torres Campos
Acapulco, Gro. Junio de 2003
Página 1 de 39
TCP/IP
Protocolos, Sockets, Exposición
Índice
I. Practica de Protocolos.............................................................................. 3
I.I .- Objetivo ................................................................................................. 3
I.II .- Configuración del Servicio FTP............................................................. 3
I.III .- Configuración del Servicio TELNET. ..................................................... 4
I.IV.- Configuración del Servicio HTTP........................................................... 6
I.V.- Configuración del Servicio DHCP .......................................................... 8
I.VI.- Análisis de Protocolos con Network Monitor.......................................... 9
1.- Datagrama HTTP .............................................................................. 9
2.- Datagrama FTP................................................................................. 10
3.- Datagrama TELNET.......................................................................... 11
4.- Datagrama DHCP ............................................................................. 12
5.- Datagrama UDP................................................................................ 13
I.VII.- Conclusiones ........................................................................................ 14
II. Sockets...................................................................................................... 15
II.I.- Corrida del Programa de Sockets en Lenjuage JAVA......................... 15
II.II.- Código Fuente Documentado del Cliente............................................ 18
II.III.- Código Fuente Documentado del Servidor ......................................... 21
III. Exposición del Avance de Proyecto Windows 2000 ............................ 24
III.I.-
Diapositivas ........................................................................................ 24
Página 2 de 39
TCP/IP
Protocolos, Sockets, Exposición
I.- Practica de Protocolos en Windows 2000
Server Advanced
I.I.- OBJETIVO.
•
¡
•
Instalar, configurar y poner en marcha los distintos servicios de nivel de
aplicación del modelo TCP/IP en el sistema operativo Windows 2000 Server
Advanced.
Analizar el tráfico de red que pasa por el servidor en las distintas capas del
modelo TCP/IP con el analizador de protocolos Network Monitor.
I.II.- CONFIGURACION DEL SERVICIO FTP EN WINDOWS 2000
SERVER ADVANCED.
•
Se ingresa la dirección IP del servidor donde se dio de alta el servicio,
en el cuadro IP Address.
Página 3 de 39
TCP/IP
Protocolos, Sockets, Exposición
Después se especifica el directorio a compartir donde accesarán los usuarios
que se conecten al servicio, en el recuadro Local Path. Posteriormente se
puede especificar la forma en que se desplegaran los archivos en el directorio.
Hay dos opciones, UNIX y MS-DOS, seleccionando en nuestro caso UNIX. Y
por ultimo damos clic en OK.
I.III.- CONFIGURACION DEL SERVICIO TELNET.
Se verifica que en los servicios, este iniciado el servicio de Telnet, viendo en la
columna status, que diga Started, en caso contrario, seleccionarlo, botón
derecho, y dar clic en Start, el cual cambiara el status del servicio.
Página 4 de 39
TCP/IP
Protocolos, Sockets, Exposición
Posteriormente, sobre el servicio de Telnet, se da clic con el botón derecho
sobre el mismo, después propiedades, se especifica la cuenta que tendrá
conexión mediante el servicio Telnet.
Se introduce su contraseña y por ultimo se da clic en OK.
Página 5 de 39
TCP/IP
Protocolos, Sockets, Exposición
I.IV.- CONFIGURACION DEL SERVICIO HTTP.
Se da clic en la carpeta Default Web Site o Administration Web Site, haciendo
mención que el segundo es para cuando se quieren administrar varios sitios
Web en el mismo servidor. Para esta practica, elegimos el primero.
Damos clic con el botón derecho sobre el Default Web Site, elegimos
Propiedades, y aparece la siguiente ventana.
En esta ventana, se especifica la ruta del directorio en Local path donde se
alojan los archivos con formato .html para ser puestos a disposición de los
usuarios que se conecten al servidor http. Debajo de este, se le especifican los
derechos del directorio al cual tendrán acceso los usuarios.
Posteriormente en el Explorador de Windows, se selecciona la carpeta que
tiene dichos servicios, después botón derecho, elegir Compartir, clic en la ficha
Web Sharing, y se elige Share this folder. Clic en OK. Esto es todo lo que se
configura básicamente para levantar el servicio http en el servidor.
Página 6 de 39
TCP/IP
Protocolos, Sockets, Exposición
Para ver la pagina desde cualquier cliente en la red, tecleamos en la barra de
dirección del explorador, el siguiente URL: http://server/equipo2/index.htm y se
visualiza la siguiente pagina, la cual es una pagina web sencilla hecha por
nosotros para esta practica, con fines ilustrativos.
Página 7 de 39
TCP/IP
Protocolos, Sockets, Exposición
I.V.- CONFIGURACION DEL SERVICIO DHCP.
Para instalar este servicio, debemos de asegurarnos que esta instalado dentro
de las opciones del IIS, en la opción Networking Services. En caso de no
estarlo, se agrega desde el CD de instalación de Windows 2000 Server.
Una vez que esta instalado en el servidor el servicio DHCP, desde la carpeta
Services, seleccionamos DHCP y ver si esta iniciado el servicio viendo en el
status Started, en caso contrario, dar clic con el botón derecho sobre este
mismo, elegir Start para iniciar el servicio.
Si el servicio esta iniciado, aparece un icono con el nombre del servidor, donde
se configura el servicio DHCP, como son los alcances (que son las direcciones
IP que pueden ser reservadas por el administrador de la red), habilitar la
auditoria, entre otras.
Una vez configuradas las opciones necesarias del servicio DHCP en nuestro
servidor, puede ser utilizado por los clientes de la red.
Página 8 de 39
TCP/IP
Protocolos, Sockets, Exposición
I.VI.- ANALISIS DE PROTOCOLOS CON LA HERRAMIENTA
NETWORK MONITOR.
1.- DATAGRAMA HTTP.
Al cargar la pagina web que configuramos en el servicio http desde un cliente
de la red, podemos ver los paquetes enviados por el servidor al cliente como
respuesta a la solicitud del servicio. A continuación se muestra la pantalla de
captura con el analizador de protocolos.
Se distinguen las 4 capas implementadas en el protocolo TCP/IP.
•
Frame._ Capa física.
•
Ethernet._ Capa de enlace; vemos la dirección de la MAC-ADDRESS origen
y destino, el tipo de protocolo de capa superior, que para este caso es IP.
•
IP._ Capa de red. En esta capa podemos ver elementos como la versión del
protocolo IP usado, los flags, el offset, que en este caso tiene el valor de o,
es decir, no se fragmentó el paquete al viajar por la red; el TTL (tiempo de
vida del paquete) que tiene un valor de 128, el tipo del protocolo de capa
superior que es igual a TCP para este caso y las direcciones IP origen y
destino, los cuales identifican a los clientes que iniciaron la transmisión de
datos en la red.
Página 9 de 39
TCP/IP
Protocolos, Sockets, Exposición
•
TCP._ Capa de transporte, muestra el puerto origen en el cual fue solicitado
el servicio en este caso es http, y el puerto destino asignado por el S.O. al
cual se enviará la información solicitada, el no. de reconocimiento, el data
offset, el cual es el no. de paquete en el cual dentro de esta capa, será
reconstruido el paquete completo, tiene un valor de 20; también tiene flags y
el checksum para verificar los errores en el paquete.
•
HTTP._ Capa de aplicación, muestra el valor del puerto asignado en el
cliente por el S.O., tiene un valor de 1433.
2.- DATAGRAMA FTP.
Para este servicio, se capturó esta pantalla la cual describimos a continuación.
Las capas física y de enlace muestran la misma información que la pantalla
anterior, por lo que se omitirá explicarlas. Solo detallaremos la capa de
aplicación.
En ella se muestra el total de bytes restantes que quedan para completar la
transferencia. La operación que hicimos fue subir un archivo de
aproximadamente 9 MB al directorio FTP.
Página 10 de 39
TCP/IP
Protocolos, Sockets, Exposición
3.- DATAGRAMA TELNET.
A continuación mostramos la pantalla del servicio Telnet.
En la capa de aplicación, podemos ver los comandos que son enviados al
cliente por el servidor, los cuales son en respuesta a una solicitud generada por
el cliente.
Página 11 de 39
TCP/IP
Protocolos, Sockets, Exposición
4.- DATAGRAMA DHCP.
Este servicio es solicitado desde el cliente hacia el servidor, solicitando una
dirección IP que le sea asignada dinámicamente por este último.
En la pantalla vemos en la capa de aplicación, que es una solicitud (request)
hecha por el cliente al servidor DHCP. Se puede observar el tipo de hardware,
es decir, la topología de la capa de enlace que es ethernet, los saltos hechos
para llegar hasta aquí, valor cero, no ha hecho ninguno, lo cual significa que
está dentro del mismo segmento de red que el servidor; las flags también se
hacen presentes; la dirección IP asignada al cliente así como dirección de la
MAC-ADDRESS cliente y por último el nombre del servidor.
Página 12 de 39
TCP/IP
Protocolos, Sockets, Exposición
5.- DATAGRAMA UDP.
Es un protocolo que sirve funciona en la capa de transporte, el cual es no
orientando a conexión, lo que significa que no asegura que lleguen los
paquetes a su destino, por no contar con algoritmos internos propios para este
hecho.
A continuación mostramos la pantalla capturada.
En ella podemos ver el puerto origen y el destino, que para este caso fue un
puerto utilizado por el servicio TFTP. La longitud del paquete, el checksum del
UDP el cual sirve para verificar los errores y el número total de bytes restantes.
Página 13 de 39
TCP/IP
Protocolos, Sockets, Exposición
I.VII.- CONCLUSIONES.
La correcta configuración de cada servicio en el servidor, hará que cuando este
sea solicitado por los clientes en la red, les satisfaga sus necesidades
particulares de cada uno de ellos.
Relativamente, la instalación, configuración y puesta en marcha de cada uno
de ellos es relativamente fácil, siendo el factor más crítico el saber para que
sirven y como funcionan cada una de las opciones que ofrecen. Si se tiene
conocimiento previo de todas estas, no habrá gran problema para poner el
servicio.
Con el analizador de protocolos Network Monitor incluido con Windows 2000
Server Advanced, puede analizarse los paquetes en un estación en la red, con
el fin de hacer un análisis detallado de los paquetes que circulan por la estación
de trabajo donde se ejecuta el programa. La ventaja de este analizador, es que
pueden verse los paquetes y datagramas en las distintas capas del protocolo
TCP/IP, y con esto, ser un apoyo en el análisis y diagnóstico del estado de la
red, así como de la información que por ella circula. Dado que este software
viene limitado a solo a analizar el tráfico de red que pasa por una estación de
trabajo, su ayuda en redes de gran escala es poca, por lo que se necesitaría un
analizador con más alcance, donde se pueda analizar el tráfico en cualquier
parte de la red.
Página 14 de 39
TCP/IP
Protocolos, Sockets, Exposición
II.- Sockets.
II.I.- Corrida del Programa de Sockets Realizado en lenguaje
JAVA.
El siguiente programa tiene la finalidad de demostrar como funciona el TCP,
que es un protocolo orientado a la conexión, es decir, al enviar un mensaje a
otro equipo este tiene que devolver otro mensaje de que ha llegado a su
destino el primero.
A continuación tenemos una pantalla donde se esta ejecutando el servidor , el
cual estara escuchando en le puerto 2000 si algun otro equipo se conecta a
este puerto.
Pantalla No.1.- Ejecución del Servidor
En la pantalla 1, se esta ejecutando el servidor y nos muestra la direccion IP en
la que se esta ejecutando, cuando corre la primera da como default 0.0.0.0 eb
el puesto 2000.
En la Pantalla no 2 se esta ejecutando el cliente y se conectara a la direccion
IP del servidor, en este caso es lel mismo equipo. El Cliente mandara un
mensaje al servidor, y este regresara la el mismo mensaje pero con con las
letras al inverso, es decir “¿Que es esto? “, y regresara “?otse se euq¿ “ . Con
esto se desmuestra la conexión o como funcionaria el TCP,.
Página 15 de 39
TCP/IP
Protocolos, Sockets, Exposición
Pantalla No 2..- Ejecución del Cliente.
En la pantalla del cliente se visualiza que se envia un mensaje y devuelve el
mismo mensaje pero a la inversa.
En la pantalla No. 3 me conecte a Internet y me dio una direccion IP a mi
equipo, la 192.168.20.90, la cual aparecera en la pantalla del servidor.
Pantalla No. 3
Al correr otra sesion del cliente, en el servidor se ve reflejado nuevamente la
direccion IP que enta conectandose en ese momento al servidor y se iran
Página 16 de 39
TCP/IP
Protocolos, Sockets, Exposición
reflejando paulatinamente todas las conexiones que hagan uso de ese puerto
del servidor como se muestra en la pantalla No. 4.
Pantalla No. 4.Muestra las conexiones de clientes en el servidor.
Pantalla No. 5.- Ejecucion de dos clientes y el servidor.
Página 17 de 39
TCP/IP
Protocolos, Sockets, Exposición
En la pantalla No-5 se muestra en la ventana del servidor la conexión IP de los
clientes que se han conectado a el, y en la respectivas pantallas de cada
cliente parece el mensaje y la contestación del mismo como se ha mencionado
anteriormente.
Ahora mostraremos el codigo fuente tanto del Cliente como del Servidor.
II.II.- Codigo Fuente del Cliente.
CODIGO FUENTE DEL CLIENTE
import java.io.*;
import java.net.*;
/**
*
clase para demostrar el uso de stream sockets en Java
*
*
Cliente TCP
*/
class TcpC {
private Socket s;
private final static int PORT =2002;
private InputStreamReader isr;
private OutputStreamWriter osw;
private boolean estaBien;
/**
*
Constructor por defecto
*/
public TcpC() {
estaBien = true;
try {
init(InetAddress.getLocalHost());
}
catch (UnknownHostException uhe) {
System.err.print("TcpC.<init> falló: " + uhe);
System.err.println(" para locahost");
estaBien = false;
}
}
/**
*
*
*
Constructor para servidor específico
@param servidor nombre del servidor
Página 18 de 39
TCP/IP
Protocolos, Sockets, Exposición
*/
public TcpC(String servidor) {
estaBien = true;
try {
init(InetAddress.getByName(servidor));
}
catch (UnknownHostException uhe) {
System.err.print("TcpC.<init> falló: " + uhe);
System.err.println(" para " + servidor);
estaBien = false;
}
}
/**
*
iniciador común llamado por constructores
*
*
@param ia objeto con dirección del servidor
*/
private void init(InetAddress ia) {
try {
s = new Socket(ia, PORT);
isr = new InputStreamReader(s.getInputStream());
osw = new OutputStreamWriter(s.getOutputStream());
}
catch (IOException ioe) {
System.err.println("TcpC.init falló: " + ioe);
estaBien = false;
}
}
/**
*
cerrar el socket
*/
private void close() throws IOException {
s.close();
}
/**
*
estado interno de la clase
*
@return "false" en caso de error interno
*/
public boolean estaBien() { return estaBien; }
/**
*
manda datos al servidor
*
@param s linea de datos
*/
public void pregunta(String s) throws IOException {
if (!estaBien)
Página 19 de 39
TCP/IP
Protocolos, Sockets, Exposición
return;
osw.write(s);
osw.flush();
}
/**
*
recibir datos del servidor
*
@return linea de datos
*/
public String respuesta() throws IOException {
if (!estaBien)
return null;
char[] buf = new char[256];
isr.read(buf, 0, 255);
String temp = new String(buf);
return temp;
}
public static void main(String[] av) {
TcpC c;
if (av.length > 0)
c = new TcpC(av[0]);
else
c = new TcpC();
if (!c.estaBien())
return;
String pr;
if (av.length > 1)
pr = av[1];
else
pr = "¿que es esto?";
try {
c.pregunta(pr);
System.out.println("mandamos: " + pr);
System.out.println("recibimos: " + c.respuesta());
c.close();
}
catch (IOException ioe) {
System.err.println("TcpC.main falló: " + ioe);
}
}
}
TERMINA CODIGO FUENTE DEL CLIENTE
Página 20 de 39
TCP/IP
Protocolos, Sockets, Exposición
II.III.- Codigo Fuente del Servidor.
CODIGO FUENTE DEL SERVIDOR
import java.io.*;
import java.net.*;
/**
*
clase para demostrar el uso de stream sockets en Java
*
*
Servidor TCP
*/
class TcpS {
private ServerSocket s;
private final static int PORT = 2002;
private boolean estaBien;
/**
*
Constructor por defecto
*/
public TcpS() {
estaBien = true;
try {
s = new ServerSocket(PORT);
System.out.print("ip local es " +
s.getInetAddress().getHostAddress());
System.out.println(", puerto " + s.getLocalPort());
}
catch (IOException ioe) {
System.err.println("TcpS.init falló: " + ioe);
estaBien = false;
}
}
/**
*
cerrar el socket principal
*/
private void close() throws IOException {
s.close();
}
/**
*
*
*/
reportar estado interno
@return "false" en caso de error interno
Página 21 de 39
TCP/IP
Protocolos, Sockets, Exposición
public boolean estaBien() { return estaBien; }
/**
*
aqui se aceptan y procesan conexiones nuevas
*/
public void procesar() {
for(;;) {
try {
Socket cliente = s.accept();
System.err.print(cliente.getInetAddress().getHostAddress());
System.err.println(" nos llama");
InputStreamReader isr =
new InputStreamReader(cliente.getInputStream());
OutputStreamWriter osw =
new OutputStreamWriter(cliente.getOutputStream());
String pregunta = pregunta(isr);
respuesta(invertir(pregunta), osw);
isr.close();
osw.close();
cliente.close();
}
catch (IOException ioe) {
System.err.println("TcpS.procesar falló: " + ioe);
}
}
}
/**
*
recibir datos del cliente
*
@param isr linea de comunicación con el cliente
*
@return linea con datos
*/
public String pregunta(InputStreamReader isr) throws IOException {
if (!estaBien)
return null;
char[] buf = new char[256];
int sz = isr.read(buf, 0, 255);
String temp = new String(buf, 0, sz);
System.out.println("pregunta: " + temp.length() + " bytes");
return temp;
}
/**
*
mandar datos al cliente
Página 22 de 39
TCP/IP
Protocolos, Sockets, Exposición
*
*
@param s linea con datos
*
@param osw linea de comunicación con el cliente
*/
public void respuesta(String s, OutputStreamWriter osw)
throws IOException {
if (!estaBien)
return;
osw.write(s);
osw.flush();
System.out.println("respuesta: " + s.length() + " bytes");
}
/**
*
invertir una linea usando recursion
*
*
@param s linea a invertir
*
@result linea invertida
*/
public String invertir(String s) {
if (s.length() > 1) {
char l = s.charAt(0);
return invertir(s.substring(1)) + l;
}
else
return s;
}
public static void main(String[] av) {
TcpS c = new TcpS();
if (!c.estaBien())
return;
try {
c.procesar();
c.close();
// formalismo, nunca se llega
}
catch (IOException ioe) {
System.err.println("TcpS.main falló: " + ioe);
}
}
}
CODIGO FUENTE DEL SERVIDOR
Página 23 de 39
TCP/IP
Protocolos, Sockets, Exposición
III.- Expocision del Avance del Proyecto
Win 2000.
Diapositiva 1
Protocolo TCP/IP
En
Windows 2000
Diapositiva 2
ARQUITECTURA DE SOCKETS EN
WINDOWS 2000 SERVER
Página 24 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 3
TCP/IP
• Relación del modelo TCP/IP con el modelo OSI
Diapositiva 4
TCP/IP
• Modelo de capas de TCP/IP
FTP, SMTP,
TELNET
SNMP, X-WINDOWS,
RPC, NFS
TCP
UDP
IP, ICMP, 802.2, X.25
ETHERNET, IEEE 802.2, X.25
Página 25 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 5
TCP/IP
• FTP (File Transfer Protocol). Se utiliza para transferencia de archivos.
• SMTP (Simple Mail Transfer Protocol).
Protocol). Es una aplicació
aplicación para el correo
electró
electrónico.
• TELNET: Permite la conexió
conexión a una aplicació
aplicación remota desde un proceso o
terminal.
• RPC (Remote Procedure Call). Permite llamadas a procedimientos
•
•
•
situados remotamente. Se utilizan las llamadas a RPC como si fuesen
fuesen
procedimientos locales.
SNMP (Simple Network Management Protocol). Se trata de una
aplicació
aplicación para el control de la red.
NFS (Network File System). Permite la utilizació
utilización de archivos
distribuidos por los programas de la red.
X-Windows.
Windows. Es un protocolo para el manejo de ventanas e interfaces de
usuario.
Diapositiva 6
Protocolos de aplicación
• La arquitectura abierta de TCP/IP permite
construir sobre él protocolos de aplicación
de muy diversa índole y funcionalidad,
muchos de los cuales son estándares muy
conocidos
Página 26 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 7
Protocolos de aplicación
• En Windows 2000 es posible encontrar
unngran variedad de protocolocos y
ademas compatibles con otras
plataformas.
• Ejemplos:
Diapositiva 8
Protocolos de aplicación
• Para RAS
–
–
–
–
CHAP
MSMS-CHAP
PAP
SPA
• Configuracion dinamica
– DHCP
• De intercambio de paquetes entre redes
– IPX/SPX
Página 27 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 9
Protocolos de aplicación
• FTP:Es
FTP:Es el mas utilizado de todos los protocolos de aplicación y de
los mas antiguos.
• HTTP:
HTTP: Se utiliza para manejar la consulta de hipertexto y el acceso
de datos con www.
www.
• NFS:
NFS: Autoriza a los usuarios el acceso en línea a archivos que se
encuentran en sistemas remotos. La mayoría de trafico en NFS es
un caso especial del protocolo RPC.
• RPC: Es una llamada a un procedimiento que se ejecuta en un
sistema diferente del que realiza la llamada.
• SMPT: Protocolo de correo electrónico.
Diapositiva 10
Protocolos de aplicación
• SNMP: Administra los sistemas de forma remota, también supervisa
el trafico de red.
• NTP: Sicroniza servidores
• TELNET: Permite que un usuario desde una terminal acceda a
recursos y aplicaciones de otros computadores.
• TFTP: Destinado a la transferencia de archivos sin permitir tanta
iteraccion entre clienteservidor como la que existe en FTP.
Página 28 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 11
Conclusión
• El conjunto de protocolos TCP/IP ha sido de vital
importancia para el desarrollo de las redes de
comunicación, sobre todo para Internet. El ritmo de
expansión de Internet también es una consecuencia de
estos protocolos, sin los cuales, conectar redes de
distintas naturalezas (diferente Hardware, sistema
operativo, etc..), hubiera sido mucho mas difícil, por no
decir imposible. Así pues, podemos decir que los
protocolos TCP/IP fueron y son el motor necesario para
que las redes en general, e Internet en particular, se
mejoren y se pueda lograr una buena "autopista de la
información".
Diapositiva 12
Referencias
/~al019803/Tcpip.htm
Tcpip.htm
• http://www4.uji.es
http://www4.uji.es/~al019803/
html
• http://usuarios.lycos.es
http://usuarios.lycos.es//janjo/janjo1.
janjo/janjo1.html
www.undersec.com/
/
sjfproject/
/
• http://www.undersec.com
http://
sjfproject prog/
prog/
sockets/
sockets/sockets.htm#241
• Windows 2000 SeverSever-Prentice Hall
– Serie práctica
Página 29 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 13
Sockets
Diapositiva 14
Comparación entre el Modelo OSI y Equivalente en Sockets
Página 30 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 15
Diapositiva 16
Tipos de SOCKETS
Los tipos disponibles son los siguientes:
•Tipo SOCK_DGRAM: sockets para comunicaciones en modo
no conectado ,con envío de datagramas de tamaño limitado (
tipo telegrama ). En dominios Internet el protocolo del nivel de
transporte sobre el que se basa es el UDP.
•Tipo SOCK_STREAM: para comunicaciones fiables en modo
conectado, dedos vías y con tamaño variable de los mensajes
de datos. En dominios Internet subyace el protocolo TCP.
•Tipo SOCK_RAW: permite el acceso a protocolos de más bajo
nivel como el IP ( nivel de red )
* Tipo SOCK_SEQPACKET: tiene las características del
SOCK_STREAM pero además el tamaño de los mensajes es
fijo.
Página 31 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 17
MODELO DE COMUNICACIONES CON JAVA
En Java, crear una conexión socket TCP/IP se realiza
directamente con el paquete java.net. A continuación
mostramos un diagrama de lo que ocurre en el lado del
cliente y del servidor:
Diapositiva 18
SOCKETS
Comparación con PIPES
Página 32 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 19
Diapositiva 20
SOCKETS
Los sockets son mecanismos de comunicación entre procesos
que permiten que un proceso hable ( emita o reciba información )
con otro proceso incluso estando en distintas máquinas.
Un socket es al sistema de comunicación entre ordenadores lo
que un buzón o un teléfono es al sistema de comunicación entre
personas: un punto de comunicación entre dos agentes (
procesos o personasrespectivamente ) por el cual se puede emitir
o recibir información.
La forma de referenciar un socket por los procesos implicados es
mediante un descriptor del mismo tipo que el utilizado para
referenciar Archivos.
Se podrá realizar redirecciones de los archivos de E/S estándar
(descriptores 0,1 y 2) a los sockets y así combinar entre ellos
aplicaciones de la red.
Todo nuevo proceso creado heredará, por tanto, los descriptores
de sockets de su padre.
Página 33 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 21
SOCKETS
La comunicación entre procesos a través de sockets se basa en la
filosofía CLIENTE-SERVIDOR:
Un proceso en esta comunicación actuará de proceso servidor
creando un socket cuyo nombre conocerá el proceso cliente, que
podrá "hablar" con el proceso servidor a través de la conexión con
dicho socket.
El otro proceso actuará como cliente creando un socket sin nombre
cuyo descriptor usará para leer o escribir.
El enlace entre los dos sockets permite una comunicación
bidireccional,característica propia de los sockets y que los diferencia
de los pipes, o canales de comunicación unidireccional entre
procesos de una misma máquina.
Diapositiva 22
SOCKETS
El mecanismo de comunicación vía sockets tiene los
siguientes pasos:
1º) El proceso servidor crea un socket con nombre y
espera la conexión.
2º) El proceso cliente crea un socket sin nombre.
3º) El proceso cliente realiza una petición de conexión al
socket servidor.
4º) El cliente realiza la conexión a través de su socket
mientras el proceso servidor mantiene el socket
servidor original con nombre.
Página 34 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 23
SOCKETS
Es muy común en este tipo de comunicación lanzar un proceso
hijo, una vez realizada la conexión, que se ocupe del intercambio
de información con el proceso cliente mientras el proceso padre
servidor sigue aceptando conexiones.
*Todo socket viene definido por dos características
fundamentales:
-El tipo del socket, que indica la naturaleza del mismo, el tipo de
comunicación que puede generarse entre los sockets.
-El dominio del socket especifica el conjunto de sockets que
puedenestablecer una comunicación con el mismo.
Diapositiva 24
Tipos de SOCKETS
Define las propiedades de las comunicaciones en las que se
ve envuelto un socket, esto es, el tipo de comunicación que se
puede dar entre cliente y servidor.
Estas pueden ser:
- Fiabilidad de transmisión.
- Mantenimiento del orden de los datos.
- No duplicación de los datos.
- El "Modo Conectado" en la comunicación.
- Envío de mensajes urgentes
Página 35 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 25
Implementación de un Cliente en Java
Si estamos programando un cliente, el socket se abre de la forma:
Socket Cliente;
Cliente = new Socket( "maquina",numeroPuerto );
Diapositiva 26
En el ejemplo anterior no se usan excepciones; sin embargo, es una gran
idea la captura de excepciones cuando se está trabajando con sockets. El
mismo ejemplo quedaría como:
Socket miCliente;
try {
miCliente = new Socket( "maquina",numeroPuerto );
} catch( IOException e )
{ System.out.println( e ); }
Si estamos programando un servidor, la forma de apertura del socket es
la que muestra el siguiente ejemplo:
Socket miServicio;
try {
miServicio = new ServerSocket( numeroPuerto ); }
catch( IOException e ) { System.out.println( e ); }
Página 36 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 27
A la hora de la implementación de un servidor también
necesitamos crear un objeto socket desde el
ServerSocket para que esté atento a las conexiones que
le puedan realizar clientes potenciales y poder aceptar
esas conexiones:
Socket socketServicio = null;
try {
socketServicio = miServicio.accept(); }
catch( IOException e ) { System.out.println( e ); }
Diapositiva 28
Creación de Streams de Entrada
En la parte cliente de la aplicación, se puede utilizar la clase DataInputStream
para crear un stream de entrada que esté listo a recibir todas las respuestas que
el servidor le envíe.
DataInputStream entrada;
try { entrada = new DataInputStream( miCliente.getInputStream() ); }
catch( IOException e ) { System.out.println( e ); }
La clase DataInputStream permite la lectura de líneas de texto y tipos de datos
primitivos de Java de un modo altamente portable; dispone de métodos para leer
todos esos tipos como: read(), readChar(), readInt(), readDouble() y readLine().
Deberemos utilizar la función que creamos necesaria dependiendo del tipo de dato
que esperemos recibir del servidor.
En el lado del servidor, también usaremos DataInputStream, pero en este caso
para recibir las entradas que se produzcan de los clientes que se hayan
conectado:
DataInputStream entrada;
try { entrada = new DataInputStream( socketServicio.getInputStream() ); }
catch( IOException e ) { System.out.println( e ); }
Página 37 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 29
Creación de Streams de Salida
En el lado del cliente, podemos crear un stream de salida para enviar información
al socket del servidor utilizando las clases PrintStream o DataOutputStream:
PrintStream salida;
try {
salida = new PrintStream( miCliente.getOutputStream() ); }
catch( IOException e ) { System.out.println( e ); }
La clase PrintStream tiene métodos para la representación textual de todos los
datos primitivos de Java. Sus métodos write y println() tienen una especial
importancia en este aspecto. No obstante, para el envío de información al servidor
también podemos utilizar DataOutputStream:
DataOutputStream salida;
try {
salida = new DataOutputStream( miCliente.getOutputStream() ); }
catch( IOException e ) { System.out.println( e ); }
Diapositiva 30
La clase DataOutputStream permite escribir cualquiera de los tipos
primitivos de Java, muchos de sus métodos escriben un tipo de dato
primitivo en el stream de salida. De todos esos métodos, el más útil
quizás sea writeBytes().
En el lado del servidor, podemos utilizar la clase PrintStream para
enviar información al cliente:
PrintStream salida;
try {
salida = new PrintStream(
socketServicio.getOutputStream() ); }
catch( IOException e ) { System.out.println( e ); }
Pero también podemos utilizar la clase DataOutputStream como en
el caso de envío de información desde el cliente.
Página 38 de 39
TCP/IP
Protocolos, Sockets, Exposición
Diapositiva 31
Cierre de Sockets
Siempre deberemos cerrar los canales de entrada y salida que se hayan
abierto durante la ejecución de la aplicación. En la parte del cliente:
try {
salida.close(); entrada.close(); miCliente.close(); }
catch( IOException e ) { System.out.println( e ); }
Y en la parte del servidor:
try {
salida.close(); entrada.close(); socketServicio.close();
miServicio.close(); }
catch( IOException e ) { System.out.println( e ); }
Página 39 de 39
Descargar