Escuela de Graduados de Electrónica y Telecomunicaciones Maestría en Ingeniería en Telecomunicaciones Laboratorio TCP-IP Profesores: Marcelo Utard Javier Bozzuto Integrantes del grupo: Rafael Javier Collazos Medina Julio Cesar Ramirez Mora Edgar Alberto Sáenz Bolívar Flavio Alejandro Soto Linares 2008 INTRODUCCIÓN TFTP (Trivial file transfer Protocol) y SMTP (Simple Mail Transfer Protocol) son dos protocolos de la capa de aplicación que se utilizan para transferir pequeños archivos por medio de UDP (TFTP) e intercambiar mensajes de correo electrónico entre computadoras u otros dispositivos (SMTP). USO DE TFTP La orden: TFTP <nombre_host> lleva a la línea de órdenes donde se pueden introducir las siguientes subórdenes: Connect <host> especifica el ID del host de destino Mode <ascii/binary> especifica el tipo del modo de transferencia Get <nombre_fichero remoto> [<nombre_fichero local>] recupera un fichero Put <nombre_fichero remoto> [<nombre_fichero local>] almacena un fichero Verbose cambia a modo verboso, que muestra información adicional durante la transferencia de ficheros, on o off Quit sale de TFTP DESCRIPCIÓN DEL PROTOCOLO TFTP Cualquier transferencia comienza con una petición de lectura o escritura de un fichero. Si el servidor concede la petición, la conexión se abre y el fichero se envía en bloques de 512 bytes (longitud fija). Los bloques del fichero están numerados consecutivamente, comenzando en 1. Un paquete de reconocimiento debe reconocer cada paquete de datos antes de que el próximo se pueda enviar. Se asume la terminación de la transferencia cuando un paquete de datos tiene menos de 512 bytes. Casi todos los errores causarán la terminación de la conexión (por falta de fiabilidad). Si un paquete se pierde en la red, ocurrirá un timeout, después de que la retransmisión del último paquete (datos o reconocimiento) tuviera lugar. PAQUETES TFTP Sólo existen cinco tipos de paquetes: Código de Operación Operación 1 Petición de lectura (RRQ) 2 Petición de escritura (WRQ) 3 Datos (DATA) 4 Reconocimiento (ACK) 5 Error (ERROR) La cabecera TFTP contiene el código de operación asociado con el paquete. DESCRIPCION DEL PROTOCOLO SMTP Cuando un cliente establece una conexión con el servidor SMTP, espera a que éste envíe un mensaje “220 Service ready” o “421 Service non available” Se envía un HELO desde el cliente. Con ello el servidor se identifica. Esto puede usarse para comprobar si se conectó con el servidor SMTP correcto. El cliente comienza la transacción del correo con la orden MAIL. Como argumento de esta orden se puede pasar la dirección de correo al que el servidor notificará cualquier fallo en el envío del correo. El servidor responde “250 OK”. Ya le hemos dicho al servidor que queremos mandar un correo, ahora hay que comunicarle a quien. La orden para esto es RCPT TO:<destino@host>. Se pueden mandar tantas órdenes RCPT como destinatarios del correo queramos. Por cada destinatario, el servidor contestará “250 OK” o bien “550 No such user here”, si no encuentra al destinatario. Una vez enviados todos los RCPT, el cliente envía una orden DATA para indicar que a continuación se envían los contenidos del mensaje. El servidor responde “354 Start mail input, end with <CRLF>.<CRLF>” Esto indica al cliente como ha de notificar el fin del mensaje. Ahora el cliente envía el cuerpo del mensaje, línea a línea. Una vez finalizado, se termina con un <CRLF>.<CRLF> (la última línea será un punto), a lo que el servidor contestará “250 OK”, o un mensaje de error apropiado. Tras el envío, el cliente, si no tiene que enviar más correos, con la orden QUIT corta la conexión. También puede usar la orden TURN, con lo que el cliente pasa a ser el servidor, y el servidor se convierte en cliente. Finalmente, si tiene más mensajes que enviar, repite el proceso hasta completarlos. Puede que el servidor SMTP soporte las extensiones definidas en el RFC 1651, en este caso, la orden HELO puede ser sustituida por la orden EHLO, con lo que el servidor contestará con una lista de las extensiones admitidas. Si el servidor no soporta las extensiones, contestará con un mensaje "500 Syntax error, command unrecognized". PAQUETES SMTP En el ejemplo pueden verse las órdenes básicas de SMTP: HELO, para abrir una sesión con el servidor MAIL FROM, para indicar quien envía el mensaje RCPT TO, para indicar el destinatario del mensaje DATA, para indicar el comienzo del mensaje, éste finalizará cuando haya una línea únicamente con un punto. QUIT, para cerrar la sesión RSET Aborta la transacción en curso y borra todos los registros. SEND Inicia una transacción en la cual el mensaje se entrega a una terminal. SOML El mensaje se entrega a un terminal o a un buzon. SAML El mensaje se entrega a un terminal y a un buzon. VRFY Solicita al servidor la verificación del argumento. EXPN Solicita al servidor la confirmación del argumento. HELP Permite solicitar información sobre un comando. NOOP Se emplea para reiniciar los temporizadores. TURN Solicita al servidor que intercambien los paquetes. De los tres dígitos del código numérico, el primero indica la categoría de la respuesta, estando definidas las siguientes categorías: 2XX, la operación solicitada mediante el comando anterior ha sido concluida con éxito 3XX, la orden ha sido aceptada, pero el servidor esta pendiente de que el cliente le envíe nuevos datos para terminar la operación 4XX, para una respuesta de error, pero se espera a que se repita la instrucción 5XX, para indicar una condición de error permanente, por lo que no debe repetirse la orden Una vez que el servidor recibe el mensaje finalizado con un punto puede bien almacenarlo si es para un destinatario que pertenece a su dominio, o bien retransmitirlo a otro servidor para que finalmente llegue a un servidor del dominio del receptor. DESCRIPCION GENERAL DEL TRABAJO En este trabajo se intenta mostrar el funcionamiento de cada uno de estos protocolos y describir cada uno de los componentes que participan en sus respectivos funcionamientos. El desarrollo del trabajo se basa en laboratorios, para esto definimos una maqueta de trabajo y planteamos una serie de escenarios para cada uno de los protocolos que vamos a estudiar. Se instalo el software necesario y se desarrollaron las pruebas para cada uno de los escenarios propuestos El análisis de cada una de las pruebas se realizo con la ayuda de un analizador de protocolos, mostrando detalladamente cada una de las tramas y facilitando la comprensión del funcionamiento de los protocolos estudiados. Finalmente mostramos los resultados y las conclusiones que nos arrojaron las pruebas. OBJETIVOS • • • • • Observar el comportamiento de las instrucciones GET y PUT del comando TFTP Observar el comportamiento del servidor SMTP en la recepción de correos electrónicos Analizar todos y cada uno de los resultados mostrados en el wireshark tanto en TFTP como en SMTP Comprender cada una de las instrucciones de la trama TFTP y SMTP Comparar cada uno de los comportamientos de las tramas según los escenarios propuestos TFTP MAQUETA PLANIFICACION En este caso se plantea realizar la lectura y escritura de archivos por medio del comando GET Y PUT para interactuar con el protocolo TFTP. Para esto se piensa utilizar dos PC actuando como cliente y una maquina servidor encargada de alojar los archivos. Las tres maquinas se hallan conectadas a un router y utilizan el rango de red 192.168.1.0 con mascara 255.255.255.0. La prueba se establece con el reinicio de las maquinas y el router, para asegurar que las tablas se encuentran vacías. Una de las máquinas asumirá el papel de servidor y tendrá instalado y configurado el software encargado de gestionar el servicio TFTP ( SolarWinds TFTP Server). Los clientes harán uso de las opciones GET y PUT correspondientes al comando TFTP para poder enviar y capturar archivos de la máquina servidor .El servidor cuenta con una carpeta donde se alojan los archivos tanto para envío como para la recepción. Se examinará el funcionamiento del protocolo TFTP, utilizando un analizador de tramas en cada uno de los equipos – Wireshark -. Los clientes podrán acceder al servidor por medio del editor de comandos. EJECUCIÓN Para la ejecución de la prueba, se realizó primero la identificación de los roles. En esta parte se definió como servidor al equipo con dirección ip 192.168.1.2 al cual se le instaló el programa SolarWinds TFTP Server trabajando sobre el puerto 69 UDP. Este permitirá a la máquina realizar las funciones de servidor. Al cliente se le asigno la dirección 192.168.1.6, quien se encargará de enviar y capturar archivos. Durante la configuración del servidor TFTP se definió el directorio “C:\TFTP-Root” como el encargado para alojar los archivos que los clientes pueden colocar y capturar. Se plantearon tres escenarios: • • • Envío y captura exitosa de un archivo Envío y captura de un archivo estando el servidor inactivo Obtención de un archivo inexistente Escenario 1 (Envio y captura éxitosa de un archivo) Para este escenario se plantearon dos pruebas, la primera consiste en el envío del archivo 27.jpg al servidor, donde se espera que el fichero sea alojado exitosamente en la carpeta definida en el servidor para tal fin. El cliente ingresa al editor de comandos y ejecuta la secuencia: C: \ TFTP –i 192.168.1.2 PUT 27.jpg En este caso se utiliza la opción –i para indicar que es un archivo binario, para un archivo de texto se ejecuta el comando sin esta opción. En las dos máquinas se instalaron el analizador de tramas Wireshark para revisar el comportamiento de la prueba. En la segunda prueba la maquina cliente intenta obtener un archivo que se encuentra alojado en el directorio definido en el servidor TFTP (C:\TFTP-Root), el nombre del archivo es prueba.jpg y en este caso se ejecuta el comando: C: \ TFTP –i 192.168.1.2 GET prueba.jpg Analizando las tramas, inicialmente el cliente envía una petición ARP solicitando la MAC del servidor (192.168.1.2), este envía el ARP reply informando su dirección MAC. Seguido a esto el cliente envía un paquete WRQ (write request/petición de escritura), cuando se ejecuta el comando con la opción PUT, indicando el nombre del archivo y el modo de transferencia. El servidor envía un ACK y después de esto el cliente inicia el envío del archivo dividido en paquetes de 512 bytes. El servidor envía un ACK por cada bloque de datos enviado. En el momento en que el servidor recibe un paquete con menos de 512 bytes, este le está indicando que ha finalizado la transferencia el archivo El archivo que se utilizó para la prueba (27.jpg) ocupa 137.929 bytes, por lo tanto el cliente envía al servidor 269 paquetes de datos cada uno con 512 bytes, para un total de 137.728 bytes, el paquete restante es enviado con 201 bytes y por ser menor de 512 el servidor asume la finalización del archivo. Para cada paquete enviado el servidor responde con un ACK En la segunda prueba, para la opción GET el cliente envía un paquete RRQ (read request/petición de lectura) y se repite la misma secuencia que en la prueba realizada con la opción PUT. En este caso el archivo capturado (prueba2.jpg) ocupa un total de 508.700 bytes, el cliente captura 993 paquetes de 512 bytes y finaliza con un paquete de 284 bytes. Escenario 2 (Envío y captura de un archivo estando el servidor inactivo.) La prueba consiste en el envío de un archivo por parte del cliente al servidor, estando el servidor TFTP inactivo. Se espera que al servidor(pc) le llegue del cliente la solicitud RRQ o WRQ, dependiendo del comando que se utilice(PUT o GET)como el servidor TFTP esta inactivo no podrá responder a ninguna de las solicitudes antes mensionadas . Al revisar las tramas se encontró que el cliente después de realizar la consulta ARP, envía el paquete RRQ (read request/petición de lectura) indicando el nombre del archivo. De igual manera sucede con el paquete WRQ (write request/petición de escritura) indicando el nombre del archivo.En ambos casos el servidor retorna un mensaje ICMP de tipo “Destination Unreachable” con código “Port Unreachable” . Escenario 3 (Obtención de un archivo inexistente.) En este caso se intentara la captura de un archivo que no existe en la carpeta del servidor TFTP utilizando el comando GET , se espera que el servidor envie un mensaje de error diciendo que dicho archivo no se encuentra en el registro de sus archivos. Ejecución se ejecuta desde la pc cliente 192.168.1.6 el comando get , además se analiza con el wireshark instalado en el servidor su comportamiento: Luego de recibir el servidor la petición de lectura se pudo notar que la maquina servidor envía un error de mensaje TFTP de archivo no encontrado. SMTP MAQUETA PLANIFICACION En este caso se plantea realizar el envío de un correo electrónico por medio de un protocolo de transferencia simple de correos SMTP. Para esto se piensa utilizar dos PC actuando como cliente y otro como cliente/ servidor, encargado este ultimo de la retransmisión de los correos electrónicos. Las dos maquinas se hallan conectadas a un router y utilizan el rango de red 192.168.1.0 con mascara 255.255.255.0. La prueba se establece con el reinicio de las maquinas y el router, para asegurar que las tablas se encuentran vacías. Una de las máquinas asumirá el papel de servidor/cliente y tendrá instalado y configurado el software encargado de gestionar el protocolo SMTP En el servidor SMTP se creara un dominio donde estarán vinculadas las cuentas de correo con las que se realizara la prueba, a su vez, en el cliente se va configurar el Microsoft Outlook con la cuenta perteneciente al dominio creado en el servidor con el fin de verificar el envío de un correo . Se examinará el funcionamiento del protocolo SMTP, utilizando un analizador de tramas en cada uno de los equipos – Wireshark -. Cliente y servidor Ejecución Para la realización de la prueba se definió a la maquina 192.168.1.2 como el servidor SMTP y a la vez como uno de los clientes de correo. A este equipo se le instaló el programa “Argosoft Mail Server” para que pudiera servir como servidor de correo. La maquina 192.168.1.6 será el otro cliente y por medio de este se realizará el envío de correos. El primer paso para la realización de la prueba es configurar el servidor SMTP, para esto es necesario crear un dominio y los usuarios que harán parte de este. El dominio creado se llama “casa.com” y se le agregaron dos usuarios rafael@casa.com y julio@casa.com. Para la configuración de los clientes se utilizó el programa “Microsoft Outlook”, en la máquina servidor se agregó el usuario julio@casa.com y en el equipo cliente se especificó el usuario rafael@casa.com. Teniendo configuradas las máquinas se definen los siguientes escenarios: • • Envío exitoso de un correo electrónico. Envío de un correo a una dirección desconocida. Escenario 1 (Envío exitoso de un correo electrónico.) La prueba consiste en el envío de un correo electrónico desde el cliente con nombre de cuenta rafael@casa.com a la a otra máquina con nombre de cuenta julio@casa.com, pasando primero por un servidor de correo SMTP . Se analizan cada una de las tramas resultantes de este proceso utilizando el analizador “Wireshark”. Con esto se puede determinar cuáles son los pasos que se realizan durante el envío de un correo electrónico por medio del protocolo SMTP. Como las cuentas se encuentran creadas en el servidor SMTP, se espera que el correo se gestione de forma exitosa y sea entregado al destinatario. Las tramas muestran que inicialmente se inicia la negociación TCP entre el cliente y el servidor. El cliente le envía una trama con el flag SYN en 1 y este le responde con el flag SYN y ACK. El cliente le indica que se va a realizar la conexión por el puerto 25 TCP correspondiente a SMTP. Revisando la RFC de SMTP y revisando las tramas, se puede resumir el funcionamiento del protocolo de la siguiente manera: • Cuando se finaliza el establecimiento de conexión, el servidor envía un mensaje “220 Service ready”, y en el caso en que no esté disponible envía un mensaje “421 Service non available” • El cliente envía un mensaje EHLO. Con ello el servidor se identifica. Esto puede usarse para comprobar si se conectó con el servidor SMTP correcto. • El servidor responde cada trama éxitosa con un mensaje “250 OK”, para el caso EHLO responde “250 – Welcome Pleased to meet you” • El cliente comienza la transacción del correo con la orden MAIL. Como argumento de esta orden se puede pasar la dirección de correo al que el servidor notificará cualquier fallo en el envío del correo. El servidor responde “250 OK”. • Con la orden RCPT el cliente le indica al servidor cuales son los destinatarios del correo, el cliente de igual forma confirma con una orden 250-OK la existencia del destinatario de correo. • Una vez enviados todos los RCPT, el cliente envía una orden DATA para indicar que a continuación se envían los contenidos del mensaje. El servidor responde (354 Start mail input, end with “.” ) Esto indica al cliente que debe finalizar el mensaje con una línea de puntos “.” . • Ahora el cliente envía el cuerpo del mensaje, línea a línea. Una vez finalizado, se termina con un “.” (la última línea será un punto), a lo que el servidor contestará “250 OK Message accepted for delivery”. • Tras el envío, el cliente, si no tiene que enviar más correos, con la orden QUIT corta la conexión, finalmente el servidor cierra la conexión con un comando “221 aba he”. Por cada comando SMTP enviado entre el cliente y el servidor se envían una trama tcp de confirmación de recepción de cada comando. Escenario 2 (Envío de un correo a una dirección desconocida.) La prueba consiste en el envío de un correo electrónico desde el cliente con nombre de cuenta de correo rafael@casa.com a otra máquina con nombre de cuenta de correo Flavio1@casa.com, pasando primero por un servidor de correo SMTP. Analizando cada una de las tramas resultantes de este proceso utilizando el sniffer “Wireshark”, se puede determinar cuáles son los pasos que se realizan durante el envío de un correo electrónico por medio del protocolo SMTP. Como la cuenta flavio1@casa.com no se encuentran creada en el servidor SMTP, se espera que el correo no se gestione de forma exitosa ya que dicha cuenta no se encuentra registrada, por este hecho el servidor devolverá al que envía el mensaje una respuesta de error o que no se puede enviar dicho correo a la cuenta de destino. Analizando las tramas, el proceso inicial es similar al estudiado en el escenario 1, se realiza la negociación TCP y se envían las tramas SMTP, que también se estudiaron en el escenario 1 , en este caso enviamos un correo con dirección de destino flavio1@casa.com que se puede ver cuando el cliente le envía el paquete RCPT al servidor. El servidor compara la cuenta de correo entrante (flavi01@casa.com) con las que se encuentran registradas en el servidor de correo SMTP , al ver que la cuenta no se encuentra registrada el servidor envía una respuesta al cliente (Rafael@casa.com) con un código de error 550 diciendo cuenta de usuario flavio1@casa.com no existe. Al final de el análisis podemos notar que se cierra la sesión TCP donde el cliente le envía un comando QUIT y el server contesta finalmente el cliente cierra la conexión con un comando “221 aba he”. CONCLUSIONES. En el siguiente laboratorio pudimos comprobar la utilización de los comandos de tftp y la manera de cómo se envía y obtienen archivos por medio de las herramientas PUT y GET . Asi mismo pudimos analizar en las tramas la diferencia de lo protocolos UDP,TCP , y las instrucciones PUT y GET , se pudo ver de manera satisfactoria el desarrollo de cada uno de los escenarios propuestos. En el caso de SMTP se pudo analizar en las tramas la utilización del protocolo TCP , los diferentes tipos de paquetes, códigos que intercambian el cliente y el servidor , dependiendo de cada uno de los escenarios propuestos. Llevándonos a concluir que el laboratorio cumplió todas nuestras expectativas