06.01.2015 Views

universidad autónoma metropolitana unidad azcapotzalco una ...

universidad autónoma metropolitana unidad azcapotzalco una ...

universidad autónoma metropolitana unidad azcapotzalco una ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

APÉNDICE A. CODIGO FUENTE DE LA HERRAMIENTA DE GESTION DE REDES VIRTUALES<br />

#define TH_SYN<br />

#define TH_RST<br />

#define TH_PUSH<br />

#define TH_ACK<br />

#define TH_URG<br />

0x02<br />

0x04<br />

0x08<br />

0x10<br />

0x20<br />

A.2.- EL MONITOR DE LA HERRAMIENTA DE GESTIÓN DE<br />

REDES VIRTUALES<br />

La captura y análisis de todos los paquetes transmitidos puede ser, en ocasiones, necesaria si se<br />

quiere monitorizar la red para comprobar su carga y realizar estadísticas de uso, o bien cuando se<br />

desee comprobar que un funcionamiento incorrecto de la red no se debe a la transmisión de<br />

tramas erróneas por parte de un programa o dispositivo mal configurado.<br />

Cuando se desee realizar <strong>una</strong> captura de paquetes a bajo nivel, se deben usar las facilidades que<br />

proporcione el sistema operativo para tal fin. Algunos ejemplos son (véase figura 3.23):<br />

Método<br />

BPF (Berkeley Packet Filter)<br />

DLPI (Data Link Provider Interface)<br />

NIT (Network Interface Tap)<br />

SNOOP<br />

SNIT (Streams Networks Interface Tap)<br />

SOCKET_PACKET<br />

LSF (Linux Socket Filter)<br />

Sistema Operativo<br />

Variantes de BSD<br />

Solaris, HP-UX, SCO Openserver<br />

SunOS<br />

Iris<br />

Linux/Windows<br />

Linux/Windows<br />

Figura 3.23.- Métodos de acceso por Sistema Operativo<br />

En el programa de monitoreo utiliza SOCK_PACKET, ya que la plataforma de desarrollo principal<br />

en la que se ha centrado el desarrollo es Linux/Windows. Si se desea tener <strong>una</strong> mayor<br />

portabilidad entre plataformas de este tipo de programas, se usa <strong>una</strong> biblioteca que aísle la<br />

aplicación de las particularidades de cada sistema operativo a la hora de capturar paquetes. Ésta<br />

es la función de libpcap, la biblioteca de uso de la Herramienta de Gestión de Redes Virtuales.<br />

22.- Función pcap _open_live()<br />

pcap_t* pcap_open_live(char *dev, int slen, int prm, int to~s, char *ebuf)<br />

La función pcap_open_Iive() prepara las estructuras de datos necesarias para comenzar la<br />

captura de paquetes devolviendo un descriptor que puede ser utilizado en las restantes<br />

operaciones de captura. En caso de error se devuelve NULL.<br />

• dev indica el dispositivo sobre el cual se hace la captura. El dispositivo se identifica por<br />

<strong>una</strong> cadena de caracteres, algunos ejemplos de dispositivos válidos pueden ser "eth0" o<br />

"ppp0".<br />

• sIen indica el número máximo de bytes que se pueden capturar. Este valor depende de la<br />

tecnología de red que se esta usando, ya que según sea ésta así varian los tamaños de<br />

la trama.<br />

• prm actúa como un flag lógico, indicando si el dispositivo de captura se colocan en modo<br />

promiscuo o no.<br />

• to_ms es un valor entero que indica un timeout de lectura en milisegundos.<br />

• ebuf hace referencia a un buffer donde en caso de error se guarda en <strong>una</strong> cadena<br />

explicativa del problema surgido.<br />

123

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!