Capítulos y temas de las Tesis

Como ya lo he mencionado antes este blog es en esencia el borrador y respaldo en linea de mi tesis de licenciatura, por lo que sera adecuado poner la lista de capítulos y contenidos propuestos hasta el momento, como con los demás borradores los contenidos aquí mostrados podrían cambiar en el futuro, dependiendo de como se vaya desarrollando la tesis.

Capitulo 1: Introducción

1 – Introducción a las redes de computadoras
Se presenta el concepto de redes de computadoras alámbricas e inalambricas así como los protocolos de red

2 – Justificación
El por que es necesaria y cual es el uso del análisis de protocolos de red

3 – Objetivos de la tesis

Capitulo 2: Tecnologías de red

Este capitulo presentara las bases teóricas de las redes de datos, tras lo cual entrara en detalle respecto a tres tecnologías y un protocolo en particular.

Las tecnologias que se presentaran son el estándar Ethernet para redes alámbricas conocido como IEEE 802.3, el estándar WiFi (IEEE 802.11) y el protocolo TCP/IP.

Capitulo 3: Analizadores de paquetes de red

Introducirá el concepto del analizador de paquetes de red, bases teóricas, funciones y su historia. A su vez se presentaran varios de los existentes con sus ventajas y desventajas.

Capitulo 4: Analizador de paquetes Wireshark.

Este capitulo mostrara la historia y operación del analizador de paquetes Wireshark entrando en mayor detalle respecto a sus ventajas y desventajas.
Para ilustrar mejor su operación en la parte final se presentaran varios experimentos que pueden realizarse.

Capitulo 5: Wireshark sobre redes inalámbricas.


Presentara el modo de realizar un análisis de paquetes en sobre una red inalámbrica IEEE 802.11 (WiFi) utilizando Wireshark y los módulos AirPcap de Riverbed, el por que es necesario usar estos módulos y una serie de experimentos sencillos.

Capitulo 6: Practicas
Aquí se presentara una serie de practicas basadas en situaciones de la vida real con el propósito de aplicar lo expuesto en la tesis.

Anuncios

El Modelo OSI

Una manera de comprender como se relacionan los diferentes componentes de software y hardware de una red es pensar en esta como un conjunto de capas, cada una apoyada sobre las anteriores.

La serie de capas que compone una red y sus funciones es mostrada a detalle en el Open Systems Interconnection Model, conocido comúnmente como el modelo OSI.

Figura 1: Modelo OSI.

Como puede observarse en la Figura 1, el modelo OSI divide a la red en siete capas individuales e independientes una de la otra las cuales solo se comunican con la capa inmediatamente superior o inferior.

Si bien el organizar la red de este modo puede parecer innecesariamente complejo, el hacerlo brinda varias ventajas al momento de investigar e implementar nuevas tecnologías, ya que el comportamiento de cada capa es lo que importa y no su implementación, es posible remplazar la implementación de una sola de las capas sin afectar a las demás, ahorrando tiempo de desarrollo y enfocando la investigación a una única capa.

Ahora que se a bosquejado las razones de la existencia del modelo OSI se procederá a detallar cada una de las capas que lo conforman, avanzando de arriba hacia abajo.

Nivel Físico.
Es la parte del la red dedicado a la transmisión y recepción de datos binarios sobre el medio de comunicación, estos datos se representan como pulsos eléctricos en un alambre, señal de radio modulada o pulsos de luz en una fibra optica, una vez que la capa a recibido y demodulado los datos los envia a la siguiente capa.

Nivel de Enlace de Datos.
Es la capa responsable de indicar a la capa física que datos enviar y a que dirección enviarlos, para lograr esto divide los paquetes generados por las capas superiores en tramas del tamaño y composición óptimos para transmisión, a su vez relaciona las direcciones físicas MAC utilizadas por la capa física con las direcciones IP usadas por las capas superiores.

Nivel de Red.
Su principal función es el direccionamiento lógico de los paquetes generados por las capas superiores, indicándole a la capa de enlace de datos la ruta que el paquete debe de seguir para llegar a su destino, como parte de sus funciones de direccionamiento esta el prevenir cuellos de botella, ya sea tomando las pausas necesarias para que la ruta elegida se descongestione o buscando una ruta alternativa.

Nivel de Transporte.
Crea los paquetes de red que serán transmitidos y agrega los datos necesarios para obtener la fiabilidad de servicio necesaria tomando en cuenta las características del canal de comunicaciones.

Nivel de Sesión.
Incluye los protocolos y estándares para iniciar, mantener y sincronizar una sesión de comunicaciones.

Nivel de Presentación.
A diferencia de las demás capas, la función de la capa de presentación no es la transmisión de datos, si no la sintaxis y semántica de la información que se recibe o transmite, esto con el propósito de permitir la comunicación de computadoras con diferentes modos de representar datos.

Nivel de Aplicación.
Contiene los protocolos que interactuan directamente con el usuario, como lo son el HTTP, SMTP, FTP y TELNET

Referencias:
Computer Networks 4ed, Andrew S Tanenbaum

Imagenes.
http://es.wikipedia.org/wiki/Archivo:Pila-osi-es.svg

Capitulo 1, introducción: borrador 1

En los años recientes la capacidad de transferir datos entre diversos equipos de computo ubicados en locaciones fisicas diferentes a pasado de ser un metodo utilizado para ahorrar tiempo a ser una necesidad imperante en practicamente todas las ramas de industria y servicios asi como en el hogar.

Dada la ubiquidad de las redes de datos estos dias, la relativa simplicidad de su uso y el que fueron diseñadas para ser transparentes al usuario, es probable que no se tenga familiaridad los principios bajo los cuales operan por lo que se introduciran algunos de estos.

Introducción a las redes de datos.

Una red de datos es definida como una forma particular de un sistema de comunicaciones, compartiendo el mismo objectivo basico, la transferencia de datos de manera confiable entre dos dispositivos, pero con un enfasis mayor en la transferencia y recepción de datos binarios generados por dispositivos digitales de varios tipos.

Estas redes poseen varios componentes basicos que son, una serie de dispositivos digitales, un conjunto de protocolos de transferencia y una variedad de medios de transmisión.

Del modo en que se presentan, cada componenten puede sonar extrañamente ambiguo, sin una mayor definición que su proposito y función, pero esto es una forma de ejemplificar la enorme diversidad de componentes que pueden formar una red de datos, la gran cantidad de protocolos existentes y los medios de transmisión disponibles, para tener una mayor compresión cada uno de esos elementos sera examinado con mayor detalle a continuación.

Dispositivos digitales.
Son los distintos aparatos que pueden formar parte de una red de datos enviando y recibiendo paquetes de datos dentro y fuera de esta, los ejemplos mas conocidos son las computadoras pero distan de ser los unicos ya que los telefonos moviles y diversos dispositivos medicos tambien poseen estas capacidades.

Un hecho que se debe destacar es que no por ser un dispositivo digital garantiza que pueda formar parte de cualquier red, de que modo y a que tipo de redes puede enlazarse un dispositivo esta determinado por los medios de transmisión y protocolos con los que el dispositivo es compatible.

Protocolos de red.
A medida que las redes fueron creciendo y diversificandose varios problemas comenzaron a ser evidentes, ¿Como identificar cada elemento?, ¿Como mantener el orden en las transferencias?, ¿Como detectar y corregir errores? y ¿Como hacer un uso eficiente del medio?.

Para resolver estos problemas se diseñaron los protocolos de red, cuyo proposito es proveer de una serie de reglas y lineamientos que cada componente de la red debe de seguir para poder identificarse, realizar sus transferencias de manera confiable a la vez que se mantiene un uso eficiente del medio de comunicación.

Medio de transmisión.
el medio de transmisión es el componente de un sistema de comunicaciones por el cual se raliza la transferencia de datos, este asi como los requerimientos del sistema son los factores determinantes para seleccionar los protocolos y tecnologias que habran de utilizarse , del mismo es el factor que impondra las limitaciones del sistema.

Actualmente los medios en mas uso con los alambricos, que llevan la información atravez de una linea de material conductor o de fribra optica y los inalambricos, los cuales emiten una señal adecuadamente modulada en el aire.

Justificación.

Asi como las redes de datos se han extendido hasta convertirse en una parte escencial de la industria y servicios tambien lo a hecho la necesidad de personal capacitado con los conocimientos y habilidades para diseñar, implementar y mantener las redes de datos.

Tal vez no resulte evidente a primera vista, pero la habilidad mas apreciada es el poder mantener, extender y corregir errores en una red ya existente, esto resulta dado que, exceptuando el caso de un diseño de red deficiente o mal planeado, las redes de datos se diseñan e implementan un numero pequeño de ocasiones, llegando a casos donde el diseño e implementación basico puede mantenerse por años sin modificaciones serias.

Los eventos que se presentan con mas frecuencia son los funcionamienos erroneos, ocasionados por una configuración inadecuada, por daños en el hardware y agentes externos, la habilidad y conocimientos para una  eficaz y pronta corrección de estas situaciones es algo que se busca y tiene una gran demanda que seguira aumentando a medida que las redes de datos continuen su extención y aceptación.

Con el proposito de asistir en el mantenimiento de una red de datos se han diseñado y desarollado una gran cantidad de herramientas de analisis, monitoreo y evaluación, las cuales proporcionan información, con diferentes niveles de detalle, sobre el funcionamiento interno de una red, misma información que puede ser utilizada para determirar las causas de una mal funcioamiento y las estrateguias para corregirlo o mitigarlo.

Una de las herramientas disponibles es el analizador de paqueyes de red, esta herramienta tiene como función capturar los paquetes de datos que circulan en la red de modo que sea posible analizar su contenido con detenimiento. A primera vista el capturar los paquetes no parece ser de mucha utilidad y podria pensarse que solo se podra obtener el contenido de los mismos, el cual en varios casos seran datos binarios no legibles y fragmentos de comunicaciónes.

Sin embargo debe de recordarse que un paquede de datos no esta compuesto solo del contenido, si no que posee una serie de capas y envoltorios agregados por los protocolos que residen en las distintas capas del modelo de red y que estas capas y envoltorios contienen los parametros con los que cada uno de los protocolos esta operando de modo que se revelan el funcionamiento interno de la red permitiendo una visión mas clara de los procesos que conforman la transmisión y permite identificar donde esta ocurriendo el mal funcionamoento de la red.

Las aplicaciones del analizador de paquetes de red van mas halla de detectar problemas en una red, el observar el contenido y parametros de un paquete proporciona valiosa información para detectar problemas de seguridad e intrusiones en la red de datos permitiendo eliminar las debilidades y localizar intrusos de modo que se puedan aplicar las politicas internas de la empresa asi como procesos legales necesarios.

Otro de los usos del analisis de paquetes es la investigación y enseñanza sobre redes de datos, el nivel de detalle sobre el proceso interno de la red es de extrema utilidad se desee depurar un nuevo protocolo de red o proporcionar una visión a bajo nivel del proceso de transferencia de información en una red de datos.

Objetivos.

Presentar los conceptos basicos sobre los cuales estan cimentadas las tecnologias de redes de datos asi como la terminologia comunmente utilizados en ese ambito, todo esto con el proposito de permitir no solo la comprensión de las secciones subsecuentes, sino de proporcionar conocimientos que permitan recurrir a otras fuentes de información sobre el tema.

Se entrara en detalle respecto a los protocolos de red mas utilizados en la actualidad entrando en detalle sobre el proposito para el que fuerón creados, su operación basica, sus ventajas sobre otros protocolos con objetivos similares, sus desventajas,  la estructura interna de los paquetes de datos, las señales de control utilizadas, la estandarización oficial de los mismos y en que dirección esta avanzando su desarollo.

Una vez que se conoscan las razones y objetivos de las redes de datos y los protocolos de red se presentara uno de los metodos para la detección y correción de errores en los mismos, El analisis de paquetes de red.

Dicha sección presentara el marco historico del desarollo de los analizadores de paquetes, los principios teoricos de su operación, las ventajas en su uso, las desventajas, el tipo de situaciones que pueden ayudar a solucinar asi como las opciones disponibles en el mercado actual.

Subsecuentemente presentaran los detalles para la operación del analizador de paquetes Wireshark detallando lo mas posible el proceso captura de paquetes, los diversos parametros para realizar la captura, como realizar una captura en una red inalambrica, los diferentes analisis que pueden realizarse, la metodologia para interpretar los resultados y como almacenar los resultados.

El por que de este blog

De forma muy escueta la razón por que que existe este blog es servir como el borrador de mi tesis de licenciatura, me pareció una forma sencilla de publicar y mas importante de mantener a salvo los datos, experimentos y texto redactado.

A su vez esta la esperanza de que los comentarios y opiniones que aparezcan me permitan corregir, mejorar  o agregar mas información o experimentos según sea necesario, sin mencionar que permite compartir los resultados y avances de manera mucho mas veloz que el cargar los archivos .doc o .pdf en una memoria USB, y con menos probabilidades de un problema con virus.

Como se inician las conexiones TCP: La Negociación en tres pasos

Una de las características del Protocolo de Control de Transferencia, o TCP, es e que esta orientado a conexiones.

Esto sencillamente significa que antes de realizar una transferencia de datos el emisor y receptor se identifican y se ponen de a acuerdo en como enviar los datos.

Como la mayoría de los protocolos usados en Internet operan sobre el protocolo TCP, observar esta característica podria ser de utilidad.

Figura 1: Negociación en tres pasos.

La figura 1 muestra como se realiza el proceso, como su nombre lo indica la negociación se realiza por medio de tres transmisiones, durante las cuales el campo “Sequence Number” y las banderas en el paquete TCP toman una serie de valores específicos.

En proceso es en esencia el siguiente:

  1. El cliente envía un paquete con la bandera SYN al servidor
  2. Si el servidor proporciona el servicio deseado responde con un paquete con las banderas SYN y ACK activadas.
  3. En cliente responde enviando un paquete con la bandera ACK.
  4. El cliente comienza las peticiones al servidor.
Con el propósito de demostrar esto, se usara Wireshark para capturar y analizar los paquetes que conforman la negociación de tres pasos.
El primer paso consiste en usar el Wireshark para capturar una transferencia de algún protocolo que funcione sobre TCP, para el ejemplo se capturara una transmisión en HTTP, como se vio en un experimento anterior.
Una vez que se hallan capturado los paquetes se obtendrá una pantalla similar a la figura 2.

Figura 2: Paquetes capturados.

Ahora aplicaremos un filtro para solo observar los paquetes TCP, para esto escriba “tcp” en el campo filtro y presione aplicar, esto le dara una pantalla similar a la Figura 3.

Figura 3: Paquetes TCP.

Si observa la columna tipo, notara que los paquetes HTTP también fueron incluidos por el filtro, esto se debe a, que como se menciono anteriormente, el protocolo HTTP funciona sobre TCP, por lo que incluye las cabeceras y tramas del ultimo protocolo.

Observando la columna Info de los paquetes notara que existen varios donde aparecen las cadenas de texto “[SYN]”, “[SYN, ACK]” y “[ACK]”, estos son los paquetes que examinaremos a detalle.

Figura 4: Contenido del paquete SYN.

Para esto de doble click sobre alguno de los paquetes que contenga la cadena de texto “[SYN]”, esto abrirá una ventana similar a la figura 4.

Observe los campos “Sequence Number” y “Flags“, ya que estos le indican al servidor que se desea iniciar una conexión.

Ahora busque algún paquete con la cadena “[SYN, ACK]” en el campo info y de doble click sobre este, conseguirá una ventana como muestra la figura 5.

Figura 5: Contenido del paquete SYN, ACK.

En este paquete hay varios detalles que a los cuales prestar atencion, el primero que si bien podria parecer obvio es que el paquete fue enviado por el servidor, a diferencia del paquete SYN que fue generado por el cliente.

Tambien notara que hay un campo nuevo que no apareció en el paquete SYN el campo
“Acknowledgement Number” y que el campo de banderas ahora tiene activas las banderas SYN y ACK, pero el campo “Sequence Number” permaneció sin cambios.

Ahora bosque y de doble click sobre un paquete con la cadena de texto “[ACK]” en el campo info, la ventana resultante lucirá como la figura 6.

Figura 6: Paquete ACK.

Este paquete fue generado por el cliente y enviado al servidor y es la parte final de la negociación en tres pasos, los cambios que pueden observarse con respecto al paquete SYN-ACK estan en los campos “Sequence Number” el cual ahora tiene el valor de 1 y en la campod e banderas el cual ya solo contiene la bandera ACK, el campo “Acknowledgement Number” permanece sin cambios.

Una vez que estos tres paquetes se han enviado y recibido exitosamente el cliente puede comenzar las solicitudes al servicio que desea utilizar.

Análisis de una transferencia HTTP

Ahora que se tiene algo de familiaridad con el modo en que opera el protocolo HTTP es tiempo de capturar una transferencia completa con el fin de analizarla.

El procedimiento a seguir es similar al usado en el experimento anterior, se iniciara la captura de paquetes en Wireshark, tras lo cual se accederá a una pagina web por medio del navegadory se esperara a que cargue por completo, una vez que eso ocurra se detendrá la captura de paquetes.

Para este ejemplo el sitio que se visitara es el del Web Consortium, esto es debido a la sencillez del sitio y a que cumple con la totalidad del estándar HTML, lo que hará mas clara la transferencia, la dirección del sitio es http://www.w3.org/ .

Una vez que halla realizado la captura obtendrá una pantalla similar a la figura 1.

Figura 1: Paquetes capturados.

Ahora necesitamos la dirección IP del sitio, para obtenerla hay que filtrar los paquetes DNS, para esto escriba “dns” en el campo de filtros y aplique, esto le mostrara los paquetes DNS, examine el contenido de los paquetes “Standart Querry Response” hasta encontrar la dirección IP del sitio http://www.w3.org, como muestran las figuras 2 y 3.

Figura2: Paquetes DNS.

Figura 3: Paquete de respuesta a http://www.w3.org.

Como se puede observar la dirección IP de http://www.w3.org es 128.30.52.37, con ese dato ya es posible filtrar los paquetes enviados a y desde esa dirección, para hacer esto basta aplicar el filtro
“ip.adrr == 128.30.52.37” en el campo de filtros, tras hacer esto la pantalla solo mostrara los paquetes que se enviaron a y desde esa dirección IP, consiguiendo una pantalla similar a la figura 4.

Figura 4: Paquetes enviados a y desde 128.30.52.37

Puede observarse que la columna “Protocol” indica que protocolo sigue un paquete en particular, y que hay paquetes que siguen varios protocolos enviados a y desde la dirección de w3.org, como solo deseamos examinar los paquetes de un protocolo en particular haremos uso de una característica de los filtros de Wireshark, el poder usar conectores lógicos.

Estos se comportan de manera similar a los conectores en lenguajes de programación permitiendo expresar varias condiciones que deben de cumplirse, para este ejemplo en particular utilizaremos el conector AND, el cual se indica escribiendo “&&” en el campo de filtros.

El filtro que aplicaremos deberá mostrar los paquetes enviados y recibidos desde 128.30.52.37 y que sean del protocolo HTTP, esto se expresa de la siguiente manera “ip.adrr == 128.30.52.37 && http“, basta con escribir esa expresión en el campo de filtro y aplicar para conseguir el resultado, como muestra la figura 5.

Figura 5: Paquetes HTTP enviados/recibidos desde 128.30.52.37.

Ahora se puede observar como el cliente solicito cada elemento de la pagina con la solicitud GET y el servidor respondió con el código 200 OK, como se detallo en el post anterior.

Los datos que pueden obtenerse con este análisis son diversos, analizando el contenido de las solicitudes GET puede saberse con precisión que elementos de una pagina y que versión de estos fueron solicitados,  de modo que puede detectarse con facilidad algún desperfecto en el código HTML.

Simultáneamente el analizar las respuestas del servidor permite identificar con precisión cualquier error que halla ocurrido y examinando los tiempos puede descubrirse algún cuello de botella en el trafico del servidor.

Funcionamiento basico del protocolo HTTP

Las siglas HTTP seguramente le resultaran familiares si a hecho uso de algún navegador de Internet, estas siglas se refieren al Protocolo de Transferencia de Hipertexto, el cual forma la base sobre la que operan la gran mayoría de las paginas web en la actualidad.

Es por medio de este protocolo que un navegador de internet puede solicitar a un servidor los diferentes elementos que conforman una pagina web, sean imágenes, funcionen en Javascript,  hojas de estilo CSS y por supuesto documentos creados con el Lenguaje de Marcado de Hipertexto o HTML, estos se descargaran del servidor, se almacenaran en la maquina cliente y serán usados por el navegador de Internet construir la pagina.

El protocolo opera de una manera bastante sencilla de comprender, una vez que se a establecido la comunicación entre el cliente y el servidor, el cliente envía mensajes donde solicita los diferentes elementos que componen la pagina, tras recibir y procesar el mensaje el servidor emite una respuesta acorde.

Los mensajes mas comunes enviados por el cliente son para solicitar que se envíen los componentes de la pagina, estos tienen la cabecera en el formato

GET

Como se puede apreciar en la Figura 1.

Figura 1: Cabecera de la solicitud GET.

En el caso particular de la Figura 1 el cliente esta solicitando un archivo ubicado en “/2008/site/images/search-button” por medio de la vercion 1.1 del protocolo HTTP.

Una vez que el servidor HTTP recibe este paquete procesa la solicitud y responde con enviando un paquete con cabecera en el formato

HTTP/

La sección en particular puede tomar varios valores dependiendo del resultado de la solicitud los valores mas comunes que puede tomar se muestran a continuación.

  • 200 OK: Solicitud exitosa, al final del paquete habrá una sección que contiene los datos solicitados.
  • 301 Moved Permanently: los datos solicitados han sido reubicados, la cabecera “Location” contiene la nueva dirección, tras recibir esta respuesta el cliente ajusta las siguientes peticiones de manera adecuada.
  • 400 Bad Request: El servidor no comprendio la solicitud del cliente.
  • 404 Not Found: El elemento solicitado no fue encontrado.
  • 505 HTTP Version not suported: La version de http solicitada por el cliente no es soportada por el servidor.

En la mayoría de las situaciones la respuesta sera 200 OK, esta a su vez tiene un efecto en el paquete ya que agrega una sección extra.

Figura 2: Respuesta del servidor HTTP.

Como puede observarse  en la Figura 2, la cabecera HTTP tiene la respuesta 200 OK, indicando que la solicitud fue exitosa, un par de lineas mas abajo puede leerse

“Content-Location: search-button.png”

Esta linea le indica al cliente que el archivo que corresponde a su solicitud tiene el nombre “search-button.png”, el contenido de este archivo se localiza en la ultima sección del paquete, que para el caso particular de la figura 2 indica es un archivo en el formato Portable Network Graphics, el contenido de esta ultima sección sera almacenado por el navegador para mostrar esa imagen, este mismo proceso se repite con los demás archivos que envié el servidor.