Práctica 1. Uso básico de servicios cliente-servidor

SCS, 2010/11


Índice General

Utilidades de línea de comandos

Se repasará el uso de herramientas de línea de comandos de GNU/linux que pueden resultar útiles para experimentar y/o depurar aplicaciones cliente-servidor, especialmente las desarrolladas directamente sobre el interfaz de SOCKETS.

Comando nc/netcat

netcat(nc) es un comando que permite acceder a puertos TCP o UDP de la propia máquina o de otras máquinas remotas. También permite quedar a la escucha en un puerto dado (TCP o UDP) de la máquina local.

Funcionamiento

Opciones interesantes:

Más información:

Pruebas a realizar

Comando netstat

netstat es un comando que ofrece información (uso, estado, etc) sobre las conexiones de la máquina propia, tanto entrantes como salientes, además de otras informaciones sobre la red.

Informa tanto de conexiones del dominio de Internet (locales y remota) como de conexiones del dominio UNIX (entre procesos locales).

La información típica que muestra para cada conexión de red es:

Opciones interesante:

Pruebas a realizar

Ejemplos de servicios con estado y sin estado

Servicio HTTP

Ejemplo típico de servicio sin estado, implementa un esquema una petición $\to$ una respuesta.

Más información sobre el protocolo HTTP (incluido formato de los mensajes).

Cada petición HTTP recibida por el servidor es independiente de las anteriores.

Acceso a un servidor WEB

Comprobar el diálogo HTTP desde el punto de vista de un cliente.

  1. Ejecutar nc en modo conexión con el puerto 80 de un servidor web accesible.
    $ nc ccia.ei.uvigo.es 80
    

  2. Escribir la siguiente petición (copiar y pegar tal cual, incluida la línea en blanco final)

    GET /docencia/SCS/index.html HTTP/1.1
    Host: ccia.ei.uvigo.es
    
    

  3. Comprobar que sucede si se envía sólo un mensaje GET (copiar y pegar tal cual, incluida la línea en blanco final)

    GET /docencia/SCS/index.html HTTP/1.1
    
    

Simulación de un servidor WEB en el puerto 8080

Comprobar el diálogo HTTP desde el punto de vista del servidor.

  1. Ejecutar nc en modo escucha en el puerto 8080. (o en cualquier otro puerto > 1024)

    $ nc -l -p 8080
    

  2. Desde un navegador web escribir http://localhost:8080/index.html

  3. Responder a la petición desde nc (copiar y pegar tal cual, incluidas las líneas en blanco)

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 56
    
    <html><body> hola <img src="imagen.gif"> </body> </html>
    
    

  4. Realizar otra petición desde el navegador (recargar página) y enviarle una nueva respuesta desde nc (copiar y pegar tal cual, incluidas las líneas en blanco)

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 70
    
    <html><body> hola <a href="principal.html"> enlace </a> </body> </html>
    
    

Servicios POP3 y SMTP

Los protocolos POP3 (servicio de correo entrante) y SMTP (servicio de correo saliente) son ejemplos de servidores con estado. En función de los mensajes previos enviados por el cliente, como parte de una conexión establecida previamente, las respuestas del servidor varían.

Típicamente, el comportamiento de este tipo de servicios con estadoestará gobernado por una máquina de estados (o un mecanismo equivalente) exclusiva para cada cliente. Esa información permite que el servidor pueda llevar traza de las peticiones recibidas y del estado en el que se encuentra el diálogo con el cliente.

Más información sobre el protocolo SMTP.

Más información sobre el protocolo POP3.

Conectar con un servidor SMTP (puerto 25)

Elegir un servidor SMTP donde el alumno tenga acceso y simular el diálogo de un cliente SMTP a la hora de enviar un e-mail.

  1. Ejecutar nc en modo conexión con el puerto 25 del servidor SMTP
    $ nc aaa.aaa.com 25
    

  2. Obtener información sobre el servidor SMTP.

    Escribir el siguiente mensaje en la sesión nc:

    HELO  <nombre o IP del cliente>
    

  3. Enviarse un e-mail a si mismo.

    Escribir los siguientes mensajes en la sesión nc:

    MAIL FROM: login@aaa.aaa.com
    RCPT TO:login@aaa.aaa.com
    DATA
    Subject: asunto del mensaje
    mensaje a enviar
    mensaje a enviar
    .
    
    1. ''MAIL FROM:'' indica quien envía el mensaje
    2. ''RCPT TO:'' indica quien es el destinatario (si fueran varios se repite para cada uno de ellos)
    3. ''DATA'' indica el comienzo del contenido del mensaje.
    4. El fin del mensaje se marca con ''.'' (punto ''solitario'' + retorno de carro)

  4. Cerrar la conexión con el servidor SMTP

    Escribir el siguiente mensaje en la sesión nc:

    QUIT
    

  5. Comprobar la recepción del mensaje

Conectar con un servidor POP3 (puerto 110)

Elegir un servidor POP3 donde el alumno tenga acceso y simular el diálogo de un cliente POP3 a la hora de descargar los mensajes del buzón del usuario.

  1. Ejecutar nc en modo conexión con el puerto 110 del servidor POP3
    $ nc aaa.aaa.com 110
    

  2. Autenticarse frente al servidor.

    Escribir los siguientes 2 mensajes en la sesión nc (envío del nombre de usuario + envío de la clave)

    USER miusuario
    PASS mipassword
    

    Aviso: el tráfico irá en claro y el login y el password serán visibles para cualquiera que escuche en ese enlace

  3. Gestionar los mensajes del buzón

    Escribir la siguiente secuencia de mensajes en la sesión nc (ver estado del buzón, obtener la lista de mensajes pendientes de descargar, descargar el primer mensaje, cerrar la conexión POP3)

    STAT
    LIST
    RETR 1
    QUIT
    

Documentación a entregar

Descripción breve de las pruebas realizadas (comandos ejecutados, parámetros utilizados, etc) en las dos secciones anteriores (herramientas de red y servicios con y sin estado).

Explicar los resultados obtenidos en cada una de las pruebas realizadas.

(Límite: 2-3 páginas)



ribadas 2010-09-21