universidad autónoma metropolitana unidad azcapotzalco una ...
universidad autónoma metropolitana unidad azcapotzalco una ...
universidad autónoma metropolitana unidad azcapotzalco una ...
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