ESCUELA POLITÉCNICA NACIONA L

205
ESCUELA POLITÉCNICA NACIONAL ESCUELA DE INGENIERÍA MONITOREO DE DISPOSITIVOS CONFIGURADOS CON TCP / IP PROYECTO PREVIO A LA OBTENCIÓN DEL TITULO DE INGENIERO ESPECIALISTA EN ELECTRÓNICA Y TELECOMUNICACIONES MARCELO RICARDO FILIAN NARVÁEZ DIRECTOR: Msc. Carlos Egas Quito, Mayo del 2002

Transcript of ESCUELA POLITÉCNICA NACIONA L

Page 1: ESCUELA POLITÉCNICA NACIONA L

ESCUELA POLITÉCNICA NACIONAL

ESCUELA DE INGENIERÍA

MONITOREO DE DISPOSITIVOS CONFIGURADOS CONTCP / IP

PROYECTO PREVIO A LA OBTENCIÓN DEL TITULO DE INGENIEROESPECIALISTA EN ELECTRÓNICA Y TELECOMUNICACIONES

MARCELO RICARDO FILIAN NARVÁEZ

DIRECTOR: Msc. Carlos Egas

Quito, Mayo del 2002

Page 2: ESCUELA POLITÉCNICA NACIONA L

DECLARACIÓN

Yo Marcelo Ricardo Filian Narváez, declaro que el trabajo aquí descrito es de mi

autoría; que no ha sido previamente presentada para ningún grado o calificación

profesional; y, que he consultado las referencias bibliográficas que se incluyen en

este documento.

La Escuela Politécnica Nacional, puede hacer uso de los derechos

correspondientes a este trabajo, según lo establecido por la Ley, Reglamento de

Propiedad Intelectual y por la normatividad institucional vigente.

Marcelo Ricardo Filian Narváez

Page 3: ESCUELA POLITÉCNICA NACIONA L

CERTIFICACIÓN

Certifico que el presente trabajo fue desarrollado por Marcelo Ricardo Filian

Narváez, bajo mi supervisión.

MSC. CARLOS EGAS

DIRECTOR DE PROYECTO

Page 4: ESCUELA POLITÉCNICA NACIONA L

AGRADECIMIENTOS

¡ A Dios, a la Madre Dolorosa, a mis padres, a mi esposa, a todos mis familiares y

\s que me dieron el apoyo necesario para culminar esta Carrera.

Page 5: ESCUELA POLITÉCNICA NACIONA L

DEDICATORIA

A tí, Britney Marcela, luz de mi vida.

Page 6: ESCUELA POLITÉCNICA NACIONA L

CONTENIDO

CAPÍTULO 1

FUNDAMENTOS TEÓRICOS

1.1 REDES DE ÁREA LOCAL 11.1.1 DEFINICIÓN 11.2 TIPOS DE REDES 11.2.1 INTRODUCCIÓN 11.2.2 RED TIPO ESTRELLA 31.2.3 RED TIPO BUS 41.2.4 RED TIPO ANILLO 51.3 PROTOCOLO DE RED TCP/IP 61.3.1 PROTOCOLOS DE RED 61.3.2 CAPAS CONCEPTUALES DEL SOFTWARE DE

PROTOCOLO 81.3.3 FUNCIONALIDAD DE LAS CAPAS 101.3.4 MODELO DE REFERENCIA OSI 111.3.5 MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP

DE INTERNET 121.3.5.1 CAPA INTERFAZ DE RED 131.3.5.2 CAPA DE INTERNET 131.3.5.3 CAPA DE TRANSPORTE 151.3.5.4 CAPA DE APLICACIÓN 151.3.6 PRINCIPIO DE ESTRATIFICACIÓN POR CAPAS DE

PROTOCOLOS 161.3.7 FRONTERAS IMPORTANTES EN EL MODELO TCP/IP 171.3.7.1 FRONTERA DE DIRECCIÓN DE PROTOCOLO DE ALTO

NIVEL 171.3.7.2 FRONTERA DE SISTEMA OPERATIVO 181.4 ENCAPSULAMIENTO DE DATOS 181.4.1 DATAGRAMA IP 201.4.2 PAQUETE IP 211.4.3 ESTRUCTURA DE UN DATAGRAMA IP 211.4.4 ENCABEZADO IP 221.4.4.1 LONGITUD DE LA CABECERA 221.4.4.2 VERSIÓN 231.4.4.3 TIPO DE SERVICIO 231.4.4.4 LONGITUD TOTAL 231.4.4.5 IDENTIFICACIÓN 231.4.4.6 FRAGMENTOS OFFSET 241.4.4.7 FLAGS 24

Page 7: ESCUELA POLITÉCNICA NACIONA L

1 4.4.8 TIEMPO DE VIDA 241.4.4.9 PROTOCOLO 251 4.4.10 CHEKSUM 251.4.4.11 DIRECCIÓN DE ORIGEN. 251.4.4.12 DIRECCIÓN DE DESTINO 251.4.4.13 OPCIONES 261.4.4.14 DATOS 271.4.4.14 PADDING 281.4.5 DIRECCIONES IP 281.4.5.1 CLASES DE DIRECCIONES IP 281.4.5.1.1 DIRECCIÓN IP CLASE A 281.4.5.1.2 DIRECCIÓN IP CLASE B 281.4.5.1.3 DIRECCIÓN IP CLASE C 291.4.5.1.4 DIRECCIÓN IP CLASE D 291.4.5.1.5 DIRECCIÓN IP CLASE E 291.4.5.2 IP (INTERNET PROTOCOL ) VERSIÓN 6 291.4.5.2.1 FORMATO DE CABECERA 291.4.5.2.2 DIRECCIÓN IP VERSIÓN 6 311.5 PROTOCOLO DE MENSAJES DE INTERNET 321.5.1 INTRODUCCIÓN 321.5.2 PROTOCOLO ICMP 331.5.3 REPORTE DE ERRORES 341.5.4 ENTREGA DE MENSAJES ICMP 341.5.5 FORMATO DE MENSAJES ICMP 351.5.6 SOLICITUD DE RESPUESTA DE ECO - PING 381.6 INTERFACE DE PROGRAMA DE APLICACIÓN (API)

WINDOWS SpCKETS 391.6.1 PROCESO BÁSICO DE CONEXIÓN DE UN SOCKET 391.6.2 INTRODUCCIÓN A WINSOCK 411.6.3 DEFINICIÓN DE SOCKET 441.6.4 ESTRUCTURA SIMPLE DE DATOS DE UN SOCKET 451.6.5 CONFIGURACIÓN DE UN SOCKET 461.6.6 CONEXIÓN DE UN SOCKET 471.6.7 TRANSMISIÓN DE DATOS 481.6.8 SOCKETS SIN CONEXIÓN 501.6.9 RECEPCIÓN DE DATOS POR UN SOCKET 501.6.9.1 DESCRIPCIÓN DEL PROCESO 511.6.10 REVISIÓN DE LAS FUNCIONES DE LA API WINDOWS

SOCKETS 521.6.10.1 FUNCIÓN SOCKET 531.6.10.2 FUNCIÓN DE BASE DE DATOS 551 .7 PROGRAMACIÓN CON WINDOWS SOCKETS 571.7.1 DESCRIPTOR DE SOCKET 571.7.1.1 FUNCIÓN SELECT 581-7.1.2 HOOK DE BLOQUEO 60

Page 8: ESCUELA POLITÉCNICA NACIONA L

1.7.2 POSICIONES DE WINSOCK DENTRO DEL AMBIENTEWINDOWS 62

1.8 APLICACIÓN DEL ENTORNO DE DESARROLLO DEVISUAL C++ PARA EL MANEJO DE APLICACIONES CONSOCKETS 64

1.8.1 PROGRAMACIÓN ORIENTADA A OBJETOS CON VISUALC++ 64

1.8.1.1 ABSTRACCIÓN 651.8.1.2 ENCAPSULACIÓN 651.8.1.3 MODULARIDAD 661.8.1.4 JERARQUIZACIÓN 661.8.1.4.1 RELACIÓN DE LOS CONCEPTOS USANDO EL MODELO

DE OBJETOS 671.8.1.5 TIPIFICADO 671.8.1.6 CONCURRENCIA 681.8.1.7 PERSISTENCIA 681.8.2 CLASES Y OBJETOS 681.8.2.1 OBJETOS 681.8.2.1.1 ESTADO DE UN OBJETO 691.8.2.1.2 IDENTIDAD DE UN OBJETO 691.8.2.1.3 COMPORTAMIENTO DE UN OBJETO 691.8.2.1.4 RELACIÓN ENTRE OBJETOS 681.8.2.2 CLASES 701.8.2.2.1 RELACIÓN ENTRE CLASES 711.8.2.3 RELACIÓN ENTRE CLASES Y OBJETOS 721.8.2.4 ANÁLISIS ORIENTADO A OBJETOS 731.8.2.5 NOTACIÓN 731.8.2.6 CONCLUSIÓN 741.8.3 WINDOWS SOCKETS Y EL ENTORNO DE VISUAL C++ 751.8.3.1 CREACIÓN DE UN SOCKET 751.8.3.2 ESTABLECIMIENTO DE UNA CONEXIÓN 761.8.3.3 ENVIÓ Y RECEPCIÓN DE MENSAJES 781.8.34 CERRAR LA CONEXIÓN 811.8.3.5 DETECCIÓN DE ERRORES 81

Page 9: ESCUELA POLITÉCNICA NACIONA L

CAPITULO 2

DISEÑO E IMPLEMENTACIÓN DE UN PROGRAMA PARA MONITOREO DEDISPOSITIVOS CONFIGURADOS CON TCP / IP

2.1 OBJETIVO 822.2 REQUERIMIENTOS DE SOFWARE PARA EL DISEÑO 832.3 REQUERIMIENTOS DE HARDWARE PARA DISEÑO 842.4 DISEÑO DEL PROGRAMA 852.4.1 CONTENIDO BÁSICO DEL DISEÑO 85

! 2.4.1.1 DATOS DE ENTRADA 852.4.1.2 DATOS DE SALIDA 862.4.1.3 OPCIONES 862.4.1.4 DIAGRAMA BÁSICO DE LA VENTANA DE DIÁLOGO

PRINCIPAL 882.4.2 CREACIÓN DEL OBJETO Y ASIGNACIÓN DE NOMBRES Y

FUNCIONES 882.4.2.1 OBJETO SELECCIONAR 89

i 2.4.2.2 OBJETO PRIMERA OPCIÓN DE MONITOREO 892.4.2.3 OBJETO SEGUNDA OPCIÓN DE MONITOREO 89

¡ 2.4.2.4 OBJETO INGRESO DE DIRECCIÓN IP 89i 2.4.2.5 OBJETO INGRESO DIRECCIÓN IP FINAL 90! 2.4.2.6 OBJETO INGRESO DE SECUENCIA DE MONITOREO 90¡ 2.4.2.7 OBJETO INGRESO DE TIEMPO DE MONITOREO 90| 2.4.2.8 OBJETO EJECUCIÓN DE MONITOREO 90i 2.4.2.9 OBJETO VISUALIZACIÓN DE DIRECCIÓN IP A1 MONITOREAR 91i 2.4.2.10 OBJETO VISUALIZACIÓN DE RESULTADOS DE

MONITOREO 911 2.4.2.11 OBJETO OPCIÓN AYUDA 91i 2.4.2.12 OBJETO OPCIÓN INICIALIZAR PANTALLA 91

2.4.2.13 OBJETO OPCIÓN IMPRIMIR 92,; 2.4.2.14 OBJETO OPCIÓN SALIR 92i 2.4.3 PRESENTACIÓN BÁSICA DE INTERFAZ PROGRAMA! USUARIO 92? 2.5 IMPLEMENTACIÓN DEL PROGRAMA 93í 2.5.1 CREACIÓN DEL PROYECTO CON EL APPWIZARD DE MFC 93f 2.5.2 IMPLEMENTACIÓN DE LA VENTANA PRINCIPAL 97

2.5.2.1 PRESENTACIÓN DE LA VENTANA PRINCIPAL 1242.5.3 IMPLEMENTACIÓN DE UN MENÚ 124

\1 PRESENTACIÓN DE LA VENTANA PRINCIPAL INCLUIDA EL

Page 10: ESCUELA POLITÉCNICA NACIONA L

\Ú 133S 2.5.4 IMPLEMENTAC1ÓN DE LAS CLASES 133í 2.5.4.1 CLASE CMONITORJCMPDIg 134I 2.5.4.2 CLASE CMONITORJCMPApp 135í 2.5.5 IMPLEMENTACIÓN DE LAS ESTRUCTURAS DE CLASE 135

2.5.6 DEFINICIÓN DE VARIABLES DE LA CLASECMONITOR_ICMP_DLg 137

2.5.7 IMPLEMENTACIÓN DE LOS CONTROLES - ANÁLISIS DEMÉTODOS 138

2.5.7.1 FUNCIÓN OnBend(), PARA SALIR DEL PROGRAMA 1392.5.7.2 FUNCIÓN OnBLimpiar (), PARA IN1CIALIZAR LA PANTALLA 1402.5.7.3 FUNCIÓN OnBsend ( ), PARA SELECCIONAR LA OPCIÓN

PING 1422.5.7.4 FUNCIÓN OnReceive( ), PARA SELECCIONAR LA OPCIÓN

MONITOREO A UNA RED LOCAL 1442.5.7.5 FUNCIÓN OnBsend(), PARA EJECUTAR MONITOREO 146

CAPITULO 3

RESULTADOS Y PRUEBAS

3.1 RESULTADOS 1533.1.1 MONITOREANDO DESDE UNA PC NO CONECTADA A RED 1533.1.2 MONITOREANDO DESDE UNA PC CONECTADA A UNA RED

DE Á^EA LOCAL 1573.2 PRUEBAS 1643.2.1 MENSAJES DE ERROR 1643.2.2 MONITOREO A DISPOSITIVOS DENTRO DE LA RED 166

CAPITULO 4

CONCLUSIONES Y RECOMENDACIONES

4.1 CONCLUSIONES 1704.2 RECOMENDACIONES 172

Page 11: ESCUELA POLITÉCNICA NACIONA L

RESUMEN

Para diseñar e implementar un programa para monitoreo de dispositivos

configurados con el Protocolo de Comunicaciones TCP / IP, se deben tomar en

cuenta dos aspectos fundamentales, la teoría acerca de Windows Sockets para

implementar aplicaciones para redes y sistemas de comunicaciones y la

programación orientada a objetos con visual C++, cuyo lenguaje proporciona las

herramientas necesarias para darle funcionalidad al programa de monitoreo de

redes.

Por dicha razón se ha dividido este Proyecto de Titulación en cuatro capítulos

bien diferenciados.

El primer capítulo da un enfoque muy centrado acerca de las redes de área

local LAN, del protocolo de comunicaciones TCP / IP, de cómo se transmite la

información por las redes a través de estos protocolos, además se revisa la

teoría de Windows Sockets y cómo poder implementar una aplicación usando

Visual C++ cómo herramienta de programación.

El segundo capítulo se enfoca en el diseño e implementación del programa,

explica los parámetros de diseño y los requerimientos tanto de software como de

hardware que se necesitan para crear la aplicación. Paso a paso se explica la

f forma en que se armó el proyecto. Se revisa los objetos creados, la asignación

Í de nombres y variables para los diferentes controles que usará el programa.

Luego de la explicación del diseño se muestra la forma de dar funcionalidad a

cada objeto, es la etapa de implementación, se presenta la pantalla principal y

la función de cada uno de los elementos que componen la clase diálogo.

Page 12: ESCUELA POLITÉCNICA NACIONA L

En el tercer capítulo se muestra los resultados luego de haber implementado el

programa para monitoreo, se explica cómo será la interfaz de visualización para

el usuario, se analiza los posibles mensajes de error que el programa reportará

al ingresar datos que no corresponden y por último se prueba en una red LAN

real. Se indica los resultados luego de monitorear a ciertos dispositivos y los

tiempos que demora en dar una respuesta de eco. Las pruebas realizadas

muestran valores reales de monitoreo.

El cuarto capítulo indica ciertas conclusiones luego de realizado el proyecto y

recomendaciones para los usuarios futuros del programa y para aquellos que se

involucren en el campo de Programación en Internet.

Page 13: ESCUELA POLITÉCNICA NACIONA L

PRESENTACIÓN

La expansión de las redes informáticas y de telecomunicaciones, impiementadas

en todo el mundo que usan el protocolo de red TCP/iP para la transmisión de

información, crecen cada día más y el monitoreo de las mismas es un

requerimiento muy necesario cuyo objetivo principal es generar reportes de la

disponibilidad y accesibilidad de todos los dispositivos de comunicaciones

presentes en dicha red, para llevar una efectiva planificación, organización,

supervisión y control de modo que se garantice un nivel de servicio eficiente por

parte de los administradores de la red.

En ios casos más normales un sistema de redes interconectadas (internets) no

toman topologías específicas sino que conectan las redes sin importar sus

topologías o tecnologías, estas internets utilizan dispositivos especiales, llamados

host, repetidores, puentes, enrutadores etc, para conectar las redes

independientes, en el caso de las redes de área local utilizan tales dispositivos

para extender la conexión dentro de su área.

El presente trabajo se ha desarrollado con el propósito de crear una herramienta

de software que permita monitorear a todo dispositivo configurado bajo el

¡protocolo de red TCP/IP dentro de redes de área local (LAN). Este programa de

[aplicación desarrollado utiliza una Interfaz de Programa de Aplicación (API,

Application Program Interface), que es un grupo de funciones que se utiliza para

desarrollar software. Cabe recalcar que en los últimos años el ambiente de

programación que se ha insertado aceleradamente en el mercado es el de

Microsoft Windows®, por esto la herramienta de programación a utilizar será un

software denominado Windows Sockets más conocido como Winsock que es una

API basada en el paradigma de sockets, esta API se dirige especialmente a la

familia de sistemas operativos de Microsoft Windows. Como Windows es una de

las plataformas de sistema operativo más populares en la actualidad, la

Page 14: ESCUELA POLITÉCNICA NACIONA L

especificación de Windows Sockets define un estándar aceptado para el

desarrollo de programas en ambiente Windows en redes TCP/IP.

La idea básica de MONITOREO tal como lo definiesen los administradores o

usuarios de la red consiste en determinar si ciertos anfitriones remotos están

disponibles y accesibles en la red en ése momento para lo cual se transmite una

solicitud de eco y después se mide el tiempo que demora en llegar las respuestas.

Page 15: ESCUELA POLITÉCNICA NACIONA L

CAPITULO 1

FUNDAMENTOS TEÓRICOS

1.1 REDES DE ÁREA LOCAL

1.1.1 DEFINICIÓN

Es un sistema de comunicación entre varios dispositivos electrónicos y

computadoras interconectadas entre sí, que permiten compartir información y

recursos, con la característica de que la distancia entre éstas debe ser pequeña.

La topología o la forma de conexión de los dispositivos en la red, depende de

algunos aspectos como la distancia y el medio de comunicación, ya que esto

determina, la velocidad del sistema.

1.2 TIPOS DE REDES

1.2.1 INTRODUCCIÓN

Las redes de área local, generalmente llamadas LAN (Local Área Networks), son

redes de propiedad privada dentro de un solo edificio o campus de hasta unos

cuantos kilómetros de extensión. Se usan ampliamente para conectar

computadoras personales y estaciones de trabajo en oficinas de compañías y

fábricas con objeto de compartir recursos (por ejemplo, impresoras) e

intercambiar información. Las LAN se distinguen de otro tipo de redes por tres

características: (1) su tamaño, (2) su tecnología de transmisión, y (3) su topología.

Las LAN están restringidas en tamaño, lo cual significa que el tiempo de

transmisión del peor caso está limitado y se conoce de antemano. Conocer este

límite hace posible usar ciertos tipos de diseños que de otra manera no serían

prácticos, y también simplifica la administración de la red.

Page 16: ESCUELA POLITÉCNICA NACIONA L

Las LAN a menudo usan una tecnología de transmisión que consiste en un cable

sencillo al cual están conectadas todas las máquinas. Las LAN tradicionales

operan a velocidades de 10 a 100 Mbps, tienen bajo retardo (décimas de

| microsegundos) y experimentan muy pocos errores. Las LAN más nuevas pueden

operar a velocidades muy altas, de hasta Gigabits por segundo (Gbps).

En una red de bus (esto es, un cable lineal), en cualquier instante una

computadora es la máquina maestra y puede transmitir; se pide a las otras

máquinas que se abstengan de enviar mensajes. Es necesario un mecanismo de

arbitraje para resolver conflictos cuando dos o más máquinas quieren transmitir

simultáneamente. El mecanismo de arbitraje puede ser centralizado o distribuido.

Por ejemplo, la IEEE 802.3, popularmente llamada Ethernet, es una red de

transmisión basada en bus con control de operación descentralizado a 10 o 100

Mbps. Las computadoras de una Ethernet pueden transmitir cuando quieran; si

dos o más paquetes chocan, cada computadora sólo espera un tiempo aleatorio y

lo vuelve a intentar.

i Un segundo tipo de sistema de difusión es el anillo. En un anillo, cada bit se

i propaga por si mismo, sin esperar el resto del paquete al cual pertenece.'| Típicamente, cada bit recorre el anillo entero en el tiempo que toma transmitirí

•< unos pocos bits, a veces antes de que el paquete completo se haya transmitido.

Como en todos los sistemas de difusión, se necesitan reglas para arbitrar el

acceso simultáneo al anillo. Se emplea varios métodos. La IEEE 802.5 (el token

ring de IBM), es una popular LAN basada en anillo que opera a 4 y 16 Mbps.

i

i Las redes de difusión se pueden dividir también en estáticas y dinámicas,

| dependiendo de cómo se asigna el canal. Una asignación estática típica divide el

| tiempo en intervalos discretos y ejecuta un algoritmo de asignación cíclica,

permitiendo a cada máquina transmitir únicamente cuando le llega su turno. La

asignación estática desperdicia la capacidad del canal cuando una máquina no

tiene nada que decir durante su segmento asignado, por lo que muchos sistemas

| intentan asignar el canal dinámicamente (es decir, por demanda).

Page 17: ESCUELA POLITÉCNICA NACIONA L

Los métodos de asignación dinámica para un canal común son centralizados o

descentralizados. En el método de asignación del canal centralizado hay una sola

entidad, por ejemplo una unidad de arbitraje del bus, la cual determina quien es el

siguiente. Podría hacer esto aceptando peticiones y tomando una decisión de

acuerdo con un algoritmo interno. En el método de asignación de canal

descentralizado no hay una entidad central; cada máquina debe decidir por sí

misma si transmite o no. Podríamos pensar que esto siempre conduce al caos,

pero no es así.

El otro tipo de LAN se construye con líneas punto a punto. Las líneas individuales

conectan una máquina específica a otra. Una LAN así, es realmente una red de

área amplia en miniatura.

1.2.2 RED TIPO ESTRELLA

Conectar un conjunto de computadoras en estrella es uno de los sistemas más

antiguos, equivale a tener un host central (servidor de archivos o se/ver, hub,

switch), encargada de controlar la información de toda la red. Dicha información

abarca desde los mensajes entre usuarios, datos almacenados en un archivo en

particular, manipulación de archivos, etc.

Para poder instalar este tipo de red, cada una de las computadoras utilizadas

como estaciones de trabajo necesitan de una tarjeta de conexión para lograr la

interface con la computadora o host central.

Page 18: ESCUELA POLITÉCNICA NACIONA L

Fig. 1.1 Red tipo Estrella

1.2.3 RED TIPO BUS

Permite conectar a todas las computadoras de la red en una sola linea

compartiendo el mismo canal de datos (bus), de ahí su nombre. A fin de poder

identificar hacia cual de las computadoras de toda la red se está dirigiendo, se

añade un sufijo al paquete de información, este contiene la dirección de la

computadora que debe recibir la información en particular.

Cada una de las computadoras revisa el mensaje y compara la dirección de la

terminal de recepción, en caso de no ser igual a la propia, se rechaza y en caso

de ser igual la dirección, se acepta el mensaje.

Servidor dela Red

Fig. 1.2 Red Tipo Bus

Page 19: ESCUELA POLITÉCNICA NACIONA L

1.2.4 RED TIPO ANILLO

Consiste en unir una serie de computadoras en un circuito cerrado formando un

anillo por donde circula la información en una sola dirección, factor que permite

tener un control de recepción de mensajes.

La forma interna de comunicación, de una computadora a otra, es similar a la del

canal de datos (Bus), sólo que en este caso se le añade la dirección de la

computadora que envía el mensaje para que la terminal receptora pueda

contestar a la terminal emisora.

Fig. 1.3 Red Tipo Anillo

Page 20: ESCUELA POLITÉCNICA NACIONA L

1.3 PROTOCOLO DE RED TCP / IP

1.3.1 PROTOCOLOS DE RED

Los protocolos permiten especificar o entender una forma de comunicación sin

conocer los detalles del hardware de red de un vendedor en particular. Éstos son

para las comunicaciones entre computadoras, lo que los lenguajes de

programación para la computación. Como en el lenguaje ensamblador, algunos

protocolos describen la comunicación a través de una red física. Por ejemplo, los

detalles del formato de trama de la red Ethernet, las políticas de acceso a la red y

el manejo de errores de trama, se incluyen en un protocolo que describe la

comunicación en una red Ethernet. De la misma forma, los detalles de las

direcciones IP, el formato de los datagramas, y el concepto de entrega no

confiable y sin conexión, se incluyen en el Protocolo Internet.

Los sistemas complejos de comunicación de datos no utilizan un solo protocolo

para manejar todas las tareas de transmisión, sino que requieren de un conjunto

de protocolos. Cuando las máquinas se comunican a través de una red de datos

se presentan varios inconvenientes entre ellos:

• Fallas en el Hardware.- Un anfitrión o un ruteador puede fallar, ya sea

porque el hardware falle o porque el sistema operativo quede fuera de

servicio. Un enlace de transmisión de red puede fallar o desconectarse

accidentalmente. El software de protocolo necesita detectar estas fallas y

restablecer el funcionamiento.

Congestionamiento en la red.- Aunque el hardware y el software estén

funcionando correctamente, éstos tienen una capacidad finita que puede

ser excedida. El software de protocolo debe implantar un arreglo en las

vías de transmisión para que una máquina congestionada no entorpezca el

tráfico.

L

Page 21: ESCUELA POLITÉCNICA NACIONA L

• Paquetes retrasados o perdidos.- Ciertas veces, el envío de paquetes

tiene retrasos muy largos o éstos se pierden. El software de protocolo

necesita aprender acerca de las fallas o debe adaptarse a los retardos.

• Corrupción de datos.- La interferencia eléctrica, magnética o las fallas en

el hardware pueden ocasionar errores de transmisión que alteran el

contenido de los datos transmitidos. El software de protocolo necesita

detectar y reparar estos errores.

• Errores en la secuencia de los datos o duplicación de datos.- Las

redes que ofrecen múltiples rutas pueden entregar los datos fuera de

secuencia o entregar paquetes duplicados. El software de protocolo

necesita reordenar los paquetes y suprimir los duplicados.

Si se consideran en conjunto, todos estos problemas parecen abrumadores. Es

difícil entender cómo se podría escribir un solo protocolo para manejar todos

estos problemas. A partir de una analogía con los lenguajes de programación se

debe ver cómo superar la complejidad de este problema. Si se considera la

subdivisión en cuatro subproblemas conceptuales de las transformaciones

realizadas por un programa, identificando cada una de las partes con el software

que maneja cada subproblema: compilador, ensamblador, editor de enlace y

cargador. Esta división hace posible que el diseñador se concentre en un

subproblema por vez, y también hace posible que el desabollador construya y

pruebe cada parte del software de manera independiente.

Dos observaciones acerca de esta analogía con los lenguajes de programación

ayudarán a aclarar la organización de protocolos. En primer lugar, debe quedar

claro que las partes del software deben mantener un acuerdo sobre el formato

exacto de los datos que pasan entre ellas. Por ejemplo, los datos que pasan del

compilador hacia el ensamblador provienen de un programa definido por el

lenguaje de programación ensamblador. La analogía se sostiene para el caso del

software de comunicación, en el cual se puede ver que varios protocolos definen

la interfaz entre los módulos de software de comunicación. En segundo lugar, las

Page 22: ESCUELA POLITÉCNICA NACIONA L

cuatro partes de la transferencia siguen una secuencia lineal, en la que la salida

del compilador es la entrada del ensamblador y así sucesivamente. El software de

protocolo también utiliza una secuencia lineal.

1.3.2 CAPAS CONCEPTUALES DEL SOFTWARE DE PROTOCOLO.

L

Se analiza los módulos del software de protocolo en una máquina como una pila

vertical constituida por capas, como en la figura siguiente. Cada capa tiene la

responsabilidad de manejar una parte del problema.

Emisor

ICapan

Capa 2

Capa 1

Receotor

ICapan

Capa 2

Capa 1

Fig. 1.41 Organización conceptual del software de protocolo en capas.

Conceptualmente, enviar un mensaje desde un programa de aplicación en una

máquina hacia un programa de aplicación en otra, significa transferir el mensaje

hacia abajo, por las capas sucesivas del software de protocolo en la máquina

emisora, transferir el mensaje a través de las capas sucesivas del software de

protocolo en la máquina receptora.

En la práctica, el software de protocolo es mucho más complejo de lo que se

muestra en el modelo simplificado en la figura 1.4. Cada capa toma decisiones

acerca de lo correcto del mensaje y selecciona una acción apropiada con base en

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 163

Page 23: ESCUELA POLITÉCNICA NACIONA L

el tipo de mensaje o la dirección de destino. Por ejemplo, una capa en la máquina

de recepción debe decidir cuándo tomar un mensaje o enviarlo a otra máquina.

Otra capa debe decidir qué programa de aplicación deberá recibir el mensaje.

Para entender la diferencia entre la organización conceptual del software de

protocolo y los detalles de implantación, consideremos la comparación que se

muestra en la figura 1.5. El diagrama conceptual en la figura 1.5 (a), muestra una

capa de Internet entre una capa de protocolo de alto nivel y una capa de interfaz

de red. El diagrama realista de la figura 1.5 (b), muestra el hecho de que el

software IP puede comunicarse con varios módulos de protocolo de alto nivel y

con varias interfaces de red.

Capas conceptuales

Capa de protocolode alto nivel

Capa de protocoloInternet

Capa de interfazde red

(a)

Organización del Software

Protocolo 1

Interfaz 1

Protocolo 2

Módulo IP

Interfaz 2

(b)

Interfaz 3

Fíg I.51 Una comparación de (a) estratificación por capas conceptual de protocolos y, (b) una visión

realista de la organización del software que muestra varias interfaces de red entre IP y varios

protocolos.

Como se muestra en la Figura 1.6, un emisor en la máquina original transmite un

mensaje que la capa de IP coloca en un datagrama y envía a través de la Red 1.

En las máquinas intermedias el datagrama pasa hacia la capa IP, la cual rutea el

datagrama de regreso, nuevamente (hacia una red diferente). Sólo cuando se

alcanza la máquina en el destino final, IP extrae el mensaje y lo pasa hacia arriba,

hacia las capas superiores del software de protocolo.

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 164

Page 24: ESCUELA POLITÉCNICA NACIONA L

10

Fig 1.61 Trayectoria de un mensaje que atraviesa Internet desde un emisor, a través de dos máquinas

intermedias, hasta un receptor. Las máquinas intermedias sólo envían el datagrama hacia la capa de

software IP.

1.3.3 FUNCIONALIDAD DE LAS CAPAS.

Una vez que .se ha tomado la decisión de subdividir los problemas de

comunicación en cuatro subproblemas y organizar el software de protocolo en

módulos, de manera que cada uno maneje un subproblema, surge la pregunta:

"¿qué tipo de funciones deben instalarse en cada módulo?" La pregunta no es

fácil de responder por varias razones. En primer lugar, un conjunto de objetivos y

condiciones determinan un problema de comunicación en particular, es posible

elegir una organización que optimice el software de protocolo para ese problema.

Segundo, incluso cuando se consideran los servicios generales a nivel de red,

como un transporte confiable, es posible seleccionar entre distintas maneras de

resolver el problema. Tercero, el diseño de una arquitectura de red ( o de una red

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 164

Page 25: ESCUELA POLITÉCNICA NACIONA L

11

de redes ) y la organización del software de protocolo están interrelacionados; no

se puede diseñar a uno sin considerar al otro.

1.3.4 MODELO DE REFERENCIA OSI.

El modelo OSI mostrado en la figura 1.7, se basa en una propuesta que desarrolló

la Organización Internacional de Normas (ISO, por sus siglas en inglés) como

primer paso hacia la estandarización internacional de los protocolos que se usan

en las diversas capas. El modelo se llama modelo de referencia OSI (Open

Systems Interconection, Interconexión de sistemas abiertos) de la ISO puesto que

se ocupa de la conexión de sistemas abiertos, esto es, sistemas que están

abiertos a la comunicación con otros sistemas. Usualmente se lo llama sólo

modelo OSI.

Capa

7

6

5

4

3

Función.

Aplicación

Presentación

Sesión

Transporte

Red

Enlace de datos(Interfaz de hardware)

Conexión deHardware físico

Fig. 1.71 Modelo de referencia OSI, para software de protocolo.

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 165

Page 26: ESCUELA POLITÉCNICA NACIONA L

12

El modelo OSI tiene siete capas. Los principios que se aplicaron para llegar a las

siete capas son los siguientes:

1. Se debe crear una capa siempre que se necesite un nivel diferente de

abstracción.

2. Cada capa debe realizar una función bien definida.

3. La función de cada capa se debe elegir pensando en la definición de

protocolos estandarizados internacionalmente.

4. Los límites de las capas deben elegirse a modo de minimizar el flujo de

información a través de las interfaces.

5. La cantidad de capas debe ser suficiente para no tener que agrupar

funciones distintas en la misma capa y lo bastante pequeña para que la

arquitectura no se vuelva inmanejable.

1.3.5 MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE

INTERNET

El segundo modelo mayor de estratificación por capas no se origina de un comité

de estándares, sino que proviene de las investigaciones que se realizan respecto

al conjunto de protocolos de TCP/IP. Con un poco de esfuerzo, el modelo OSI

puede ampliarse y describir el esquema de estratificación por capas del TCP/IP,

pero los presupuestos subyacentes son lo suficientemente distintos para

distinguirlos como dos diferentes.

En términos generales, el software TCP/IP está organizado en cuatro capas

conceptuales que se construyen sobre una quinta capa de hardware. La figura 1.8

muestra las capas conceptuales así como la forma en que los datos pasan entre

ellas.

Page 27: ESCUELA POLITÉCNICA NACIONA L

13

Capa conceptual

Aplicación

Transporte

Internet

Interfaz de red

Paso de objetosentre capas

Flujos o mensajes

Paquetes de protocolo detransporte

Datagramas IP

Tramas específicas de red

Hardware

Fig. 1.81 Las cuatro capas conceptuales del software TCP/IP y la forma en que los objetos pasan entre

capas. La capa con el nombre interfaz de red se conoce con frecuencia con el nombre de capa de

enlace de datos.

1.3.5.1 Capa Interfaz de Red

El software TCP/IP de nivel inferior consta de una capa de interfaz de red

responsable de aceptar los datagramas IP y transmitirlos hacía una red

específica. Una interfaz de red puede consistir en un dispositivo controlador (por

ejemplo, cuando la red es una red de área local a la que las máquinas están

conectadas directamente) o un complejo subsistema que utiliza un protocolo de

enlace de datos propio (por ejemplo, cuando la red consiste de conmutadores de

paquetes que comunican con anfitriones utilizando HDLC2).

1.3.5.2 Capa Internet

La capa Internet maneja la comunicación de una máquina a otra. Ésta acepta

una solicitud para enviar un paquete desde la capa de transporte, junto con una

identificación de la máquina, hacia la que se debe enviar el paquete. Encapsula el

paquete en un datagrama IP, llena el encabezado del datagrama, utiliza un

algoritmo de ruteo para determinar si puede entregar el datagrama directamente o

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 168Hight - level - Data link Control, control de enlace de datos de alto nivel

Page 28: ESCUELA POLITÉCNICA NACIONA L

14

si debe enviarlo a un ruteador y pasar el datagrama hacia la interfaz de red

apropiada para su transmisión.

La capa Internet también maneja la entrada de datagramas, verifica su validez y

utiliza un algoritmo de ruteo para decidir si el datagrama debe procesarse de

manera local o debe ser transmitido. Para el caso de los datagramas

direccionados hacia la máquina local, el software de la capa Internet borra el

encabezado del datagrama y selecciona, de entre varios protocolos de transporte,

un protocolo con el que manejará el paquete.

CapaFísica

Líneas de Transmisión

Fig. 1.91 La capa de red de TCP/IP incluye los módulos de software de IP, ICMP e IGMP.

Por último, la capa Internet envía los mensajes ICMP de error y control necesarios

y maneja todos los mensajes ICMP entrantes.

Programación en Internet, Hamsa Cris - Cope Kcn, McGraw HUÍ 1 ra. Edición 1996, Pag. 75

Page 29: ESCUELA POLITÉCNICA NACIONA L

15

Debida a la estrecha relación entre el Protocolo Internet y la capa de red, gran

parte de la literatura sobre Internet y TCP/IP se refieren a la capa de red como la

capa IP.

1.3.5.3 Capa de Transporte

La principal tarea de la capa de transporte es proporcionar la comunicación entre

un programa de aplicación y otro. Este tipo de comunicación se conoce

frecuentemente como comunicación punto a punto. La capa de transporte regula

el flujo de información. Puede también proporcionar un transporte confiable,

asegurando que los datos lleguen sin errores y en secuencia. Para hacer esto, el

software de protocolo de transporte tiene el lado de recepción enviando acuses

de recibo de retorno y la parte de envío retransmitiendo los paquetes perdidos. El

software de transporte divide el flujo de datos que se está enviando en pequeños

fragmentos (por lo general conocidos como segmentos) y pasa cada segmento,

con una dirección de destino, hacia la siguiente capa de transmisión.

Aún cuando en la figura 1.9, se utiliza un solo bloque para representar la capa

aplicación, una computadora de propósito general puede tener varios programas

de usuario y enviarlos a la capa del siguiente nivel. Para hacer esto, se añade

información adicional a cada paquete, incluyendo códigos que identifican qué

programa de aplicación envía y qué programa de aplicación debe recibir, así

como una suma de verificación. La máquina de recepción utiliza la suma de

verificación para verificar que el paquete ha llegado intacto y utiliza el código de

destino para identificar el programa de aplicación en el que se debe entregar.

1.3.5.4 Capa de Aplicación

En el nivel más alto, los usuarios llaman a una aplicación que accesa servicios

disponibles a través de la red de redes TCP/IP. Una aplicación interactúa con uno

de los protocolos de nivel de transporte para enviar o recibir datos. Cada

programa de aplicación selecciona el tipo de transporte necesario, el cual puede

ser una secuencia de mensajes individuales o un flujo continuo de octetos. El

Page 30: ESCUELA POLITÉCNICA NACIONA L

16

programa de aplicación pasa los datos en la forma requerida hacia el nivel de

transporte para su entrega.

1.3.6 PRINCIPIO DE ESTRATIFICACIÓN POR CAPAS DE PROTOCOLOS

Independientemente del esquema de estratificación por capas que se utilice o de

las funciones de las capas, la operación de los protocolos estratificados por capas

se basa en una idea fundamental. La idea, conocida como principio de

estratificación por capas puede resumirse de la siguiente forma:

Anfitrión A Anfitrión B

Fig 1.101 Trayectoria de un mensaje cuando pasa de la aplicación en un anfitrión a la aplicación en

otro. Una capa n en el anfitrión B recibe exactamente el mismo objeto que la capa n correspondiente

del anfitrión emisor A.

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentlce Hall 3ra. Edición 1996 , Pag. 171

Page 31: ESCUELA POLITÉCNICA NACIONA L

17

Los protocolos estratificados por capas están diseñados de modo que una capa n

en el receptor de destino reciba exactamente el mismo objeto enviado por la

correspondiente capa n de la fuente.

El principio de estratificación por capas explica por qué la estratificación por capas

es una idea poderosa. Esta permite que el diseñador de protocolos enfoque su

atención hacia una capa a la vez, sin preocuparse acerca del desempeño de las

capas inferiores. Por ejemplo, cuando se construye una aplicación para

transferencia de archivos, el diseñador piensa sólo en dos copias del programa de

aplicación que se correrá en dos máquinas y se concentrará en los mensajes que

se necesitan intercambiar para la transferencia de archivos. El diseñador asume

que la aplicación en el anfitrión receptor es exactamente la misma que en el

anfitrión emisor.

La figura 1.10, ilustra cómo trabaja el principio de estratificación por capas.

1.3.7 FRONTERAS IMPORTANTES EN EL MODELO TCP/IP

La estratificación por capas conceptual incluye dos fronteras que podrían no ser

obvias: una frontera de dirección de protocolo que separa los direccionamlentos

de alto nivel y de bajo nivel, y una frontera de sistema operativo que separa al

sistema de los programas de aplicación.

1.3.7.1 Frontera de dirección de protocolo de alto nivel

Ahora que se ha visto la capa de software TCP/IP, se puede precisar la idea de la

partición de una frontera conceptual entre el software que utiliza direcciones de

bajo nivel (físicas), con respecto a un software que utiliza direcciones de alto nivel

(IP). Como se muestra en la figura 1.11, la frontera aparece entre la capa de

¡nterfaz de red y la capa de Internet.

Page 32: ESCUELA POLITÉCNICA NACIONA L

18

Capas conceptuales

Aplicación

Transporte

Internet

Interfaz de red

Frontera

Software fuera del sistema operativo

Software dentro del sistema operativo

Solo se utilizan direcciones IP

Se utilizan direcciones físicas

Hardware

Fig. l.ll1 Relación entre la estratificación por capas conceptual y las fronteras, para el sistema

operativo y las direcciones de protocolo de alto nivel.

Los programas de aplicación, así como todo el software del protocolo desde la

capa de Internet hacia arriba, utiliza solo direcciones IP; la capa de interíaz de red

maneja direcciones físicas.

1.3.7.2 Frontera de Sistema Operativo

La figura 1.11, muestra otra frontera también importante, la división entre el

software que generalmente se considera parte del sistema operativo respecto al

software que no lo es. En tanto que cada implantación del TCP/IP determina

cómo se establece la distinción, muchos siguen el esquema mostrado. Dado que

los colocan dentro del sistema operativo, e! paso de datos entre las capas

inferiores del software de protocolo es relativamente menos caro que su paso

entre un programa de aplicación y una capa de transporte.

1.4 ENCAPSULAMIENTO DE DATOS

Para hacer una transmisión por una red en capas los datos deben pasar de la

capa aplicación a un protocolo en la pila de protocolos. Una vez que éste termina

con ellos, los pasa al siguiente protocolo de la pila. Conforme sus datos pasan por

cada una de las capas de la pila, el software de red (módulos de protocolo) los

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 175

Page 33: ESCUELA POLITÉCNICA NACIONA L

19

encapsula para el siguiente nivel inferior en la pila. Por lo tanto, el

encapsulamiento es el proceso de guardar la información en el formato requerido

por el protocolo siguiente del nivel inferior de la pila. Conforme sus datos viajan

por la pila de protocolos, cada capa trabaja sobre lo que encapsuló la capa

anterior. La figura 1.12, muestra cómo el software de red encapsula la

información cuando utiliza el Protocolo de Control de Transporte (TCP, Transport

Control Protocol) en una red Ethernet.

Aplicación

1Encabezado

de laaolicación

r i

Datos delusuario

TCPMensaje ae la aplicación

V i

EncabezadoTCP

Datos de la Aplicación

IPSegmento TCP

1Encabezado

IP

r ' - -^Encabezado

TCPDatos de la Aplicación

ControladorEthernet Datagrama (paquete) IP

Encabezad*Ethernet

EncabezadoIP

EncabezadoTCP

Datos de la Aplicación TrailerEthernet

Línea detransmisiónde Ethernet

I4bytes 20bytes 20 bytes Tamaño variable

i Trama Ethernet

i 4 bytes

De 46 a 1500 bytes

Fig 1.121 Encapsulamiento de datos utilizando TCP en una red Ethernet.

Programación en Internet, Hamsa Cris- Cope Ken, McGravv HUÍ Ira. Edición 1996, Pag. 76

Page 34: ESCUELA POLITÉCNICA NACIONA L

20

Del gráfico se puede observar que el módulo de aplicación puede encapsular los

datos del usuario en un mensaje de la aplicación. El diseño de un programa

determina si éste debe utilizar o no este mensaje. En muchos casos, el programa

puede formatear los datos del usuario para que los use un protocolo de la red,

digamos TCP. Como muestra la figura 1.12, el módulo TCP formatea los datos de

la aplicación en un segmento TCP, el cual incluye los datos de la aplicación junto

con el encabezado de información TCP que necesita el protocolo. Los datos de la

aplicación incluyen un encabezado de la aplicación ( si se requiere) y los datos del

usuario. Conforme la información pasa por el módulo IP en la capa de red, el

software de red formatea el segmento TCP para convertirlo en un datagrama (o

paquete) IP. El controlador de Ethernet formatea los datos del módulo IP y los

coloca dentro de una trama Ethernet.

La figura 1.12 es un ejemplo del proceso de encapsulamiento. Los protocolos

TCP/IP encapsulan los datos formateandolos para que se adecúen a la estructura

definida por el protocolo.

1.4.1 DATAGRAMA IP

El protocolo Internet (IP) es el sistema de la entrega del conjunto de protocolos

TCP/IP y, por lo tanto, de Internet. IP emplea datagramas no confiables sin

conexión para llevar la información a través de una red TCP/IP. Se puede

denominar a estos datagramas datagramas IP. Las redes de TCP/IP transmiten

todos los datos de las aplicaciones a lo largo de Internet como datagramas IP,

cada uno de los cuales incluye un encabezado IP y los datos reales.

Un datagrama es una unidad de datos autocontenida. En contraste, un flujo de

bytes representa los datos como un flujo constante de ellos (sin importar cuántos

mensajes de la red realmente entreguen los datos). El término datagrama

especifica un tipo de servicio de entrega, es decir, un protocolo puede utilizar

datagramas o flujo de bytes. Un tipo particular de datagrama, como el IP o el

UDP, especifica el formato y contenido de ese datagrama.

Page 35: ESCUELA POLITÉCNICA NACIONA L

21

1.4.2 PAQUETE IP

La literatura sobre Internet puede referirse a un datagrama IP como un paquete

IP: ambos conceptos son sinónimos.

Paquete es un término genérico que se refiere a una unidad de datos no

identificados. Cuando se usa el término paquete IP, especifica una unidad de

datos IP. En otras palabras, paquete se refiere a los datos, datagrama al servicio

de entrega.

1.4.3 ESTRUCTURA DE UN DATAGRAMA IP

El Protocolo IP proporciona un sistema de distribución que es poco fiable incluso

en una base sólida. El protocolo IP especifica que la unidad básica de

transferencia de datos en el TCP/IP es el datagrama.

Los datagramas pueden ser retrasados, perdidos, duplicados, enviados en una

secuencia incorrecta o fragmentados intencionadamente para permitir que un

nodo con un buffer limitado pueda coger todo el datagrama. Es la responsabilidad

del protocolo IP reensamblar los fragmentos del datagrama en el orden correcto.

En algunas situaciones de error los datagramas son descartados sin mostrar

ningún mensaje mientras que en otras situaciones los mensajes de error son

recibidos por la máquina origen (esto lo hace el protocolo ICMP).

El protocolo IP también define cuál será la ruta inicial por la que serán mandados

los datos.

Cuando los datagramas viajan de unos equipos a otros, es posible que atraviesen

diferentes tipos de redes. El tamaño máximo de estos paquetes de datos puede

variar de una red a otra, dependiendo del medio físico que se emplee para su

transmisión. A este tamaño máximo se le denomina MTU (Máximum Transmission

Unit), y ninguna red puede transmitir un paquete de tamaño mayor a esta MTU. El

datagrama consiste en una cabecera y datos.

Page 36: ESCUELA POLITÉCNICA NACIONA L

22

1.4.4 ENCABEZADO IP

Una red TCP/IP encapsula casi toda la información que viaja a través de Internet

dentro de un datagrama IP. La encapsulación crea tal datagrama, el cual incluye

un encabezado IP y los datos. El software de red siempre crea los encabezados

IP en múltiplos de palabras de 32 bits, incluso cuando tenga que "rellenar" (incluir

ceros adicionales) el encabezado IP. El encabezado IP incluye toda la información

necesaria para entregar los datos encapsulados dentro del datagrama IP.

Posicionesde los bits

15 I 16 31á

20By

i

i

tes

r

Versión (VER) Hlen (LEN) Tipo de Servicio4 bits 4 bits (TOS) 8 bits

Identificación16 bits

Tiempo de vida Protocolo(TTL) 8 bits 8 bits

Longitud Total del Paquete(enbytes) 16 bits

Banderas Fragmentos de3 bits Compensación 1 3 bits

Suma de ComprobaciónDel Encabezado 16 bits

Dirección IPOrigen 32 bits

Dirección IPDestino 32 bits

Opciones (si las hay) Ruta (si se requiere)

Datos

Fig. 1.131 Estructura de un datagrama IP que muestra los campos en el encabezado IP.

1.4.4.1 Longitud de la Cabecera

Este campo ocupa 4 bits, y representa el número de octetos de la cabecera

dividido por cuatro, lo que hace que éste sea el número de grupos de 4 octetos en

la cabecera.

Programación en Internet, Hamsa Cris- Cope Ken, McGraw Hill Ira. Edición 1996, Pag: 86

Page 37: ESCUELA POLITÉCNICA NACIONA L

23

1.4.4.2 Versión

El campo versión ocupa 4 bits. Este campo hace que diferentes versiones del

protocolo IP puedan operar en la Internet. En este caso se trata de la versión 4.

1.4.4.3 Tipo de Servicio

Este campo ocupa un octeto de la cabecera IP, y especifica la precedencia y la

prioridad del datagrama IP. Los tres primeros bits del octeto indican la

precedencia. Los valores de la precedencia pueden ser de O a 7. Cero es la

precedencia normal, y 7 está reservado para control de red. Muchos gateways

ignoran este campo.

Los otros 4 bits definen el campo prioridad, que tiene un rango de O a 15. Las

cuatro prioridades que están asignadas son: O, (por defecto, servicio normal), 1

(minimizar el coste monetario), 2 (máxima fiabilidad), 4 (Maximizar la

transferencia), 8 (El bit 4 igual a 1, define minimizar el retraso). Estos valores son

utilizados por los routers para direccionar las solicitudes de los usuarios.

1.4.4.4 Longitud Total

Este campo se utiliza para identificar el número de octetos en el datagrama total.

1.4.4.5 Identificación

El valor del campo identificación es un número secuencia! asignado por el Host

origen. El campo ocupa dos octetos. Los números oscilan entre O y 65.535, que

cuando se combinan con la dirección del Host forman un numero único en la

Internet. El número se usa para ayudar en el reensamblaje de los fragmentos de

datagramas.

Page 38: ESCUELA POLITÉCNICA NACIONA L

24

1.4.4.6 Fragmentos Offset

Cuando el tamaño de un datagrama excede el MTU, este se segmenta.

El fragmento Offset representa el desplazamiento de este segmento desde el

inicio del datagrama entero.

1.4.4.7 Flags

El campo flag ocupa 3 bits y contiene dos flags. El bit 5 del campo flags se utiliza

para indicar el último datagrama fragmentado cuando toma valor cero. El bit 7 lo

utiliza el servidor origen para evitar la fragmentación. Cuando este bit toma valor

diferente de cero y la longitud de un datagrama excede el MTU, el datagrama es

descartado y un mensaje de error es enviado al Hosf de origen por medio del

protocolo.

1.4.4.8 Tiempo de Vida

El campo tiempo de vida ocupa un octeto. Representa el número máximo de

segundos que un datagrama puede existir en Internet, antes de ser descartado.

Un Datagrama puede existir un máximo de 255 segundos. El número

recomendado para IP es 64.

El originador del datagrama manda un mensaje ICMP cuando el datagrama es

descartado.

Page 39: ESCUELA POLITÉCNICA NACIONA L

25

1.4.4.9 Protocolo

El campo protocolo se utiliza para identificar la capa de mayor nivel más cercana

usando el IP. Este es un campo de O bits, que normalmente identifica tanto la

capa TCP (valor 6), como la capa UDP (valor 17) en el nivel de transporte, pero

puede identificar hasta 255 protocolos de la capa de transporte.

1.4.4.10 Checksum

El checksum proporciona la seguridad de que el datagrama no ha sido dañado ni

modificado. Este campo tiene una longitud de 16 bits. Incluye todos los campos

de la cabecera IP, incluido el mismo, cuyo valor es cero a efectos de cálculo.

Un Gateway o nodo que efectúe alguna modificación en los campos de la

cabecera (por ejemplo en el tiempo de vida), debe recalcular el valor del

checksum antes de enviar el datagrama.

Los usuarios del IP deben proporcionar su propia integridad en los datos, ya que

el checksum es solo para la cabecera.

1.4.4.11 Dirección de Origen

Este campo contiene un identificador de red (Netid) y un identificador de Host

(Hostid). El campo tiene una longitud de 32 bits. La dirección puede ser de clase

A, B, C.

1.4.4.12 Dirección de Destino

Este campo contiene el Netid y el Hostid del destino. El campo tiene una longitud

de 32 bits. La dirección puede ser de clase A, B, C o D.

Page 40: ESCUELA POLITÉCNICA NACIONA L

26

1.4.4.13 Opciones

La existencia de este campo viene determinada por la longitud de la cabecera. Si

ésta es mayor de cinco por lo menos existe una opción.

Aunque un Hosí no está obligado a poner opciones, puede aceptar y procesar

opciones recibidas en un datagrama. El campo Opciones es de longitud variable.

Cada octeto está formado por los campos Copia, Clase de Opción y Número de

Opción.

• El campo Copia sirve para cuando un datagrama va a ser fragmentado y

viaja a través de nodos o Gateways. Cuando tiene valor 1, las opciones

son las mismas para todos los fragmentos, pero si toma valor O, las

opciones son eliminadas.

• Clase de Opción es un campo que cuando tiene valor O, indica datagrama

o control de red; Cuando tiene valor 2, indica depuración o medida. Los

valores 1 y 3 están reservados para un uso futuro.

• El Número de Opción indica una acción específica.

Características de la Opción IP

Clasede

Opción

o000002

Númerode

Opción0

123

?94

Octetos

11

11Var

| Var| Var[ Var

Descripción

Fin de alineamientoPara alinear dentro de una lista de opciones

Seguridad (aplicaciones militares)Ruteo del OrigenGrabar/trazar ruta

Ruteo estricto del OrigenFecha y hora de Internet

Tabla l.l1 Características de la Opción IP

Protocolos TCP/IP, Juan S. Miravet Bonet, a 1019 Kl)3 (a. n I u. nía ü-uj Us

•Bh-

Page 41: ESCUELA POLITÉCNICA NACIONA L

1.4.4.14 Datos

Cabecera

IP

MSB

27

sb

Versión

1Isb

oLong. cabecera

Tipo de servicio

Longitud Total

Identificación

Fragmento Offset

Tiempo de vidaProtocolo

Suma de Comprobación

Dirección Origen

Dirección Destino

Opciones

Pudding

Datos IP

+0

+3+4

=^ss=

+5

+7

+8

+9+10+11

m•HB WVB

+13+14

+15+16+17+18+19+20+21+22+23+0

+1

Fig. 1.141 Formato del Datagrama IP

El campo datos consiste en una cadena de octetos. Cada octeto tiene un valor

entre O y 255. El tamaño de la cadena puede tener un mínimo y un máximo,

dependiendo del medio físico. El tamaño máximo esta definido por la longitud total

del datagrama. (Longitud Total del Datagrama) - (Longitud de la cabecera)

Protocolos TCP/IP, Juan S. Miravet Bonet, slfll9803fif.-nlnmail.uli.es httit://infasf.es/FORMA<:i<).N7l\TFR\KT/H:nli).liiiiil

Page 42: ESCUELA POLITÉCNICA NACIONA L

28

1.4.4.15 Padding

Cuando está presente el campo Pad, consiste en 1 a 3 octetos puestos a cero, sí

es necesario, para hacer que el número total de octetos en la cabecera sea

divisible por cuatro.

1.4.5 DIRECCIONES IP

Las direcciones IP, hacen que el envío de datos entre computadoras se haga de

forma eficaz.

Las direcciones IP tienen 32 bits, formados por cuatro campos de 8 bits

separados por puntos. Cada campo puede tener un valor comprendido entre O y

255. Está compuesta por una dirección de red, seguida de una dirección de

subred y de una dirección de host.

1.4.5.1 Clases de Direcciones IP

1.4.5.1.1 Direcciones IP Clase A

Contiene 7 bits para direcciones de red, con lo que permite tener hasta 126 redes,

con 16.777.214 computadoras cada una. Las direcciones estarán comprendidas

entre 0.0.0.0 y 127.255.255.255, y la máscara de subred será 255.0.0.0.

1.4.5.1.2 Direcciones IP Clase B

Contiene 14 bits para direcciones de red y 16 bits para direcciones de hosts. El

número máximo de redes es 16.534 redes, con 65.534 computadoras por red. Las

direcciones estarán comprendidas entre 128.0.0.0. y 191.255.255.255., y la

máscara de subred será 255.255.0.0.

Page 43: ESCUELA POLITÉCNICA NACIONA L

29

/. 4,5.1.3 Direcciones IP Clase C

Contiene 21 bits para direcciones de red y 8 para hosts, lo que permite tener un

total de 2.097.140 redes, cada una de ellas con 254 computadoras. Las

direcciones estarán comprendidas entre 192.0.0.0. y 223.255.255.255, y la

máscara de subred será 255.255.255.0.

1.4.5.1.4 Direcciones IP Clase D

Se reserva todas las direcciones para multídestíno (multicast), es decir, una

computadora transmite un mensaje a un grupo especifico de computadoras de

esta clase. Las direcciones estarán comprendidas entre 224.0.0.0. y

239.255.255.255.

1.4.5.1.5 Direcciones IP Clase E

Se utiliza exclusivamente para fines experimentales. Las direcciones están

comprendidas entre 240.0.0.0. y 247.255.255.255.

1.4.5.2 IP (Internet Protocol) Versión 6

Esta es una nueva versión del protocolo IP, llamada IPv6, amigue también es

conocida como IPng (Internet Protocol Next Generation). Es la versión 6, debido a

que la número 5 no pasó de la fase experimental. La compatibilidad con la versión

4 es prácticamente total, ya que se han incluido características de compatibilidad.

Algunas de las modificaciones, están encaminadas a mejorar la seguridad en la

red, que apenas existía en la versión 4.

1.4.5.2.1Formato de la cabecera.

Esta cabecera ocupa el doble que la anterior, pero se ha simplificado omitiendo

algunos campos y haciendo que otros sean opcionales. De esta manera, los

routers no tienen que procesar tanta información.

L

Page 44: ESCUELA POLITÉCNICA NACIONA L

30

Los campos son los siguientes:

• Versión: Este campo ocupa 4 bits, y contiene el número de versión del IP,

en este caso 6.

• Prioridad: Ocupa 4 bits, y indica la importancia del paquete que se esta

enviando.

• Etiqueta de Flujo: Ocupa 24 bits. Indica que el paquete requiere un

tratamiento especial por parte de los routers que lo soporten.

• Longitud: Ocupa 16 bits. Indica la longitud en bytes de los datos del

mensaje

• Siguiente Cabecera: Ocupa 8 bits e indica a qué protocolo corresponde la

cabecera que está a continuación de la actual.

• Tiempo de vida: Ocupa 8 bits y tiene la misma función que en la versión 4.

• Dirección de origen: Ocupa 128 bits (16 octetos), y es el número de

dirección del origen.

Dirección de Destino: Ocupa 128 bits (16 octetos). Es el número de

dirección del destino.

Page 45: ESCUELA POLITÉCNICA NACIONA L

31

OCTETO O

7 6 5 4 3 2 1 0

Versión

OCTETO 1

7 6 5 4 3 2 1 0

Prioridad

OCTETO 2 OCTETO 3

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

Etiqueta de Flujo

Longitud Siguiente cabecera Tiempo de Vida

Dirección de Origen (128 bits)

Dirección de Destino (128 bits)

Fig. 1.15 Formato de la Cabecera del IPvó

1.4.5.2.2 Direcciones IP Versión 6

El cambio más significativo en las direcciones ha sido que ahora se refieren a un

interfaz y no a un nodo, aunque como cada interfaz pertenece a un nodo, es

posible referirse a estos mediante su interfaz.

El número de direcciones diferentes se ha multiplicado de una manera exagerada.

Teóricamente, es posible tener 2128 direcciones diferentes. Este número quiere

decir que se podrían llegar a tener más de 665.000 trillones de direcciones por

metro cuadrado, aunque si siguieran una jerarquía, este número decrece hasta

1564 direcciones por metro cuadrado en el peor caso o tres trillones siendo

optimistas.

En el IPv6 existen tres tipos básicos de direcciones:

• Direcciones unicast: Están dirigidas a una única interfaz en la red.

Actualmente se dividen en varios grupos, y existe un grupo especial que

facilita la compatibilidad con las direcciones de la versión 4.

Page 46: ESCUELA POLITÉCNICA NACIONA L

32

Direcciones anvcast: Identifican a un conjunto de interfaces de red. El

paquete se enviará a cualquier interfaz que forme parte del conjunto. En

realidad son direcciones unicast que se encuentran asignadas a varias

interfaces.

Direcciones multicast: Identifican a un conjunto de interfaces de la red, de

manera que cada paquete es enviado a cada uno de ellos individualmente.

1.5 PROTOCOLO DE MENSAJES DE CONTROL DE

INTERNET

1.5.1 INTRODUCCIÓN

El software del Protocolo Internet proporciona un servicio de entrega de

datagramas, no confiable y sin conexión, al hacer que cada ruteador direccione

datagramas. Un datagrama viaja de ruteador en ruteador hasta que llega a uno

que lo puede entregar directamente a su destino final. Si un ruteador no puede

rutear o entregar un datagrama, o si el ruteador detecta una condición anormal

que afecta su capacidad para direccionarlo (por ejemplo, congestionamiento de

red), necesita informar a la fuente original para que evite o corrija el problema.

Existe un mecanismo que utilizan los ruteadores y los anfitriones de red de redes

para comunicar la información de control o de error. Los ruteadores utilizan el

mecanismo para reportar problemas y que los anfitriones lo emplean para

comprobar si los destinos son accesibles.

Page 47: ESCUELA POLITÉCNICA NACIONA L

33

1.5.2 PROTOCOLO ICMP

Para permitir que los ruteadores en una red de redes reporten los errores o

proporcionen información sobre circunstancias imprevistas, los diseñadores

agregaron a los protocolos TCP/IP un mecanismo de mensajes de propósito

general. El mecanismo, conocido como Protocolo de Mensajes de Control de

Internet (ICMP), se considera como parte obligatoria del IP y se debe incluir en

todas las implantaciones IP.

Al igual que el resto del tráfico, los mensajes ICMP viajan a través de la red de

redes en la porción de datos de los datagramas IP. Sin embargo, el destino final

de un mensaje ICMP no es un programa de aplicación ni un usuario en la

máquina de destino, sino el software de Protocolo Internet en dicha máquina. Esto

es, cuando llega un mensaje de error de ICMP, el módulo de software ICMP lo

maneja. Por supuesto, si el ICMP determina que un protocolo de un nivel más alto

o un programa de aplicación causaron un problema, notificará al módulo

apropiado. En conclusión:

El Protocolo de Mensajes de Control de Internet permite que los ruteadores

envíen mensajes de error o de control hacia otros ruteadores o anfitriones; el

ICMP proporciona comunicación entre el software del Protocolo Internet en una

máquina y el mismo software en otra.

ICMP fue diseñado para permitir que los ruteadores reporten a los anfitriones las

causas de los errores en la entrega, el ICMP no se restringe sólo a los ruteadores.

Aunque las reglas y normas limitan el uso de algunos mensajes ICMP, cualquier

máquina puede enviar un mensaje ICMP a cualquier otra. Por lo tanto, un anfitrión

puede utilizar el ICMP para comunicarse con un ruteador o con otro anfitrión. La

mayor ventaja de permitir que los anfitriones utilicen el ICMP es que proporciona

un solo mecanismo que se utiliza para todos los mensajes de información y de

control.

Page 48: ESCUELA POLITÉCNICA NACIONA L

34

1.5.3 REPORTE DE ERRORES

Técnicamente, el 1CMP es un mecanismo de reporte de errores. Proporciona un

mecanismo para que los ruteadores que encuentren un error lo reporten a la

fuente original.

Cuando un datagrama causa un error, el ICMP sólo puede reportar la condición

del error a la fuente original del datagrama; la fuente debe relacionar el error con

un programa de aplicación individual o debe tomar alguna otra acción para

corregir el problema.

Un datagrama sólo contiene campos que especifican la fuente original y el último

destino; no contiene un registro completo de su viaje a través de la Internet ( a

excepción de casos inusuales en los que se utiliza la opción de registro de ruta).

Además, como los ruteadores pueden establecer y cambiar sus propias tablas de

ruteo, no existe un conocimiento global de las rutas. Por lo tanto, cuando un

datagrama llega a un ruteador, es imposible conocer el camino que siguió para

llegar hasta ahí. Si el ruteador detecta un problema, no puede saber qué grupo de

máquinas intermedias procesaron el datagrama, así que no puede informarles del

problema. En vez de descartar discretamente el datagrama, el ruteador utiliza el

ICMP para informar a la fuente original que ocurrió un problema, y confía en que

los administradores del anfitrión cooperarán con los administradores de red para

localizarlo y corregirlo.

1.5,4 ENTREGA DE MENSAJES ICMP

Los mensajes ICMP requieren dos niveles de encapsulación como se muestra en

la figura 1.16

Page 49: ESCUELA POLITÉCNICA NACIONA L

35

ENCABEZADOICMP

ENCABEZADODEL DATAG.

ENCABEZADODE LA TRAMA

DATOS ICMP

ÁREA DE DATOS DEL DAT AGRAMA

ÁREA DE DATOS DE LA TRAMA

Fig 1.161 Dos niveles de la encapsulación ICMP. El mensaje ICMP se encapsula en un datagrama

IP que, a su vez, se encapsula en una trama para su transmisión. Para identificar el ICMP, el

campo de protocolo del datagrama contiene el valor 1.

Es Importante tener en mente que aunque los mensajes ICMP se encapsulan y

envían mediante el IP, el ICMP no se considera como un protocolo de nivel más

alto sino como una parte obligatoria del IP. La razón de utilizar el IP para entregar

mensajes ICMP es que quizá necesiten viajar a través de muchas redes físicas

para alcanzar su destino final. Por lo tanto, no se pueden entregar sólo por medio

de transporte físico.

1.5.5 FORMATO DE MENSAJES ICMP

ICMP entrega mensajes de error y de consulta. TCP/IP encapsula cada mensaje

de ICMP en un datagrama IP. El software de la red identifica cada mensaje de

ICMP por dos valores: un valor de Tipo de 8 bits y un valor de Código también de

8 bits. Como muestra la figura 1.17. Estos valores comprenden los dos primeros

campos en el encabezado del mensaje de ICMP:

Redes Globales de Información con Internet y TCP/IP, Douglas E. Comer, Prentice Hall 3ra. Edición 1996, Pag. 128

Page 50: ESCUELA POLITÉCNICA NACIONA L

36

32 Bits

15 i 16 31

Tipo Código Suma de Comprobación

El contenido depende de los valores de tipo y código de ICMP

Fig. 1.171 a) Mensaje del ICMP con los campos del encabezado de ICMP identificados

Datagrama IP^ •'" - • -• w

Encabezado IP Encabezado ICMP Información ICMP

Fig. 1.17 b) Encapsulamiento del ICMP

Inmediatamente después de los bytes de tipo y código, ICMP incluye un campo

de suma de comprobación de 16 bits. La suma de comprobación ayuda al módulo

par de la red a detectar paquetes de datos corrompidos.

Aunque cada mensaje ICMP tiene su propio formato, todos comienzan con los

mismos tres campos; un campo TYPE (TIPO) de mensajes, de 8 bits y números

enteros, que identifica el mensaje; un campo CODE (CÓDIGO), de 8 bits, que

proporciona más información sobre el tipo de mensaje, y un campo CHECKSUM

(SUMA DE COMPROBACIÓN), de 16 bits (el ICMP utiliza el mismo algoritmo

aditivo de suma de verificación que el IP, pero la suma de verificación del ICMP

sólo abarca el mensaje ICMP). Además, los mensajes ICMP que reportan errores

siempre incluyen el encabezado y los primeros 64 bits de datos del datagrama

que causó el problema.

i

Programación en Internet, Hamsa Cris-Cope Ken, McGraw HHJ Ira. Edición 1996. Pag 350

Page 51: ESCUELA POLITÉCNICA NACIONA L

37

La razón del encabezado del datagrama es únicamente para permitir que el

receptor determine de manera más precisa qué protocolo(s) y qué programa de

aplicación son responsables del datagrama.

El campo TYPE (TIPO) de ICMP define el significado del mensaje así como su

formato. Los tipos incluyen:

TIPO

0

3

4

5

8

9

10

11

12

13

14

15

16

17

18

CONSULTA /ERROR

CONSULTA

ERROR

ERROR

ERROR

CONSULTA

CONSULTA

CONSULTA

ERROR

ERROR

CONSULTA

CONSULTA

CONSULTA

CONSULTA

CONSULTA

CONSULTA

TIPO DE MENSAJE ICMP

Respuesta de eco

Destino inalcanzable

Disminución de origen

Redireccionamiento

Solicitud de eco

Anuncio del enrutador

Solicitud del enrutador

Tiempo excedido

Problema de parámetros

Solicitud del registro de hora

Respuesta del registro de hora

Solicitud de información (obsoleta)

Respuesta de información (obsoleta)

Solicitud de máscara de dirección

Respuesta de máscara de dirección

Tabla 1.21 Valores del tipo de mensajes ICMP

Programación en Internet, Hamsa Cris-Cop« Ken, McGraw Huí Ira. Edición 1996, Pag. 350

Page 52: ESCUELA POLITÉCNICA NACIONA L

38

1.5.6. SOLICITUD DE RESPUESTA DE ECO - PING.

Los protocolos TCP/IP proporcionan funciones para ayudar a los administradores

o usuarios de redes a identificar los problemas que ocurran en la red. Una de las

herramientas de depuración más utilizadas incluye los mensajes ICMP de echo

request (solicitud de eco) y echo reply (respuesta de eco). Un anfitrión o un

ruteador envía un mensaje ICMP de solicitud de eco hacia un destino específico.

Cualquier máquina que recibe una solicitud de eco, formula una respuesta y la

regresa al transmisor original. La solicitud contiene un área opcional de datos: la

respuesta contiene una copia de los datos enviados en la solicitud. La solicitud de

eco y su respuesta asociada se pueden utilizar para comprobar si un destino es

alcanzable y si responde. Debido a que tanto la solicitud como la respuesta viajan

en datagramas IP, la recepción exitosa de una respuesta verifica que las piezas

principales del sistema de transporte están funcionando bien.

Primero, el software IP en la computadora de origen debe rutear el datagrama.

Segundo, los ruteadores intermedios entre el origen y el destino deben funcionar

bien y rutear correctamente el datagrama. Tercero, la máquina de destino debe

estar funcionando (al menos debe responder a las interrupciones), y tanto el

software ICMP como el IP deben estar funcionando. Por último, todos los

ruteadores a lo largo del camino de regreso deben tener rutas correctas.

Los mensajes de solicitud y respuesta de eco están entre los mensajes ICMP más

populares que usan algunos programas, como PING (Packet Internet Groper).

Comúnmente, el programa Ping transmite una solicitud de eco, y después mide el

tiempo que tarda en llegar la respuesta. Los administradores de la red y los

usuarios ocupan PING para determinar si un anfitrión remoto está disponible y

accesible en la red en ese momento. La figura 1.18 muestra el formato de los

mensajes de solicitud y respuesta de eco.

Page 53: ESCUELA POLITÉCNICA NACIONA L

39

32 Bits

15 Í 16 31

Tipo Código

Identifícador

Suma de Comprobación

Número de Secuenciabv

Información opcional

Figura 1.1S1 Formato de mensajes de ICMP de solicitud y respuesta de eco (tipos 8 y 0)

Los mensajes de eco de ICMP usan los campos Identificador y Número de

Secuencia para asociar respuestas con solicitudes pero, al igual que los mensajes

de registro de hora y máscara de dirección, pueden almacenar en estos campos

cualquier información que consideren apropiada. Asimismo, el emisor puede

almacenar cualquier información (o nada) en el área Información Opcional. Una

computadora anfitrión que recibe una solicitud de eco actúa como un servidor de

eco: sólo hace eco o devuelve, como mensaje de respuesta de eco, lo que recibe.

1.6 INTERFACE DE PROGRAMA DE APLICACIÓN (API)WINDOWS SOCKETS

1.6.1 PROCESO BÁSICO DE CONEXIÓN DE UN SOCKET

La mayoría de las aplicaciones que se comunican a través de una red, sea la

Internet o una red pequeña de oficina, se valen de los mismos principios y

funciones para llevar a cabo cierta comunicación. Una aplicación reside en una

computadora, esperando que otra establezca una conexión de comunicación.

Esta aplicación "escucha" esta solicitud de conexión, de manera similar a una

persona que está atento al timbre del teléfono cuando espera una llamada.

Programación en Internet, Hamsa Cris - Cope Ken, McGraw Mili 1 ra. Edición 1996, Pag. 352

Page 54: ESCUELA POLITÉCNICA NACIONA L

40

Mientras otra aplicación, que probablemente esté (más no necesariamente) en

otra computadora, intenta comunicarse con la primera aplicación. Este intento por

establecer una conexión es similar a alguien por el teléfono. Si usted marca el

número, esperando que la otra persona esté al pendiente del teléfono al otro lado.

X /<c=

w

L j Acepta la solicitud de conexión

4 /

i=a |

J=^>

CLIENT SERVIDOR(Escucha esperando

conexiones)

Fig. 1.19 Proceso básico de conexión de un socket

Como la persona que hace la llamada, usted tiene que saber el número telefónico

de la persona a la que está llamando. Si no sabe su número, puede buscarlo

mediante e| nombre de la persona. De igual modo, la aplicación que trata de

conectarse con la primera aplicación tiene que saber la ubicación, o dirección, en

la red de dicha aplicación.

Una vez establecida la comunicación entre ambas aplicaciones, se pueden pasar

mensajes entre ellas, de manera análoga a lo que sucede en una conversación

telefónica. Esta conexión es un canal de comunicaciones en dos sentidos, donde

ambos lados envían información como lo muestra la figura 1.19.

Por último, una vez que algún lado, o ambos, ha terminado su conversación, la

conexión se cierra, lo que es equivalente a colgar el teléfono tras hablar con

alguien. Ya cerrada la conexión de un lado, el otro puede detectar esta situación y

cerrar su lado, de igual manera que usted puede saber cuando la persona del otro

L

Page 55: ESCUELA POLITÉCNICA NACIONA L

41

lado de la línea ha colgado el teléfono o la comunicación ha sido interrumpida por

algún medio. Ésta es una explicación básica del funcionamiento de las

comunicaciones de red entre dos o más aplicaciones.

1.6.2 INTRODUCCIÓN A WINSOCK

En una conversación en red dos procesos en computadoras anfitrión separadas

intercambian información. Los profesionales en redes llaman extremo a cada lado

de esta conversación.

Un socket es una representación abstracta de un extremo (el punto último dentro

del extremo) en una red. En los años ochenta, investigadores de la Universidad

de California en Berkeley usaron este modelo de sockets para desarrollar una

Interface de Programas de Aplicación (API, Application Program Interface) para

redes TCP/IP. Una API es un grupo de funciones que emplean los programadores

a fin de desarrollar aplicaciones para un ambiente de cómputo específico. La

Interface de Berkeley es sólo una implementacíón de una API basada en el

modelo de sockets.

El software llamado Windows Sockets comúnmente conocido como Winsock

también es una API basada en el paradigma de sockets. De hecho sus

desarrolladores derivaron esta API de la Interface de sockets de Berkeley. Sin

embargo, mientras la interface de Berkeley es una API que pueden usar los

programadores con múltiples sistemas operativos, la API Winsock se dirige

específicamente a la familia de sistemas operativos de Microsoft Windows, que

incluye Microsoft Windows, Windows 95T WindowsNT y ahora Windows Milenium,

Windows 2000 y Windows XP.

Winsock incluye muchas de las funciones de Berkeley desarrolladas para UNIX

(Sistema operativo para el cual los investigadores de Berkeley diseñaron al

principio la Interface de sockets), así como extensiones específicas de Windows

Page 56: ESCUELA POLITÉCNICA NACIONA L

42

que permiten a los programadores aprovechar el ambiente manejado con

mensajes de ese entorno operativo.

Durante la época de Windows 3.x, antes de que la conectividad se integrara en el

sistema operativo Windows, se podían comprar a varias compañías diferentes los

protocolos de red necesarios para la comunicación de red. Cada una de ellas

tenía una manera ligeramente diferente para que una aplicación llevara a cabo

sus comunicaciones de red. Como resultado, cualquier aplicación que realizara

comunicaciones de red tenía una lista de software de conectividad con el que

podía trabajar. Muchos desarrolladores de aplicaciones no estaban contentos con

esta situación. Como resultado, todas las compañías de redes, incluyendo

Microsoft, se juntaron para desarrollar la API Winsock (Windows Sockets). Ésta

proporcionó a los desarrolladores de aplicaciones una API consistente con la que

se podían realizar todas las comunicaciones de red, sin importar el software de

red que se empleará.

Cuando se quiere leer o escribir un archivo, debe valerse de un objeto de archivo

para apuntar a dicho archivo. Un socket es un objeto que sirve para leer y escribir

mensajes que viajan entre aplicaciones.

Establecer una'conexión con otra aplicación mediante un socket requiere de un

grupo de información distinto que simplemente abrir un archivo. Para abrir un

archivo, necesita saber su nombre y ubicación. Para establecer una conexión de

socket, necesita saber cuál es la computadora en la que se está ejecutando la

otra aplicación y el puerto por el que escucha.

Un puerto es como una extensión telefónica y la dirección de la computadora es

como el número telefónico. Para llamar a alguien en un gran edificio de oficinas,

puede llamar al número principal, pero luego necesita especificar el número de

extensión. De igual manera, los puertos sirven para enrutar las comunicaciones

de red como se muestra en la figura 1.20. Como sucede con el número telefónico,

hay medios para buscar el número de puerto, si no sabe cuál es el que necesita,

Page 57: ESCUELA POLITÉCNICA NACIONA L

43

pero esto requiere que su computadora esté configurada con la información

acerca de cuál es el puerto por el que la aplicación de conexión está escuchando.

Si especifica una dirección o puerto equivocado, podría conectarse a una

aplicación distinta; al hacer una llamada telefónica, otra persona contestaría la

llamada. Es posible que usted no reciba una respuesta, si no hay ninguna

aplicación escuchando del otro lado.

Sólo una aplicación puede estar escuchando en un puerto específico de una

computadora. Aunque varias aplicaciones pueden escuchar a la espera de

solicitudes de conexión en la misma computadora, cada una de ellas debe

escuchar en un puerto diferente.

La intefaz de redde una

computadorautiliza puertos desocket para dirigirlos mensajes de lared a la aplicación-

correcta.

Fig 1.201 Los puertos sirven para enrular las conexiones de red a la aplicación correcta.

Aprendiendo Visual C-H-6 en 21 Días, Da vis Chapman, Prentíce Hall Ira. Edición 1999, Pag. 499

L

Page 58: ESCUELA POLITÉCNICA NACIONA L

44

1.6.3 DEFINICIÓN DE SOCKET

Un socket es una representación abstracta del extremo (endpoint) en un proceso

de comunicación. Para que se dé la comunicación en una red, el programa

requiere un socket en cada extremo del proceso de comunicación.

Para crear un socket, se utiliza la función socket, que devuelve un identificador de

socket. Se deben especificar tres parámetros:

socket = socket(protocol_familiy, socket_type, protocol)

• Familia de Protocolos (Protocol Family): Identifica a una familia de

protocolos relacionados, como TCP/IP.

Se utilizan constantes para definir a las familias de protocolos como: PFJNET

(familia de protocolos Internet).

• Tipo de Socket (Socket__type) : Si el programa utilizará el socket para

transmitir flujo de bytes o datagramas.

SOCK_DGRAM para datagramas y SCK_STREAM para flujo de bytes.

La interface de sockets también define un tercer tipo de comunicación llamada

socket básico (raw socket) SOCK_RAW, que permite a una aplicación utilizar los

mismos protocolos de nivel inferior que la red utiliza comúnmente.

• Protocolo a utilizar: Permite especificar que protocolo utilizará el socket.

IPPROTOJTCP , IPPROTOJJDP

Ej: socketjiandle = socket(PFJNET, SOCK_STREAM, IPPROTO_TCP);

Cuando se llama a la función socket, la ¡mplementación del socket (o crea y

devuelve un identificador de socket que identifica a un registro en la tabla de

descripción. El registro muestra la estructura de datos del socket.

Page 59: ESCUELA POLITÉCNICA NACIONA L

45

1.6.4 ESTRUCTURA SIMPLE DE DATOS DE UN SOCKET.

Tabla de índice de descripción Estructura de datos del socket

0

12

3

4

5

Apuntador a una estructura

w Familia de protocolos

Tipo de servicio

Dirección IP local

Dirección IP remota

Puerto de protocolo local

Puerto de protocolo remoto

Figl.21 Estructura simple de datos de un socket.

Cada vez que la aplicación llama a la función socket, la implementación de éste

reserva memoria para una nueva estructura de datos y almacena la dirección de

la familia, el tipo.de socket y el protocolo.

Entonces una conexión de red entre dos procesos se compone de cinco

elementos

• Un puerto de protocolo local que especifica donde recibe mensajes un

proceso.

• La dirección del anfitrión o host local, la cual identifica al anfitrión que recibirá

los paquetes de datos.

• Un puerto de protocolo remoto que identifica al proceso destino.

Programación en Internet, Hamsa Cris -Cope Ken, McGraw Hill Ira. Edición 1996. Pag 162

Page 60: ESCUELA POLITÉCNICA NACIONA L

46

• La dirección del anfitrión remoto, que identifica al anfitrión destino.

• Un protocolo, que define como los procesos transfieren la información a través

de la red.

Cuando un proceso desea establecer una comunicación con otro, el proceso

emisor transmite la información al socket y la API de sockets maneja la interface

con la pila de protocolos TCP/IP.

\

"41

La estructura de datos del socket incluye elementos para almacenar valores de

los parámetros de la función socket. Sin embargo, también contiene elementos

para cuatro direcciones: IP local, IP remota, puerto local y puerto remoto. Cada

vez que el programa llama a la función socket, la ¡mplementación del socket

reserva memoria para una nueva estructura de datos y almacena la dirección de

la familia, el tipo de socket y el protocolo. En la tabla de descripción de archivos la

implementación del socket guarda un apuntador para la estructura de datos. El

identificador que cierto programa recibe de la función socket es un índice dentro

de la tabla de descripción.

1.6.5 CONFIGURACIÓN DE UN SOCKET

Una vez creado el socket, utilizando la función socket, se pueden utilizar las

funciones de configuración dependiendo del uso que se le vaya a dar al socket:

Si se trata de un cliente orientado a conexión se deberá llamar a la función

connect que se encargará de almacenar toda la información local y remota en la

estructura de datos del socket.

Si se trata de un cliente sin conexión las funciones llamadas son:

Máquina Local: bind Máquina remota: sendto

En el caso de un servidor orientado a conexión:

Máquina Local: bind Máquina Remota: listen y accept

Page 61: ESCUELA POLITÉCNICA NACIONA L

47

En el caso de un servidor sin conexión:

Máquina Local: bind Máquina Remota: recvfrom

1.6.6 CONEXIÓN DE UN SOCKET

Un programa cliente orientado a conexión utiliza la función connect para

configurar un socket, y requiere como parámetros, el identificador de socket, que

es el valor del descriptor del socket que devolvió la función socket. Como segundo

parámetro, utiliza la dirección del socket remoto, es decir la dirección IP del host

remoto y el puerto de protocolo. El tercer parámetro se refiere a la longitud de la

dirección, el tamaño en bytes de la dirección del socket remoto.

result = connect(socket__handle, remote_socket_address, addressjength);

En la mayoría de los casos un programa cliente orientado a conexión no

especifica puerto de protocolo local, ya que puede recibir datos en cualquier

puerto de protocolo. Es decir, no es necesario almacenar las direcciones IP

locales, la implementación del socket lo hace automáticamente y selecciona por si

misma un puerto de protocolo local.

En el caso de clientes no orientados a conexión o servidores en general tienen

que atender a un puerto de protocolo las solicitudes que les pueden llegar.

La función de asignación de nombres, bind, en la API de sockets permite a un

programa asociar una dirección local con un socket:

Result = bind(socket_handle, local_socket_address, addressjenght);

De esta manera se le comunica a la implementación del socket, qué puerto de

protocolo utilizar para la entrega de datos.

Page 62: ESCUELA POLITÉCNICA NACIONA L

48

1.6.7 TRANSMISIÓN DE DATOS

Se proporcionan cinco funciones para transmitir datos a través de un socket y se

dividen en dos grupos. Existen tres funciones que requieren una dirección de

destino como parámetro, las restantes que son las utilizadas en los procesos

orientados a conexión, no lo precisan.

FUNCIÓN

Send

Write

Writev

Sendto

Sendmsg

DESCRIPCIÓN

Transmite datos a través de un socket de conexión.

Transmite datos a través de un socket de conexión

utilizando un bufer de datos simple.

Transmite datos a través de un socket de conexión

utilizando bloques de memoria no contiguos.

Transmite datos a través de un socket sin conexión

utilizando un bufer de mensajes simple.

Transmite datos a través de un socket sin

conexión, utilizando una estructura de mensajes

flexible como bufer de mensajes

Tabla 1.31 Funciones para Transmitir Datos a través de un socket

Las funciones del API de sockets que hacen transmisiones de datos orientadas a

conexión no requieren que el programa especifique una dirección destino como

parámetro. Las funciones send, write y writev sólo trabajan con sockets

conectados, y tiene la siguiente estructura:

Result = write(socket_handle, message_buffer, bufferjength);

Programación en Internet, Hamsa Cris- Cope Ken, McGraw Ilill Ira. Edición 1996, Pag. 167

Page 63: ESCUELA POLITÉCNICA NACIONA L

49

El primer parámetro es el ¡dentificador de socket, el segundo es el búfer de

mensajes, que apunta al búfer de datos que contiene la información a transmitir.

El tercer parámetro es el tamaño del búfer de datos.

por otro lado la función writev no requiere que los datos ocupen bloques de

memoria contiguos como si lo hace la función write. Así writev permite que se

especifique una tabla de direcciones que contenga los datos.

Result = writev(socket_handle, io_vector, vectorjength);

También requiere como primer parámetro, un identificador de socket, el segundo

parámetro especifica la dirección de una tabla que contiene una secuencia de

apuntadores. Cuando la función writev transmita los datos, enviará la información

contenida en cada localidad de memoria especificada por el array de

apuntadores, transmitiéndolos en el mismo orden en que aparecen en el array.

La función send es otra función del interface de sockets para utilizar con sockets

orientados a conexión:

Result = send(socket(socket_handle), message_buffer, bufferjength,

special_flags);

Con send se pueden especificar banderas opcionales para controlar la

transmisión, como la gestión de datos urgentes (fuera de banda).

Las tres funciones write, writev y send, devuelven un valor entero, que es el

numero de bytes transmitidos por el socket. En caso de que exista un error

devuelven: -1.

Page 64: ESCUELA POLITÉCNICA NACIONA L

50

1.6.8 SOCKETS SIN CONEXIÓN

para enviar datos a través de un socket sin conexión se tienen las funciones,

sendto y sendmsg \t = sendto(socket_handle, message_buffer, bufferjength,

special_flags, socket_address__structure, address_structurejength);

Requiere 6 parámetros, entre los nuevos que aparecen ahora la dirección de

destino (socket_address_structure), y la longitud de la misma en bytes

(address_structurejength).

La función sendmsg nos permite utilizar para la transmisión una estructura de

mensaje, en lugar de un simple buffer de datos. Requiere como parámetros un

identificador de socket, un puntero a la estructura del mensaje

(message_structure) y banderas (special_flags).

Result= sendmsg(socket_handle, message_structure, special_flags);

1.6.9 RECEPCIÓN DE DATOS POR UN SOCKET

La Interface de Sockets, incluye 5 funciones para la recepción de datos, que se

corresponden con las 5 funciones anteriores vistas en la transmisión de datos:

Page 65: ESCUELA POLITÉCNICA NACIONA L

51

Send

Write

Writev

Sendto

Sendmsg

Recv

Read

Readv

Recvfrom

Recvmsg

Tabla 1.41 Funciones para la recepción de Datos

A parte de estas correspondencias, hay que tener en cuenta que no es

indispensable utilizarlas unas con otras, ya que una vez se han enviado datos,

para recibirlos se puede realizar con cualquiera de las funciones correspondientes

al tipo de servicio, orientado o no a conexión.

1.6.9.1 Descripción del Proceso

El programa servidor solicita a la implementación del socket que le asigne una

estructura de datos para el socket y que le devuelva un descriptor de sockets para

utilizarlo en las siguientes llamadas a funciones de la interfaz de sockets.

Después el servidor une el socket a un puerto de protocolo local. La función listen

indica al socket que atienda las conexiones entrantes y que confirme las

solicitudes de conexión, se encarga de poner al socket en modo de atención

pasiva.

Result = listen(socket_handle, queuejength);

Programación en Internet, Hamsa Cris - Cope Ken, McGraw Hill Ira. Edición 1996, Pag. 170

Page 66: ESCUELA POLITÉCNICA NACIONA L

52

Donde el segundo parámetro (queuejength), nos permite especificar el número

máximo de solicitudes que pueden acumularse en la cola.

Después de configurar una cola de datos entrantes, el programa servidor llamará

a la función accept, cesa su actividad y espera una solicitud de conexión de un

programa cliente.

Result = accept (socketjiandle, socket_address, addressjength);

El programa cliente también crea un socket, pero no necesita ocuparse de que

dirección local usará el protocolo ya que utiliza un protocolo orientado a conexión,

por lo tanto no llama a la función blnd. Lo que hace es iniciar la conversación en

red llamando a la función connect.

Después de que el cliente y el servidor establecen la conexión, pueden ocurrir

comunicaciones adicionales a través de las funciones wríte y read.

1.6.10 REVISIÓN DE LAS FUNCIONES DE LA API WINDOWS SOCKETS

El software llamado Windows Sockets o Winsock es una API (Application Program

Interface) , Interface de programas de aplicación para redes TCP/IP, y específica

de la familia de sistemas operativos de Microsoft Windows en todas sus

versiones.

Windows Sockets implementa la interface de sockets como una biblioteca de

enlace dinámico, una DLL (Dynamic Lynk Library), que no es más que un módulo

ejecutable que el sistema puede cargar en cualquier momento.

La API Winsock proporciona una biblioteca de funciones que se divide en tres

grupos:

Page 67: ESCUELA POLITÉCNICA NACIONA L

53

• Funciones de los Berkeley Sockets.

• Funciones de Bases de Datos que permiten obtener información relacionada

con el DNS, servicios de comunicaciones y protocolos.

• Las extensiones específicas de Windows a las rutinas de los Sockets de

Berkeley.

Distinguimos entre las funciones de bloqueo, que son aquellas que evitan que se

llame a cualquier otra función hasta que esta termine sus propias operaciones de

red. Y las de no bloqueo que terminan de inmediato o emiten un mensaje de

error.

1.6.10.1 Funciones Socket

Función

Accept

Closesocket

Connect

Recv

Recvfrom

Select

Send

Sendto

Descripción

Confirma una conexión de entrada. Crea un socket

nuevo y lo conecta al host remoto que pidió la

conexión. Devuelve el socket original a su estado de

atender

Cierra un extremo de una conexión por sockets.

Inicia una conexión en el socket especificado.

Recibe información de un socket conectado.

Recibe información de un socket conectado o de uno

no conectado.

Ejecuta multiplexaje síncrono de E/S al monitorear el

estado de múltiples sockets.

Envía información a un socket conectado.

Envía información a un socket conectado o a uno no

conectado.

Tabla 1.51 Funciones Sockets de Bloqueo

Programación en Internet, Harina Cris - Cope Ken, McCrawHÜI Ira. Edición 1996, Pag. 183

Page 68: ESCUELA POLITÉCNICA NACIONA L

54

Función

Bind

Getpeername

Getsockname

Getsockopt

Htonl

Htons

lnet_addr

lnet_ntoa

loctlsocket

Listen

Ntohl

Ntohs

Setsockopt

Shutdown

Socket

Descripción

Asigna un nombre local a un socket sin nombre.

Obtiene el nombre del par conectado al socket

especificado.

Obtiene el nombre local para el socket especificado.

Obtiene opciones asociadas con el socket

especificado.

Convierte un número de 32 bits de ordenamiento de

byte de anfitrión a ordenamiento de byte de red.

Convierte un número de 16 bits de ordenamiento de

byte de anfitrión a ordenamiento de byte de red.

Convierte una cadena de caracteres que representa

una dirección IP en notación decimal al valor binario

de 32 bits.

Convierte una dirección IP a notación decimal.

Controla varios parámetros relacionados con la forma

de operar del socket y el manejo de la E/S de red.

Indica a un socket específico que atienda las

conexiones entrantes.

Convierte un número de 32 bits de ordenamiento de

byte de red a ordenamiento de byte de anfitrión.

Convierte un número de 16 bits de ordenamiento de

byte de red a ordenamiento de byte de anfitrión.

Almacena opciones asociadas con el socket

especificado.

Cierra parte de una conexión full dúplex.

Crea un extremo para la comunicación y devuelve un

identificador de socket.

Tabla 1.61 Funciones Sockets de No Bloqueo

Programación en Internet, Hamsa Cris-Cope Ken, McGraw Hill Ira. Edición 1996, Pag. 184

Page 69: ESCUELA POLITÉCNICA NACIONA L

55

Las funciones vistas en la tabla 1.5, se pueden clasificar como de bloqueo porque

requieren comunicación con el anfitrión remoto. Mientras que las que aparecen en

la tabla 1.6, sólo utilizan información almacenada de manera local, o bien sólo

trabajan con el extremo de una conexión del socket de su computadora.

1.6.10.2 Funciones de Base de Datos

Función

Gethostbyaddr

Gethostbyname

Gethostname

Getprotobyname

Getprotobynumber

Getservbyname

Getservbyport

Descripción

Obtiene nombre de dominio y dirección IP

correspondiente a una dirección de red.

Obtiene nombre de dominio y dirección IP

correspondiente a un nombre de anfitrión.

Obtiene el nombre de dominio del anfitrión

local.

Obtiene un protocolo por nombre y devuelve

el nombre oficial y el número definido para

representar al protocolo.

Obtiene el nombre y número de protocolo

representado por un número específico.

Obtiene un nombre de servicio y el puerto de

protocolo correspondiente al nombre del

servicio.

Obtiene el nombre del servicio y el puerto

correspondiente a un puerto de protocolo

especifico.

Tabla 1.71 Funciones de Bases de Datos

Programación en Internet, Hamsa Cris - Cope Ken, McGraw HUÍ Ira. Edición 1996, Pag. 185

Page 70: ESCUELA POLITÉCNICA NACIONA L

56

Las funciones de base de datos de Winsock, permiten obtener información sobre

nombres de dominio, servicios de comunicación y protocolos.

Algunas de las funciones de bases de datos de Winsock devuelven estructuras de

datos volátiles, ya que sólo guardan los resultados hasta la próxima llamada a

otra función Winsock, por lo tanto estos resultados debe guardarse en un lugar

diferente de la memoria. Para ello tenemos las versiones asincronas de estas

funciones que nos permiten aprovechar el despliegue de mensajes dentro de

Windows.

WSAAsyncSelect

WSACancelAsyncRequest

WSACancelBIockingCall

WSACIeanup

WSAGetLastError

WSAIsBIocking

WSASetLastError

WSAStartup

WSAUnhookBlockingHook

Ofrece una versión asincrona de la

función Select.

Cancela una instancia de la función

WSAAsyncGetXByY

Cancela una llamada de bloqueo de la

API

Termina sesión desde los DLL

subyacentes de Winsock

Obtiene detalles sobre el último error de

la API Winsock.

Determina si el DLL de Winsock

subyacente está bloqueado.

Establece el regreso de error para

WSAGetLastError subsecuente.

Inicia el DLL de Winsock subyacente.

Restaura la función original de bloqueo.

Tabla 1.81 Funciones de Bases de Datos Asincronas

Programación en Internet, Hamsa Cris - Cope Ken, McGraw Hill Ira. Edición 1996, Pag. 186

Page 71: ESCUELA POLITÉCNICA NACIONA L

57

1.7 PROGRAMACIÓN CON WINDOWS SOCKETS

Los programas de red basados en la API Windows Sockets deben incluir un

encabezado de archivo llamado winsock.h :

#¡nclude<winsock.h>

La API de Windows Sockets requiere dos funciones especificas de Windows, que

son:

WSAStartup: Se debe llamar a esta función antes de llamar a cualquier otra de

Winsock. Nos permite especificar que versión de la API Windows Sockets va a

necesitar nuestro programa. Se establece una negociación entre la aplicación y

Winsock.dll.

WSACIeanup: Se debe colocar por cada llamada que se haga a WSAStartup.

Cuando se llama a la función WSACIeanup por última vez, Winsock desconecta

cualquiera de los sockets de flujo de bytes existentes. Aunque respeta la

información pendiente.

1.7.1 DESCRIPTOR DE SOCKET

Winsock define SOCKET como un tipo de datos sin signo y emplea la constante

INVALID__SOCKET para identificar a los no válidos.

Un socket válido está en el rango desde O INVALID SOCKET -1 .

Para el caso de que ocurra un error de socket, Winsock nos proporciona la

constante SOCKET_ERROR, que define como ~-1, y para identificar la condición

concreta del error nuestra aplicación deberá llamar a la función WSAGetLastError,

que se encarga de obtener el último error que ocurrió en la red.

Page 72: ESCUELA POLITÉCNICA NACIONA L

58

1.7.1.1 Función Select

Esta función deja que un solo proceso monitoree o determine el estado de

múltiples sockets. Un conjunto es una lista específica de sockets que Winsock

monitorea para revisar los cambios de estado. Para manipular estos conjuntos

Winsock se vale de las siguientes macros:

i

Macro

FD_CLR

FDJSSET

FD_SET

FD_ZERO

Función

Borra un identificador de socket de la lista.

Devuelve un valor diferente de cero (TRUE)

si el identificador de socket está establecido

y cero (FALSE) si no lo está.

Agrega un identificador de socket a una

lista.

Inicializa un conjunto de identificadores.

Tabla 1.91 Macros para manipular et estado de un sockets

Winsock proporciona una versión asincrona de SELECT , WSAAsyncSelect para

las operaciones de socket de no bloqueo en Winsock.

Una aplicación puede llamar a la función WSAAsyncSelect para cambiar la

operación del socket de bloqueo a no bloqueo. Teniendo en cuenta que

WSAAsyncSelect sólo acepta un identificador de socket a la vez como parámetro.

WSAAsyncSelect (SOCKET s, HWND hWnd, unsigned int wMsg, long

lEvent);

Programación en Internet, Hamsa Cris- Cope Ken, McGraw HUÍ Ira. Edición 1996, Pag. 204

Page 73: ESCUELA POLITÉCNICA NACIONA L

59

El parámetro lEvent es una máscara de bits que especifica que combinación de

eventos de la red se desean revisar. Sus valores pueden ser:

Constante

FD_READ

FD_WRITE

FD_OOB

FD_ACCEPT

FD_CONNECT

FD_CLOSE

Significado

Solicita notificación de que está listo

para leer.

Solicita notificación de que está listo

para escribir.

Solicita un aviso de la llegada de

información fuera de banda.

Solicita un aviso de las conexiones

entrantes.

Solicita un aviso de las conexiones

terminadas.

Solicita un aviso de la terminación de

socket.

Tabla 1.101 Valores del Parámetro lEvent de WSAAsyncSelect

El segundo parámetro hWnd especifica el identifícador de la ventana que recibirá

el mensaje, (parámetro wMsg)

El tercer parámetro wMsg, define el mensaje que usted quiere que envíe

Windows cuando el evento especificado ocurra en la red.

Cuando se llama a la función WSAAsyncSelect, Winsock designa al socket que se

especifica como de no bloqueo. Por ejemplo si se quiere realizar una operación

usando la función recv, evitando operaciones de bloqueo. Se llamará a la función

WSAAsyncSelect, que se encargará a su vez de decirle a Windows que notifique

Programación en Internet, Hamsa Cris-Cope Ken, McGraw HÍII Ira. Edición 1996, Pag. 211

Page 74: ESCUELA POLITÉCNICA NACIONA L

60

a la aplicación en cuestión cuando el socket está listo para leer. Cuando el socket

recibe la información, Windows enviará el identificador de mensaje

correspondiente a la ventana que especifique la función WSAAsyncSelect.

Cuando el procedimiento de manejo del mensaje para esa ventana reciba el

mensaje, la aplicación podrá ejecutar un código que llame a la función recv.

1.7.1.2 Hook de bloqueo

Winsock nunca permite que una operación de bloqueo ocurra dentro de Windows.

Cuando un programa llama a una función que causaría una operación de este

tipo, Winsock entra en un ciclo y llama de forma repetitiva a un identificador de

bloqueo o rutina hook, cuyo propósito es interceptar las llamadas a funciones que

causan una operación de bloqueo.

El identificador de bloqueo estándar de Winsock incluye un código análogo a las

siguientes instrucciones :

If (peekMessage(&msg, NULL, O, O, PM_REMOVE))

{TranslateMessage(&msg);

DispatchMessage(&msg);

La función PeekMessage revisa la cola de mensajes de la aplicación, en caso de

que existan mensajes, lo coloca en una estructura MSG y devuelve un valor que

no sea cero.

De todas formas el hook de bloqueo no resuelve el problema en su totalidad, ya

que cuando se ejecuta es posible que aparezca un mensaje de Windows para la

tarea en curso, que puede causar que la aplicación llame a otra función de

Winsock. Con lo cual se tiene que siempre que una operación de bloqueo de

Page 75: ESCUELA POLITÉCNICA NACIONA L

61

VVinsock esté en progreso, no se podrá llamar desde la aplicación a otras

funciones de Winsock.

Winsock proporciona dos funciones para detectar y manejar operaciones de

bloqueo:

Ninguna de las funciones requiere parámetros.

• WSAIsBlockinq: Se llama a esta función para determinar si está en

progreso una operación de bloqueo. Devolverá TRUE si es así y FALSE,

en caso contrario.

• WSACancelBIockíngCall: Se llamará a esta función para cancelar la

operación de bloqueo que esté en curso. La llamada a la función que inició

la operación de bloqueo coge el valor de error WSAEINTR.

La API de Winsock incluye dos funciones avanzadas para manejar las

operaciones de bloqueo:

• WSASetBIockíngHook: Nos permite definir nuestra propia rutina de bloqueo.

• WSÁUnhookBlockinhook: Se encarga de restaurar el hook de bloqueo

predeterminado.

Para los sistemas operativos Windows95 y WindowsNT, el bloqueo ocurre en

base a cada tarea. Winsock no incluye un hook de bloqueo para las versiones

multitarea de Windows, cuando sucede una operación de bloqueo todas las

demás actividades en las tareas se detienen hasta que esta concluye. De todas

Page 76: ESCUELA POLITÉCNICA NACIONA L

62

formas Winsock permite utilizar en tales versiones de Windows la función

WSASetBIockingHook para implementar nuestro propio hook de bloqueo.

1.7.2 POSICIONES DE WINSOCK DENTRO DEL AMBIENTE WINDOWS

La capa superior de comunicación mostrada en la figura 1.22, es proporcionada

por un proveedor de Winsock, esta capa se sitúa entre un programa basado en

Windows y WINSOCK.DLL. La capa superior de comunicación puede ser una

llamada de procedimiento remoto (RPC, Remote Procedure Cali) o cualquier otro

programa que proporcione un servicio similar.

RPC es una interface que permite que un programa llame a un procedimiento que

reside en una computadora remota. Los programas usan extensivamente las

funciones y procedimientos. Cuando un programa llama a una función, por lo

general el usuario pasa parámetros a esa función. Casi siempre las instrucciones

de función están contenidas dentro del código de un programa o dentro de un

archivo DLL de Windows. No obstante, en caso de una llamada de procedimiento

remoto, el código de la función reside en una computadora diferente. Suponga

que se desarrolla programas en una red de área local (LAN) que ejecuta

protocolos TCP/IP. Dentro de ella, una computadora remota puede incluir una

implementación de Winsock, Conforme se ejecutan los programas basados en

Internet, deben llamar a los procedimientos localizados en WINSOCK.DLL. En

este caso, puesto que DLL reside en una computadora remota, el programa debe

hacer una llamada de procedimiento remoto.

Una interface RPC permite a un programa llamar a procedimientos en módulos

de código que no residen en la computadora local, por ejemplo, los módulos de

código como las DLL que pueden residir en la computadora central de una red.

Microsoft incluye productos RPC en sus sistemas operativos avanzados

(Windows NT y Windows 95). En la mayoría de los casos, el hecho de que un

programa invoque a un procedimiento remoto será claro para el usuario, así

como para el programador. En consecuencia, los programas llaman a una función

Page 77: ESCUELA POLITÉCNICA NACIONA L

63

remota como llamarían a cualquier función residente en una computadora local.

La interface RPC, a su vez, mapea de manera transparente la llamada a la

función a través de la red.

Aplicación de Windows.

RPC o alguna otra capa de comunicación de nivel superior

IWINSOCK.DLL

Pila de protocolos TCP/IP

Controlado! de paquete ODI o NDIS

Bus de datos de la red

HARDWARE

Controlador de interface de red

Líneas Telefónicas

Protocolo SLIP o PPP

SOFTWARE

Tarjeta de interface de red

Controlador de puerto serial

Módem

Figura 1.221 Posición de Winsock dentro del ambiente Windows

WINSOCK.DLL se sitúa entre la pila de protocolos TCP/IP y las aplicaciones del

usuario, esto es, Winsock maneja la interface con los protocolos TCP/IP.

Programación en Internet, Hamsa Cris- Cope Ken, McGraw Hill Ira. Edición 1996, Pag. 187

Page 78: ESCUELA POLITÉCNICA NACIONA L

64

1.8 APLICACIÓN DEL ENTORNO DE DESARROLLO DE

VISUAL C++ PARA MANEJO DE APLICACIONES CON

SOCKETS

1.8.1 PROGRAMACIÓN ORIENTADA A OBJETOS CON VISUAL C++

La frase orientado(a) a objetos se ha vuelto muy popular en los últimos años, se

habla de sistemas operativos orientados a objetos, lenguajes orientados a

objetos, programación orientada a objetos (POO), etcétera. Sin embargo, el

concepto surgió hace ya 25 años con la creación del lenguaje Simula; su

redescubrimiento y creciente popularidad se deben a C++, lenguaje creado por

Stroustrup y basado en un lenguaje ampliamente utilizado como es C. El objetivo

de este capítulo es presentar los principales conceptos involucrados en la POO

así como la forma de implementarlos en Visual C++ para crear el programa que

nos permitirá monitorear a dispositivos configurados con TCP/IP utilizando

Winsockets.

Las siguientes definiciones caracterizan una programación orientada a objetos:

1. Abstracción

2. Encapsulación

3. Medularidad

4. Jerarquización

5. Tipificado

6. Concurrencia

7. Persistencia

Las cuatro primeras características son esenciales, mientras que las tres últimas

son útiles y complementan el modelo.

Page 79: ESCUELA POLITÉCNICA NACIONA L

65

1.8.1.1 Abstracción

Denota las características esenciales que distinguen a un objeto de otros tipos de

objetos, definiendo precisas fronteras conceptuales, relativas al observador.

• Surge del reconocimiento de similaridades entre ciertos objetos,

situaciones o procesos en el mundo real.

• Decide concentrarse en estas similaridades e ignorar las diferencias.

• Enfatiza detalles con significado para el usuario, suprimiendo aquellos

detalles que, por el momento, son irrelevantes o distraen de lo esencial.

• Deben seguir el "principio de mínimo compromiso", que significa que la

interface de un objeto provee su comportamiento esencial, y nada más que

eso. Pero también el "principio de mínimo asombro": capturar el

comportamiento sin ofrecer sorpresas o efectos laterales.

1.8.1.2 Encapsulación

Es el proceso de compartimentalización de los elementos de una abstracción que

constituyen su estructura y comportamiento. La encapsulación sirve para separar

la interface de una abstracción y su implementación.

Es un concepto complementario al de abstracción.

La encapsulación esconde la implementación del objeto que no contribuye

a sus características esenciales.

La encapsulación da lugar a que las clases se dividan en dos partes:

1. Interface: captura la visión externa de una clase, abarcando la

abstracción del comportamiento común a los ejemplos de esa clase.

2. Implementación: comprende la representación de la abstracción, así

como los mecanismos que conducen al comportamiento deseado.

Se conoce también como ocultamiento o privacidad de la información.

Page 80: ESCUELA POLITÉCNICA NACIONA L

66

1.8.1.3 Medularidad

Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto

de módulos cohesivos y vagamente conexos.

Cada módulo se puede compilar separadamente, aunque tengan

conexiones con otros módulos.

En un diseño estructural, modularización comprende el agrupamiento

significativo de subprogramas. En diseño orientado a objetos, la

modularización debe ceñirse a la estructura lógica elegida en el proceso de

diseño.

Dividir un programa en componentes individualizados reduce en alguna

manera su complejidad.

En C++ se separan los módulos interface de los módulos con

implementación, estando los primeros en ficheros con extensión .h

llamados header files, mientras que los segundos se almacenan en

ficheros con extensión .c, .ce, ,cp o .cpp. La dependencia entre ficheros se

realiza a través de la macro #include.

1.8.1.4 Jerarquización

Es una clasificación u ordenación de las abstracciones.

• Por jerarquía denotamos el orden de relación que se produce entre

abstracciones diferentes.

• Los tipos de jerarquía más útiles:

1. Herencia: (generalización/especialización, padre/hijo, jerarquía del

tipo "es un"...). Una clase (subclase) comparte la estructura o

comportamiento definido en otra clase, llamada superclase.

2. Herencia múltiple: Una clase comparte la estructura o

comportamiento de varias superclases.

3. Agregación: Comprende relaciones del tipo "es parte de" al realizar

una descomposición.

Page 81: ESCUELA POLITÉCNICA NACIONA L

67

1.8.1.4.1 Relaciones entre los conceptos asociados al modelo de objetos

• Los conceptos de abstracción y encapsulación son conceptos

complementarios: abstracción hace referencia al comportamiento

observable de un objeto, mientras encapsulación hace referencia a la

implementación que la hace alcanzar este comportamiento.

• Existe una tensión entre los conceptos de encapsulación de la información

y el concepto de jerarquía de herencia, que requiere una apertura en el

acceso a la información.

• C++ Ofrece mucha flexibilidad, pudiendo disponer de tres compartimentos

en cada clase:

1. Privado: declaraciones accesibles sólo a la clase (completamente

encapsulado)

2. Protegido: declaraciones accesibles a la clase y a sus subclases.

3. Público: declaraciones accesibles a todos los clientes.

Además de estos tres tipos, soporta la definición de clases cooperativas a

las que se les permite acceder a la parte privada de la implementación.

Estas clases se denominan fríends.

1.8.1.5 Tipificado

Tipificar es la imposición de una clase a un objeto, de tal modo que objetos de

diferentes tipos no se puedan intercambiar, o se puedan intercambiar solo de

forma restringida.

• Tipo es una caracterización precisa de las propiedades estructurales y de

comportamiento que comparten una colección de entidades.

• Grosso modo, tipo y clase pueden considerarse sinónimos.

• Existen lenguajes fuertemente tipificados (Ada) y débilmente tipificados.

Estos últimos soportan polimorfismo, mientras que los fuertemente

tipificados no.

Page 82: ESCUELA POLITÉCNICA NACIONA L

68

1.8.1.6 Concurrencia

Es la propiedad que distingue un objeto activo de uno no activo. Concurrencia

permite que diferentes objetos actúen al mismo tiempo, usando distintos threads

de control.

1.8.1.7 Persistencia

Es la propiedad por la cual la existencia de un objeto trasciende en el tiempo (esto

es, el objeto sigue existiendo después de que su creador deja de existir) o en el

espacio (esto es, la localización del objeto cambia respecto a la dirección en la

que fue creado).

1.8.2 CLASES Y OBJETOS

1.8.2.1 Objetos

• Un objeto es una cosa tangible, algo a que se puede aprehender

intelectualmente o algo hacia lo que se puede dirigir una acción o

pensamiento.

• Un objeto representa un Ítem individual e identificable, o una entidad real o

abstracta, con un papel definido en el dominio del problema

• Un objeto tiene:

1. Estado

2. Comportamiento

3. Identidad

La estructura y el comportamiento de objetos similares se definen en sus clases

comunes. El término objeto y ejemplo (instance) de una clase son

intercambiables.

Page 83: ESCUELA POLITÉCNICA NACIONA L

69

1.8.2.1.1 Estado de un Objeto

El estado de un objeto abarca todas las propiedades del objeto, y los valores

actuales de cada una de esas propiedades. Las propiedades de los objetos

suelen ser estáticas, mientras los valores que toman estas propiedades cambian

con el tiempo.

• El hecho de que los objetos tengan estado implica que ocupan un espacio,

ya en el mundo físico , ya en la memoria del ordenador.

• El estado de un objeto está influido por la historia del objeto.

• No deben confundirse los objetos, que existen en el tiempo, son mutables,

tienen estado, pueden ser creados, destruidos y compartidos, con los

valores (los asignados a una variable, por ejemplo) que son cantidades con

las propiedades de ser atemporales, inmutables.

• El estado de un objeto representa el efecto acumulado de su

comportamiento,

1.8.2.1.2 Identidad de un Objeto

Identidad es la propiedad de un objeto que lo lleva a distinguirse de otros.

1.8.2.1.3 Comportamiento de un Objeto

Comportamiento es como un objeto actúa y reacciona, en términos de sus

cambios de estado y de los mensajes que intercambia.

El comportamiento de un objeto representa su actividad externamente visible y

testable. Son las operaciones que una clase realiza (llamadas también mensajes)

las que dan cuenta de como se comporta la clase. Por operación se denota el

servicio que una clase ofrece a sus clientes. Un objeto puede realizar cinco tipos

de operaciones sobre otro, con el propósito de provocar una reacción:

1. Modificador: altera el estado de un objeto.

2. Selector: accede al estado de un objeto, sin alterarlo.

3. Iterador: permite a todas las partes de un objeto ser accedidas en un

orden.

Page 84: ESCUELA POLITÉCNICA NACIONA L

70

4. Constructor: crea un objeto y/o inicializa su estado.

5. Destructor: libera el estado de un objeto y/o destruye el objeto.

C++ soporta, además de las operaciones, subprogramas libres. En la terminología

de C++ las operaciones que un cliente puede realizar sobre un objeto se declaran

como funciones miembro.

1.8.2.1.4 Relaciones entre Objetos

Las relaciones entre objetos abarcan las operaciones, resultados y suposicionesque unos hacen sobre los otros.

1. Links. Son conexiones físicas o conceptuales entre objetos. Denota la

asociación específica por la que un objeto (cliente) usa o solicita el servicio

de otro objeto (servidor). El paso de mensajes entre objetos los sincroniza.

2. Agregaciones. Denota relaciones todo/parte, con capacidad para gobernar

desde el todo las partes. Es equivalente a la relación "tener un". El todo

puede contener a la parte.

Agregación es conveniente en las ocasiones en que el encapsulamiento de las

partes es prioritario. Si se requiere que las relaciones entre objetos estén

vagamente acopladas, se utilizan links.

1.8.2.2 Clases

Una clase es un conjunto de objetos que comparten una estructura y

comportamiento comunes.

• Clase representa una abstracción, la esencia que comparten los objetos.

• Un objeto es un ejemplo de una clase.

• Un objeto no es una clase, y una clase no es un objeto (aunque puede

serlo, p.e. en Smalltalk1).

Smalltalk es un lenguaje de programación de alto nivel

Page 85: ESCUELA POLITÉCNICA NACIONA L

71

• Las clases actúan como intermediarias entre una abstracción y los clientes

que pretenden utilizar la abstracción. De esta forma, la clase muestra:

1. visión externa de comportamiento (interface), que enfatiza la

abstracción escondiendo su estructura y secretos de comportamiento.

2. visión interna (implementación), que abarca el código que se ofrece en

la interface de la clase.

1.8.2.2.1 Relaciones entre Clases

Representan tipos de compartición entre clases, o relaciones semánticas.

1. Asociación. Indica relaciones de mandato bidireccionales (Punteros ocultos

en C++). Conlleva dependencia semántica y no establece una dirección de

dependencia. Tienen cardinalidad.

2. Herencia. Por esta relación una clase (subclase) comparte la estructura y/o

comportamiento definidos en una (herencia simple) o más (herencia

múltiple) clases, llamadas superclases.

• Representa una relación del tipo "es un" entre clases.

• Una subclase aumenta o restringe el comportamiento o estructura

de la superclase (o ambas cosas).

• Una clase de la que no existen ejemplos se denomina abstracta.

• C++ declara como virtuales todas aquellas funciones que quiere

modificaren sus subclases.

3. Agregación. Representa una relación del tipo "tener un" entre clases.

Cuando la clase contenida no existe independientemente de la clase que la

contiene se denomina agregación por valor y además implica contenido

físico, mientras que si existe independientemente y se accede a ella

indirectamente, es agregación por referencia.

4. Uso. Es un refinamiento de la asociación donde se especifica cuál es el

cliente y cuál el servidor de ciertos servicios, permitiendo a los clientes

acceder sólo a las interfaces públicas de los servidores, ofreciendo mayor

encapsulación de la información.

Page 86: ESCUELA POLITÉCNICA NACIONA L

72

5. Eiemplificación Se usa en lenguajes que soportan genericidad (declaración

de clases parametrizadas y argumentos tipo témplate). Representa las

relaciones entre las clases parametrizadas, que admiten parámetros

formales, y las clases obtenidas cuando se concretan estos parámetros

formales, ejemplificados o inicializados con un ejemplo.

6. Metaclases Son clases cuyos ejemplos son a su vez clases. No se admiten

en C++.

1.8.2.3 Relaciones entre Clases y Objetos

• Todo objeto es el ejemplo de una clase, y toda clase tiene O ó más objetos.

• Mientras las clases son estáticas, con semántica, relaciones y existencia

fijas previamente a la ejecución de un programa, los objetos se crean y

destruyen rápidamente durante la actividad de una aplicación.

El diseño de clases y objetos es un proceso incremental e iterativo. Debe

asegurar la optimización en los parámetros:

1. Acoplamiento: Grado de acoplamiento entre módulos.

2. Cohesión: Mide el grado de conectividad entre elementos de un módulo, y

entre objetos de una clase.

3. Suficiencia: Indica que las clases capturan suficientes características de la

abstracción para conseguir un comportamiento e interacción eficiente y con

sentido.

4. Completitud: Indica que la ¡nterface de la clase captura todo el significado

característico de una abstracción, escrito en el mínimo espacio.

5. Primitividad: Las operaciones deben implementarse si dan acceso a una

representación fundamental de la abstracción. Cuales son operaciones

primitivas y cuales no (se pueden realizar a partir de otras) es un asunto

subjetivo y afecta a la eficiencia en la implementación.

Page 87: ESCUELA POLITÉCNICA NACIONA L

73

1.8.2.4 Análisis Orientado a Objetos

• Como primera aproximación clásica, se proponen como clases y objetos

los elementos de una categorízación clásica.

• Un análisis del comportamiento, de acuerdo con el agolpamiento

conceptual, lleva a formar clases basadas en grupos de objetos que

exhiben un comportamiento similar Se agrupan por comunes

responsabilidades (servicios ofrecidos en sus interfaces), formando

jerarquías de especialización de responsabilidades.

• En el análisis de dominio se intentan identificar objetos, operaciones y

relaciones que los expertos en el campo perciban como importantes en el

dominio del problema.

• Use-Case análisis o con guiones: se usa conjuntamente con alguno de los

anteriores. Se ejemplifican situaciones reales de utilización, a partir de

unas condiciones iniciales. Debe provocar en los participantes una

estructuración clara, y separación de responsabilidades.

• Las tarjetas CRC (Clase/Reponsabilidades/Colaboradores) sirven para

analizar guiones. Se escriben en tarjetas los nombres de clases, sus

reponsabilidades y sus colaboradores. Deben quedar claros los patrones

jerárquicos entre clases, y el flujo de mensajes.

• En la descripción informal se escribe el problema en frases simples,

subrayando nombres y verbos. Se convierte a los nombres en objetos y los

verbos son operaciones sobre objetos. Obliga a trabajar sobre el

vocabulario del problema, pero tiene el inconveniente de la imprecisión del

lenguaje, a la hora de describir comportamientos precisos.

• El análisis de estructuras usa métodos de programación estructural, de los

que deriva los elementos del modelo de objetos.

1.8.2.5 Notación

La notación debe ser un vehículo para capturar la forma de funcionar, el

comportamiento y la estructura de un sistema.

Page 88: ESCUELA POLITÉCNICA NACIONA L

74

I

• No será posible encontrar la información relevante en un único diagrama.

Diversos puntos de vista serán necesarios.

• Debe existir un equilibrio entre la complejidad de la notación y la precisión

que se requiere al hacer el modelo.

• La notación no es un fin en si misma.

• Estas herramientas no garantizan un diseño correcto, pero ayudan al

diseñador a estructurar su conocimiento. El programador puede centrarse

en problemas de fondo, olvidándose de la forma.

• Para comprender un sistema orientado a objetos es necesario observar las

clases y objetos de acuerdo con los modelos:

1- Físico/lógico: La visión lógica describe la existencia y significado de las

abstracciones llave y de los mecanismos del espacio del problema, o

que definen la arquitectura del sistema. La visión física describe la

composición del software y hardware concreta de la implementación o

contexto del sistema. En esta descomposición se usan los diagramas

de clase, de objeto, de módulo y de proceso.

2. Estático/dinámico: los diagramas basados en los anteriores modelos

son estáticos, pero los objetos se crean y destruyen, envían mensajes y

dependen de triggers. En comportamiento dinámico se estudia los

diagramas de transición de estado y de interacción.

1.8.2.6 Conclusión

Como conclusión se puede recalcar que lo importante en la POO, como en la

programación tradicional, no es el lenguaje sino el planteamiento de la solución,

porque podría caerse en el error de pensar que el hecho de usar C++ significa

programar de manera orientada a objetos.

En el caso de la POO lo importante es enfocarse en los datos que serán

manipulados, en lugar de los procedimientos. El objetivo principal del diseño es la

descomposición del sistema en los datos subyacentes o mejor dicho en clases y

subclases y la definición de las propiedades de cada una.

Page 89: ESCUELA POLITÉCNICA NACIONA L

75

1.8.3 WINDOWS SOCKETS Y EL ENTORNO DE VISUAL C++

Al construir una aplicación con Visual C++, se pueden emplear las clases Winsock

de la MFC (Microsoft Foundation Class) para incluir capacidades de comunicación

de red con relativa facilidad. La clase base, CAsyncSocket, proporciona

comunicaciones completas por socket manejadas por eventos. Se puede crear

una clase de socket descendiente que captura y responde a estos eventos.

1.8.3.1 Creación de un socket

Para crear un socket para cierta aplicación, lo que hay que hacer primero es

declarar una variable de CasyncSocket (o su clase descendiente) como miembro

de clase para una de las clases de la aplicación principal:

c/ass CMyDlg : public Cdialog

prívate:

CasyncSocket m_sMySocket;

Antes de poder utilizar el objeto socket, se debe llamar al método Créate, de

hecho crea el socket y lo prepara para su uso. La manera de llamar al método

Créate depende de cómo se empleará el socket. Si se va a utilizar para

conectarse con otra aplicación, siendo cliente, entonces no se necesita pasarle

parámetros al método Créate:

if (m_sMySocket.Create() )

// Continúa

e/se

// Aquí se lleva a cabo el manejo de errores.

Page 90: ESCUELA POLITÉCNICA NACIONA L

76

Sin embargo, si el socket va a ser para escuchar si otra aplicación se quiere

conectar, siendo el servidor, entonces se necesita pasar cuando menos el número

de puerto por el que debe estar escuchando el socket:

if (m_sMySocket.Create( 4000) )

// Continúa

e/se

-51

// Aquí se lleva a cabo el manejo de errores.

Se puede incluir otros parámetros en la llamada del método Créate, como el tipo

de socket a crear, los eventos a los que debe responder el socket y la dirección

por la que dicho socket debe escuchar (en caso de que la computadora tenga

más de una tarjeta de red).

1.8.3.2 Establecimiento de una conexión

Una vez creado un socket, se está listo para abrir una conexión con él. Existen

tres pasos que intervienen en la captura de una conexión. Dos de ellos suceden

en el servidor, es decir, la aplicación que escucha esperando la conexión, y el

tercero ocurre en el cliente, quien hace la llamada.

Para el cliente, la apertura de la conexión es tan simple como llamar al método

Connect. El cliente tiene que pasarle los parámetros al método Connect: el

nombre de la computadora, o dirección de red, y el puerto de la aplicación al que

habrá que conectarse. El método Connect podría utilizarse de cualquiera de las

dos siguientes maneras:

Page 91: ESCUELA POLITÉCNICA NACIONA L

77

¡f (m_sMySocket.Create("epn.edu.ec", 4000))

// Continúa

else

// Aquí se lleva a cabo el manejo de errores.

La segunda forma es:

¡f (m_sMySocket.Create("1 92.1 68.60.57", 4000))

// Continúa

else

// Aquí se lleva a cabo el manejo de errores.

Una vez establecida la conexión, se activa un evento que le informa a la

aplicación que ya está conectado o que sucedieron problemas y no se pudo

establecer dicha conexión.

Para el lado del servidor, o escucha, de la conexión, la aplicación primero debe

decirle al socket que escuche si hay conexiones entrantes, llamando al método

Listen. Éste toma un solo argumento, el cual no es obligatorio indicar. Este

parámetro especifica la cantidad de conexiones pendientes que se puedan poner

en la cola, en espera de que se complete la conexión.

De manera predeterminada, este valor es de 5, es decir, el máximo. El método

Listen puede llamarse como sigue:

¡f (m_sMy Socket Listen ( ) )

// Continúa

e/se

// Aquí se lleva a cabo el manejo de errores.

Page 92: ESCUELA POLITÉCNICA NACIONA L

78

Cuando otra aplicación trata de conectarse con la aplicación que escucha, se

activa un evento que informa a esta última que hay una solicitud de conexión. La

aplicación que escucha debe aceptar la solicitud de conexión llamando al método

Accept. Éste requiere emplear una segunda variable CasyncSocket, que está

conectada con la otra aplicación. Una vez que un socket se pone en modo de

escucha crea otro socket, el cual se conecta con la otra aplicación. Este segundo

socket no debe llamar al método Créate, pues el método Accept crea el socket. El

método Accept se puede llamar como sigue:

if (m_sMySocket.Accept(m_sMySecondSocket))

// Continúa

e/se

Aquí se lleva a cabo el manejo de errores.

En este punto, la aplicación que se conecta ya está conectada con el segundo

socket de la aplicación escucha.

1.8.3.4 Envío y Recepción de Mensajes

El envío y recepción de mensajes a través de una conexión de socket se vuelve

un tanto rebuscado. Dado que se pueden utilizar los sockets para enviar cualquier

tipo de datos, sin que importe de qué se trata, las funciones que envían y reciben

datos esperan que se les pase un apuntador a un búfer genérico. Para el envío de

datos, este búfer debe contener los datos a enviar. Para la recepción de datos, en

este búfer se copiarán los datos recibidos.

Siempre y cuando se envíen y reciban cadenas y texto, es posible efectuar con

estos búfers conversiones bastante sencillas de y a Cstrings.

Page 93: ESCUELA POLITÉCNICA NACIONA L

79

para enviar un mensaje a través de una conexión de socket, se utiliza el método

Send. Éste requiere de dos parámetros y tiene un tercero, opcional, que sirve

para controlar la manera de envío del mensaje. El primer parámetro es un

apuntador al búfer que contiene los datos a enviar. Si el mensaje está en una

variable Cstring, puede emplearse el operador LPCTSTR para pasar la variable

como búfer. El segundo parámetro es la longitud del búfer. El método devuelve la

cantidad de datos que se enviaron a la otra aplicación. Si sucede un error, la

función Send devuelve SOCKET_ERROR. Puede emplearse el método Send

como sigue:

Cstring strMyMessage;

int iLen;

int ¡AmtSent;

iLen = strMyMessage. GetLenght( );

¡AmtSent = m_sMySocket.Send(LPCTSTR(strMyMessage), iLen);

if(iAmtSent == SOCKET^ERROR)

{

// Aquí se lleva a cabo el manejo de errores

e/se

// Todo está bien

Cuando hay datos listos para recibirse de la otra aplicación, se activa un evento

en la aplicación receptora. Esto le permite a la aplicación saber que puede recibir

y procesar el mensaje. Para recibir el mensaje, debe llamar al método Receive.

Éste toma los mismos parámetros que el método Send, con una pequeña

diferencia. El primer parámetro es un apuntador a un búffer donde se puede

copiar el mensaje. El segundo parámetro es el tamaño del búfer; le dice al socket

la cantidad de datos a copiar (en caso de que se reciba más de lo que cabe en el

Page 94: ESCUELA POLITÉCNICA NACIONA L

80

búfer). Como el método Send, el método Receive también devuelve

SOCKET_ERROR. Si el mensaje que su aplicación está recibiendo es de texto,

se puede copiar directamente a una variable Cstring.

Esto permite utilizar el método Receive como sigue:

char *pBuf = newcharf 1025];

int ¡Bufsize = 1024;

int iRcvd;

Cstring strRecvd;

iRcvd = m_sMySocket.Receíve(pBuf, ¡BufSize);

if( iRcvd == SOCKET_ERROR)

e/se

// Aquí se lleva a cabo el manejo de errores

pBuff iRcvd] = NULL;

strRecvd = pBuf

// Continúe procesando el mensaje.

Cuando se reciban mensajes de texto, siempre es una buena idea poner un NULL

en la posición del búfer justo después del último carácter recibido, como en el

ejemplo previo. Es posible que haya caracteres de basura en el búfer que la

aplicación podría interpretar como parte del mensaje si no se añade el NULL para

truncarla cadena.

Page 95: ESCUELA POLITÉCNICA NACIONA L

81

1.8.3.4 Cerrar la Conexión

Una vez que la aplicación ha terminado su comunicación con la otra aplicación,

puede cerrarse la conexión llamando al método Cióse. Éste no acepta

parámetros y se usa como sigue:

m_sMySocket.Close ();

La función Cióse es uno de los pocos métodos de CasyncSocket que no devuelve

ningún código de estado. En el caso de todas las funciones miembro que se ha

visto, se puede capturar el valor de devolución y determinar si ha sucedido un

error.

1.8.3.5 Detección de Errores

Cuando una función miembro de CasyncSocket devuelve un error, sea FALSE

para la mayoría de las funciones o SOCKET_ERROR para las funciones Send y

Receive, se puede llamar al método GetLastError para obtener el código del error.

Esta función únicamente devuelve códigos de error y se tiene que buscar su

equivalente traducción. Todos los códigos de error de Winsock se definen con

constantes, por lo que se puede valer de las constantes en su código para

determinar el mensaje de error, si es que lo hay, el cual será desplegado al

usuario.

La función GetLastError se utiliza de la siguiente forma:

int iErrCode;

iErrCode =

switch (iErrCode)

ícase WASNOTINITIALISED;

m_sMySocket. GetLastError( );

Page 96: ESCUELA POLITÉCNICA NACIONA L

82

CAPITULO 2

DISEÑO E IMPLEMENTACIÓN DE UN PROGRAMA PARA

MONITOREO DE DISPOSITIVOS CONFIGURADOS CON

TCP / IP

2.1 OBJETIVO DEL DISEÑO

El objetivo principal de la realización de este Proyecto de Titulación, será diseñar

e implementar un programa cuyo interfaz sea Microsoft Windows el cual permita

a un usuario monitorear el estado de cualquier dispositivo configurado con el

protocolo TCP/IP dentro de una Red de Área Local. Al saber el estado de un

dispositivo, el usuario tendrá la capacidad de identificar si cierto dispositivo se

encuentra encendido y conectado a la red o si éste está desconectado, además

podrá saber el tiempo en que el Host fuente recibe una respuesta del Host

destino, cabe recalcar que no se sabrá los motivos del por qué un dispositivo se

encuentra desconectado de la red. El usuario podrá monitorear un dispositivo

desde cualquier computadora que se encuentre conectado a la red y que tenga

una configuración básica de red es decir que tenga asignada una dirección IP.

Los dispositivos a monitorear pueden ser servidores, computadoras, ruteadores,

impresoras, switches inteligentes y todo aquel dispositivo que forme parte de una

red específica o que corresponda a una dirección de Internet.

El programa tendrá dos opciones de monitoreo: la primera monitorear a un sólo

dispositivo cada cierto tiempo el cual será definido por el usuario y que puede

estar dentro de una red de área local o si es que dicha red tiene salida a internet,

se podrá monitorear el estado del dispositivo remoto; la segunda opción es la de

monitorear a un conjunto de dispositivos peretenecientes a una red de área local,

esto implica que los dispositivos deben formar parte de una red clase C.

Page 97: ESCUELA POLITÉCNICA NACIONA L

83

El programa deberá correr sin ningún problema bajo un ambiente de Microsoft

Windows multitarea y la interfaz por medio de la cual el usuario ingrese los

datos del dispositivo a monitorear será totalmente gráfica, tipo ventanas de

diálogo y de fácil manejo. Al usuario le bastará con ingresar la dirección IP o el

Hostname correspondiente del dispositivo a monitorear para que pueda obtener

una respuesta.

Por otro lado como objetivo será el de demostrar al usuario que la API de

Windows Sockets y la funcionalidad de Microsof Foundation Class (MFC) de

Windows es una herramienta muy poderosa para realizar tareas de conectividad

es decir dar a conocer cómo se utilizan aplicaciones del Interfaz de Winsock para

llevar a cabo comunicaciones de red entre dos o más computadoras o

dispositivos pertenecientes a una red. Demostrar básicamente el funcionamiento

de las comunicaciones de red con el protocolo de red TCP/IP que se ha

convertido en uno de los principales protocolos de red en Internet.

2.2 REQUERIMIENTOS DE SOFTWARE PARA EL DISEÑO

A medida que Microsoft ha introducido nuevas tecnologías dentro de las

plataformas de Windows, también ha incluido herramientas adecuadas para

programar, tal es el caso de los recursos que presta la Programación Orientada

a Objetos con Microsoft Visual C++6.0, bajo un ambiente Microsoft Windows.

Una de las aplicaciones que ofrece Microsoft Windows es la de Winsock y su

funcionalidad para conectividad y redes.

Se usará como plataforma para el desarrollo del programa el ambiente Microsoft

Windows y como utilitario para programación, Microsoft Visual C++ 6.0 por

poseer un compilador de clase mundial y que dentro de sus clases y librerías

incluye a Windows Sockets que nos permitirá diseñar un programa versátil de

fácil manejo para el usuario y en un ambiente de Windows con el cual estamos

completamente familiarizados.

Page 98: ESCUELA POLITÉCNICA NACIONA L

84

2.3 REQUERIMIENTOS DE HARDWARE PARA EL DISEÑO

Para comenzar con la programación necesitamos de una computadora con las

siguientes características:

• CARACTERÍSTICAS MÍNIMAS:

o Procesador Pentium.

o Memoria RAM de 64 MB.

o Disco duro de 1 GB.

o CDROM.

o Monitor VGA.

o Tarjeta de Video con resolución de más de 256 colores, 800 x 600

pixels.

o Tarjeta de Red 10Mbps.

o Tarjeta de fax/modem (opcional).

• CARACTERÍSTICAS ÓPTIMAS

o Procesador Pentium II, Pentium III ó Pentium IV.

o Memoria RAM, más de 64 MB.

o Disco duro de más de 2 GB.

o Multimedia y CDROM.

o Monitor SVGA.

o Tarjeta de video 32 bit color, 1024 x 768 pixels.

o Tarjeta de Red 10/100 Mbps autosensitive.

o Tarjeta de Fax/Modem (opcional).

Con las características mínimas se puede diseñare! programa aunque Visual C++

6.0, en sus procesos de compilación y depuración se volverá más lento. Para la

parte de pruebas y visualización con un monitor VGA podrá apreciarse los

resultados del programa aunque no estéticamente.

Page 99: ESCUELA POLITÉCNICA NACIONA L

85

La tarjeta de red es fundamental para poder probar la aplicación, en su ausencia

se podrá probar si se tiene instalado una tarjeta de fax/módem aunque no es lo

más recomendable, lo mejor será probar los resultados dentro de una Red de

Área Local y que tenga salida a Internet.

2.4 DISEÑO DEL PROGRAMA

2.4.1 CONTENIDO BÁSICO DEL DISEÑO.

El programa deberá contener datos de entrada que generalmente lo ingresa el

usuario y datos de salida que representan los resultados del monitoreo, además

de opciones para imprimir datos de salida y para poder inicializar y salir del

programa. Contará además con un acceso a ayuda donde se explicará ciertos

conceptos técnicos y de manejo del programa

2.4.1.1 Datos de entrada:

o Selección de Monitoreo a uno o a varios dispositivos

o Ingreso de Dirección IP para monítorear un dispositivo

o Ingreso de Dirección IP final para el caso de monitoreo de varios

dispositivos

o Ingreso de secuencia de monitoreo

o Ingreso de tiempo de monitoreo

o Ejecución del programa

El usuario necesitará escoger entre dos opciones: monitorear a un solo

dispositivo o monitorear a un conjunto de dispositivos dentro de una red de Área

Local.

Para el caso de un solo dispositivo deberá escoger la primera opción, aquí el

usuario podrá ingresar la dirección IP, el nombre de hosto la dirección de Internet

Page 100: ESCUELA POLITÉCNICA NACIONA L

86

de la cual solicita una respuesta de eco. Para el caso de que se necesite

monitorear a ciertos dispositivos de una red de Área Local tendrá que ingresar

tanto la dirección de inicio como la dirección final del grupo de dispositivos.

El usuario ingresará una Secuencia de Monitoreo, esto es el intervalo de tiempo

en que desea obtener datos del monitoreo.

Ingresará el tiempo de monitoreo es decir cada cuanto tiempo desea obtener un

resultado dentro de la secuencia predeterminada.

Por último tendrá que ejecutar una acción para que pueda visualizar los datos

enviados y resultados del monitoreo

2.4.1.2 Datos de Salida

o Visualízación de datos enviados

o Visualízación de resultados de Monitoreo

El usuario podrá visualizar tanto los datos enviados como los resultados del

monitoreo en una ventana que esté dentro de la ventana principal de programa.

El despliegue de información enviada contendrá la dirección a la cual está

realizando un monitoreo y el despliegue de información de resultados contendrá

la dirección a la que realizó el monitoreo, el tiempo que se demoró el host local

en obtener una respuesta del host remoto y la hora en que se obtuvo dicha

respuesta,

2.4.1.3 Opciones

o Ejecutar una acción para inicialización del programa y enceramiento de la

ventana principal

o Ejecutar una acción para imprimir los resultados del monitoreo

Page 101: ESCUELA POLITÉCNICA NACIONA L

87

o Ejecutar una acción para obtener ayuda respecto a información técnica y

uso del programa

o Ejecutar una acción para terminar y salir del programa

El usuario al ejecutar la acción inicializar el programa, podrá volver a ingresar

nuevos datos o direcciones a monitorear, además las ventanas de resultados se

pondrán en blanco con el objeto de presentar en un próximo monitoreo nuevos

valores.

La opción imprimir permitirá al usuario tener el reporte del último monitoreo que

realizó impreso en una hoja,

Podrá al ejecutar la opción de Ayuda, obtener una ventana donde se muestre

información respecto a la teoría de redes, a la teoría de Sockets, enfoques

técnicos sobre monitoreo de redes y sobre todo un manual de usuario para la

utilización del programa.

La opción salir, previa confirmación al usuario terminará con el programa y cerrará

la ventana principal de la aplicación.

Contará además con un menú que le permita escoger al usuario las opciones

antes mencionadas. Se trabajará con un menú contextual, esto permitirá al

usuario en el caso de que la computadora no disponga de un mouse, trabajar sólo

con el teclado y si el teclado por alguna razón dejara de operar podrá trabajar con

el mouse.

Además existe una opción que muestra la hora en la que se acceso a la

aplicación, este parámetro de tiempo es una referencia para saber cuanto tiempo

se toma el programa en monitorear a un dispositivo o a un grupo de ellos.

Page 102: ESCUELA POLITÉCNICA NACIONA L

2.4.1.4 Diagrama Básico de la Ventana de Diálogo Principal

Selección

Monitoreo a un solodispositivo

Monitoreo a variosdispositivos

« . , A ,Opción Ayuda

Ingreso dirección IP a monitorear Ingreso dirección Ip final cuandomonitoreo varios dispositivos

Ingreso secuencia de monitoreo Ingreso tiempo de monitoreo

EJECUTO MONITOREO

Visualizo datos de host a monitorear Ooción Inicializar Pantalla

Ooción Imorimir Resultados

Visualizo Resultados del monitoreo

EJECUTO SALIDA DELPROGRAMA

Fig. 2.1 Diagrama Básico del Contenido de la Ventana Principal

2.4.2 CREACIÓN DE OBJETOS Y ASIGNACIÓN DE NOMBRES Y

FUNCIONES

Para cada uno de los objetos del diagrama básico del contenido de la ventana

principal del programa se asignará un nombre identificativo y la función que va a

realizar en el contexto del programa

Page 103: ESCUELA POLITÉCNICA NACIONA L

89

2.4.2.1 Objeto Seleccionar

Nombre del Objeto: SELECCIONE

Función: Permitirá escoger una de las opciones para monitoreo, esto es a un

solo dispositivo o a varios dispositivos dentro de una Red de Área Local. Se

podrá escoger también la opción de monitorear una sola vez o en forma

secuencial

2,4.2.2 Objeto Primera Opción de Monitoreo

Nombre del Objeto: PING

Función: Al escoger esta opción el usuario podrá monitorear a un solo dispositivo

dentro de una Red de Área Local o si el Host tiene salida a Internet podrá

monitorear un Host asociado a una dirección de Internet específica.

2.4.2.3 Objeto Segunda Opción de monitoreo

Nombre del Objeto: MONITOREO A UNA RED LOCAL

Función: Al escoger esta opción el usuario podrá monitorear a varios

dispositivos dentro de una Red de Área Local de la que será miembro el Host de

monitoreo.

2.4.2.4 Objeto Ingreso de Dirección IP

Nombre del Objeto: (Apuntará como dato inicial a LOCALHOST)

Función: Al escoger esta opción el usuario podrá escribir la dirección IP a

monitorear, o el nombre de Host o la dirección Internet siempre y cuando se haya

seleccionado la opción PING. Si se seleccionó la Opción MONITOREO A UNA

RED LOCAL tendrá que escribir la dirección IP de Inicio del conjunto de

dispositivos a monitorear.

Page 104: ESCUELA POLITÉCNICA NACIONA L

90

2.4.2.5 Objeto Ingreso de Dirección IP Final

Nombre del Objeto: (estará en blanco, esperando a ser escrito)

Función: Al escoger esta opción el usuario podrá escribir la dirección IP final del

conjunto de dispositivos a monítorear, esta opción deberá estar activa siempre y

cuando se haya seleccionado la opción MONÍTOREAR A UNA RED LOCAL,

caso contrario si la opción que eligió el usuario es PING, permanecerá

desactivada.

2.4.2.6 Objeto Ingreso de Secuencia de Monitoreo

Nombre del Objeto: (Como dato inicial presentará el número 1)

Función: Al escoger esta opción el usuario podrá escoger el intervalo inicial del

tiempo en que se va a realizar un Monitoreo, este podrá estar en el orden dede

las 1 y 24 horas, no aceptará otros valores ni cadena de caracteres.

2.4.2.7 Objeto Ingreso de Tiempo de Monitoreo

Nombre del Objeto: (Como dato inicial presentará el número 1)

Función: Al escoger esta opción el usuario podrá escoger el tiempo en que

quiere que se haga un monitoreo a cierta dirección, este está en un intervalo de 1

a 60 minutos y no acepta otro valor ni cadena de caracteres.

-í í 2.4.2.8 Objeto Ejecución de Monitoreo

Nombre del Objeto: HACER PING / MONÍTOREAR

Función: Al escoger esta opción el usuario ejecuta el monitoreo de cierta

dirección previamente ingresada, si la selección inicial fue PING, el objeto

aparecerá como: HACER PING, si la opción escogida fue MONÍTOREAR A UNA

RED LOCAL el objeto aparecerá como MONÍTOREAR.

Page 105: ESCUELA POLITÉCNICA NACIONA L

91

2.4.2.9 Objeto Visualización de Dirección IP a Monitorear

Nombre del Objeto: (La ventana inicial aparece en Blanco)

Función: Este objeto se llenará indicando la dirección IP a ser monitoreada

2.4.2.10 Objeto Visualización de Resultados de Monitoreo

Nombre del Objeto: (La ventana inicial aparece en Blanco)

Función: Este objeto se llenará indicando los resultados del Monitoreo, entre los

datos desplegados estará, la dirección IP monitoreada, el tiempo de viaje

redondo desde que se envió una solicitud de eco hasta que se recibió la

respuesta, la hora actual referida a la computadora en la que se recibieron los

datos y la indicación de que el Host monitoreado está activo o conectado a la red,

para cuando no se pudo recibir información del Host a monitorear se llenará con

un mensaje de error en la recepción de los datos.

2.4.2.11 Objeto Opción Ayuda

Nombre del Objeto: AYUDA

Función: Al ejecutar este objeto el usuario se abrirá una ventana con la ayuda de

Windows cuya información corresponderá a datos técnicos sobre redes, sobre

sockets y acerca del manejo del programa..

2.4.2.12 Objeto Opción Inicializar pantalla

Nombre del Objeto: 1NICIALIZAR PANTALLA

Page 106: ESCUELA POLITÉCNICA NACIONA L

92

Función: Al ejecutar este objeto al usuario se le presentará una caja de diálogo

en la que le preguntará si realmente desea inicializar la pantalla, si escoge la

opción no, la pantalla no sufrirá ninguna modificación caso contrario se

encerarán todos los datos de la pantalla hasta ahora presentes, borrará el

contenido de las ventanas de presentación de datos y resultados y se cargarán

(os datos por default como haber recién iniciado el programa.

2.4.2.13 Objeto Opción Imprimir

Nombre del Objeto: IMPRIMIR

Función: Al ejecutar este objeto el usuario abrirá un cuadro de diálogo de

impresión donde podrá escoger la impresora para imprimir los resultados del

monitoreo.

2.4.2.14 Objeto Opción Salir

Nombre del Objeto: SALIR

Función: Al ejecutar este objeto al usuario se le desplegará una caja de diálogo

donde se le preguntará si realmente quiere salir y terminar el programa, si elige

que no, podrá seguir usando el programa, caso contrario éste se cerrará.

2.4.3 PRESENTACIÓN BÁSICA DE INTERFAZ PROGRAMA - USUARIO

El siguiente gráfico muestra el diseño de la ventana principal que el usuario

observará al ejecutar el programa, los nombres mostrados son los que

corresponderán al interfaz programa - usuario a ser implementado.

Page 107: ESCUELA POLITÉCNICA NACIONA L

93

SELECCIÓN

PING TTKMPORKAT.

MONTTOREO A UNARED LOCAL TINA SOLA VF.7

AYUDA

DIRECCIÓN IP INICIAL DIRECCIÓN IP FINAL

Haciendo PING durante: ( ) Minutos. Cada ( ) Segundos

HACER PING / MONITOREAR

VISUALIZO IP A MONITOREAR

INICIALIZAR PANTALLA

IMPRIMIR

VISUALIZO RESULTADOS DEL MONITOREO

SAT.TR

Fig. 2.2 Presentación Básica de Interfaz Programa - Usuario

2.5 IMPLEMENTACIÓN DEL PROGRAMA

2.5.1 CREACIÓN DEL PROYECTO CON EL APPWIZARD DE MFC.

Se iniciará la implementación del programa dándole un nombre al proyecto, el

proyecto se denominará: MONITORJCMP.

Page 108: ESCUELA POLITÉCNICA NACIONA L

94

Se usará todas las bondades que ofrece la programación de alto nivel orientada

a objetos con Microsoft Visual C++ versión 6.0.

El programa tendrá las siguientes características:

• El proyecto se creará a través del AppWízard de MFC (Microsoft

Foundation Class).

Fie* Pinjada Woktpace» | Other Documente |

KlO)ftCt D*m>:

3Qj*t« Reiource Typs Wizaid

0 Cietom AppWtzwd

ÍP Databass Projert

D svStudio Addnn Woard

lSAPI Entena»! Wizad

MakefletfC ActiveX ConliofJizafd

IMOÑÍTORJCMP

Logation;

|C:\vi«ud cWONITORJCMP

f* C¿eate r»w wotkípace

f Add to o.iirent wotkipace

I~ ÜF.«ndcí,r;v&f.ti U*y Pcojed

7]V.'n32 Appicatíon

V.%i32 Contóle Appfcation

Sv1n32 Dynamic-ünk Ltotaiji

W¡n32 SlatícLfctay

OK I C^cel

Fig. 23 Opción MFC AppWizard(exe) en Visual C++

La plataforma sobre la cual se construirá el proyecto será Win32.

La Aplicación será tipo Diálogo.*1FC AppWií.ird - Step 1

Whal typa oí appfcatréfi «wuU you fte to ctaate?

f" Single document

(~ Muttipla documentt

( DíalogbMed

What languaga woJd you Ske your retoucet íi?

<Back [ Neart> J Cancel

Fig. 2.4 Configurando un Proyecto con MFC AppWizard(exe) en Visual C++. Paso 1

Page 109: ESCUELA POLITÉCNICA NACIONA L

• Usará un contexto de ayuda y soportará Windows Sockets.

MFC AppWizard - Step 2 of 4

Editiig C«ti*l: j R«c*i4 ' I_ : —• [y

O B»*» B«ttM 1

— «J pu,.

What featuret woukJ you Kke to include?

F Aboutbox

17 Context-sensitive Help

I* 30 controls

What othet support woddyou fike to include?

V Automation

P? ActiveX Controls

WoUdyou ükfl to include WOSA support?

Windows Sockets

Please entet a btíe f or your olabg;

MONITOHJCMP

I Nent> |<Back I Next> Finish Cancel

95

Fig. 2.5 Confígurando un Proyecto con MFC AppWizard(exe) en Visual C++. Paso 2

El proyecto usará una MFC estándar y se compartirá sus librerías.

?? r

MFC AppWizard - Step 3 of 4

*. Microsoft Devetooei Sludio

nrurnojJOZ

What style oí pioject woutd you like ?

í? MFC Standard

í"1 Windows Exploref

Wouldyou Ske to genetate íource file commentí?

(* Ye», olease

í No, thonki»ou

How wouldyou ike to use the MFC foraiy?

& AiashatedDLL

f" As a darjcalli» friked Ibrary

<Back | Next> | Finish Cancel

Fig. 2.6 Confígurando un Proyecto con MFC AppWizard(exe) en Visual C++. Paso 3

Page 110: ESCUELA POLITÉCNICA NACIONA L

96

El código fuente principal se lo escribirá sobre el archivo

MONITORJCMP.cpp y las variables y estructuras necesarias se crearán

sobre MONITOR ICMP.h

MFC AppWizard - Step 4 of 4

AppWizard créales tho foKowing dasses for you

CMONITOR ICMPAcCMGNITORJCMPDIg

Class ñame: Header file:

JCMONITORJCMPA JMONITORJCMP.h

Base dan: Imptementation file:

j C V / t ó p p J M O N I T O R J C M P . c p

<Back Rnísh Cancel

Fig, 2.7 Confígurando un Proyecto con MFC AppWizard(exe) en Visual C-f-K Paso 4

•*r '.<;-,<

En resumen el programa se implementará bajo la siguiente estructura:

New Project Information

AppWizard will cieate a new skeleton ptoject with the following specifications;

Application type of MONITORJCMP:Dialog-Based Application targeting:

Win32

Classes to be created:Application: CMONITORJCMPApp in MONITORJCMP.h and

MONITORJCMP.cppDialog: CMONITORJCMPDIg in MONITOR_ICMPDIg.h and

M ONIT O R_l CM PD Ig. cpp

Features:+ About box on system menú+ Context-Sensitive Help and initial RTF files•t- 3D Controls•«•Windows Sockets Support•*- Uses shated DLL implementation (MFC42.DLLJ+ ActiveX Controls support enabled+ Localizable text in:

Spanish [International Sort]

Project Dírectoiy:CAvisual c\PROYECTO\MONJTORJCMP

OK J Cancel |

Fig. 2.8 Confígurando un Proyecto con MFC AppWizard(exe) en Visual C-H-. Resumen

Page 111: ESCUELA POLITÉCNICA NACIONA L

97

2.5.2 IMPLEMENTACIÓN DE LA VENTANA PRINCIPAL

A continuación se muestra la Configuración de las propiedades de los Controles

del Diálogo principal de la aplicación

VENTANA PRINCIPAL:

o Propiedad

o Valor

o Caption:

o Tipo:

o Clase Base:

o Identidad del Recurso:

o Nombre de la Clase:

IDD

IDDJMONITOR_ICMP_DIALOG

MONITORJCMP

Ventana de Diálogo principal

CDialog

IDD_MONITOR_ICMP_DIALOG

CMONITORJCMPDIg

FUNCIÓN: SELECCIONAR OPCIONES DE MONITOREO

-SELECCIONEr PIWGr MONITOREO A UNA RED LOCAL

o Propiedad

o Valor

o Caption:

o Objeto:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_SELECCIONE

&SELECCIONE

Group Box

CMONITORJCMPDIg

Page 112: ESCUELA POLITÉCNICA NACIONA L

98

Group BOH Propertíes

¡^General | Styles | Extended Styles |

ID: IDC_SELECCIONEW Visible r Group

V Disabled f~ Tafcslop

&SELECCIONEHelp ID

FUNCIÓN: SELECCIONAR LA OPCIÓN PING:

m r

o Propiedad

o Valor:

o Caption:

o Objeto:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_RSEND

&PING

Radío Button

mJSend

int

OnRsend()

CMONITORJCMPDIg

Radio Button Propertíes X]

General I Styles | Extendédseles |

ID: |IDC_RSEND TJ £aption: jtcPING

W Visible 17 firoup Í7 |eÍp]DÍ

f" Dísabled f" Ta^stop

Page 113: ESCUELA POLITÉCNICA NACIONA L

99

FUNCIÓN: SELECCIONAR LA OPCIÓN DE MONITOREO A UNA RED

LOCAL

MONITOREO A UNA RED LOCAL

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

!DC_RECEIVE

MONITOREO A UNA &RED LOCAL

Radio Button

OnRece¡ve( )

CMONITORJCMPDIg

Radio Button Properties

-W f General | Styles | Extended Styies |

ID: IDC_RECEIVE

17 Visible r fiíoup

r~ Dísabled f" Tafc stop

ion: MONITOREO AUNA&R

FUNCIÓN: TIEMPOS DE MONITOREO

-TIEMPOS-

TIEMPO REAL

UNA SOLA VEZ

Page 114: ESCUELA POLITÉCNICA NACIONA L

100

o Propiedad

o Valor

o Caption:

o Objeto:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_TIEMPO

&TIEMPOS

Group Box

CMONITORJCMPDIg

Group Bou Propertíes

General I Styles | Extendédseles |

ID: 3 £aption: J&TIEMPOS

Viable P Group T

Disábled P Tabstop

FUNCIÓN: SELECCIONAR LA OPCIÓN TIEMPO REAL:

TIEMPO REAL

o Propiedad

o Valor:

o Caption:

o Objeto:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDCJTREAL

T&IEMPO REAL

Radio Button

m_treal

int

OnTreal()

CMONITORJCMPDIg

Page 115: ESCUELA POLITÉCNICA NACIONA L

101

Radío Button Properties

General | Styles | Extendédseles |

ID: lDC_TREAL £aP|ion: [iiaiaBiaiiaaa

17 Visible R firoup I

P Disabled P Tatjstop

FUNCIÓN: SELECCIONAR LA OPCIÓN UNA SOLA VEZ:

UNA SOLA VEZ

o Propiedad

o Valor:

o Caption:

o Objeto:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDCJJNAVEZ

UNA SOLA &VEZ

Radio Button

OnUnavezQ

CMONITORJCMPDIg

Radio Button Properties

General Styles Extendédseles

ID: |IDC_UNAVEZ jj £aption:

R7 Visible f~ firoup ÍT

I~ Disabled V Tafestop

3

FUNCIÓN: INGRESARLA DIRECCIÓN IP A MONITOREAR

Haciendo PING a IP:

Page 116: ESCUELA POLITÉCNICA NACIONA L

102

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_EHOSTNAME

Edit Box (Caja de Edición)

m_strHName

CString

CMONITORJCMPDIg

Edit Properties £]

-W f General | Styles | Extended Styles |

3PEE!

ID: pDC_EHÜSTNAME

P" Visible I"" Group

!"" Diíábled 17 Ta^stop

FUNCIÓN: INGRESAR LA DIRECCIÓN IP FINAL A MONITOREAR

Hasta IP: Edit

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_EHOSTFIN

Edit Box (Caja de Edición)

m_strHNameFin

CString

CMONITORJCMPDIg

Page 117: ESCUELA POLITÉCNICA NACIONA L

103

Edit Properties

f General | Styles | Extendédseles |

ID: |IDC_EHOSTFIN

W Visible r firoup F7

Disabled stop

FUNCIÓN: INGRESARLA HORA INICIAL DE MONITOREO

Monitorear desde las: j horas,

Hacer PING durante: U minutos

o Propiedad

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_hora1

Combot Box

m_int_hora1

int

CMONITORJCMPDIg

Combo Bou Properties

General Data ¡ Styles | Extendédseles |

ID: !DC_hora1 j

W Visible P firoup f?

l~ Disabled $s Tabstop

Page 118: ESCUELA POLITÉCNICA NACIONA L

104

FUNCIÓN: INGRESARLA HORA FINAL DE MONITOREO

Hasta las: horas,

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_hora2

Combo Box

m_int_hora2

int

CMONITORJCMPDIg

Combo BOK Propertíes

General Data | Styles | Extendédseles |

ID: DC_hora2 jr

I* Visible r Group |7C

l~ Disabled P7 Tabstop

FUNCIÓN: INGRESAR EL INTERVALO DE MONITOREO

cada:

Cada...

Minutos

Segundo

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

ID

IDC_minutos

Combo Box

m ¡minutos

Page 119: ESCUELA POLITÉCNICA NACIONA L

•$:$&

105

o Tipo de Variable: int

o Método:

o Pertenece a la Clase: CMONITORJCMPDIg

Combo Box Properties

General I Data | Styfet | Extendédseles |

ID: |lDC_mrnutos j

17 Visible r firoup 17 ÜPÍDJ

r Disabled 17 Tabstop

FUNCIÓN: EJECUTAR ACCIÓN DE MONITOREO

HACER PINQ

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_BSEND

HACER PIN&G

Button

m_ctlSend

CButton

OnBsend( )

CMONITORJCMPDIg

Page 120: ESCUELA POLITÉCNICA NACIONA L

106

WlLJiiiilllWilüBBBngi

-W f General | Styles | Extended Styles |

ID: | I D C _ B S E N D ^ Cap*"0* IHACERPINÍ-G17 Viable f" Group F~

I™ Disabled 17 Tabstop

FUNCIÓN: EJECUTAR INICIALIZACION DE LA PANTALLA:

Inicializar Programa

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_BLimpiar

&lnicializar Programa

Button

OnBLimpiar( )

CMONITORJCMPDIg

Push Button Properties

General Styles Extended Styles

ID: jlDC_BL¡mp¡ar •y] £aption: ¡íclnícializar Programa

R Visible W üroup

r~ Dis^bled 17 Ta¿stop

Page 121: ESCUELA POLITÉCNICA NACIONA L

107

FUNCIÓN: EJECUTAR SALIDA DEL PROGRAMA:

SALIR

• , -\¿: --t, í-

*3 i

o Propiedad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_BEND

&SALIR

Button

OnBend()

CMONITORJCMPDIg

Push Button Properties EfflSfKTSTT' flfi¡*&¿trÁl:.¿-..-[2l

-W f General I Styles | Extended Styles |

ID: |IDC_BEND

F7 Vgible |~ üroup

f" Disabied p" Ta¿$lop

¿J Caption: [&SALIR

FUNCIÓN: EJECUTAR IMPRESIÓN DE RESULTADOS

IMPRIMIR

o Propiedad

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

ID

IDC_PRINT

I&MPRIM1R

Button

Page 122: ESCUELA POLITÉCNICA NACIONA L

108

o Método: OnPrint( )

o Pertenece a la Clase: CMONITORJCMPDlg

Push Button Properties

-W f General I Slyles | Extendédselas |

ID: |IDC_PRINT ^J Caption: [l&MPRIMIR

17 Visible r firoup 17 ígJípS

!~ Dis^bled R Tabstop

FUNCIÓN: EJECUTAR VISUALIZAR DATOS DE ENVlO

Monitor eando a: Destino:

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDCJJSTSEND

List Box

m_ctlListSend

CListBox

CMONITORJCMPDIg

Page 123: ESCUELA POLITÉCNICA NACIONA L

109

List Box Properties

f General j Stytes | Extendédseles |

|D: |IDC_LISTSEND

F7 Visible 17 Group

f" Disabled W Tab stop

FUNCIÓN: VISUALIZAR RESULTADOS DEL MONITOREO

RESULTADOS DEL MONITOREO

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDCJJSTRCV

List Box

m_ctlListRcv

CListBox

CMONITORJCMPDIg

List BOK Properties

General i Styles | Extendédseles |

ID: |IDC_LISTRCV

|7 Visible f~ fifoup

|~" Disabled R Tab stop

Page 124: ESCUELA POLITÉCNICA NACIONA L

FUNCIÓN: EJECUTAR AYUDA

110

Ayuda

o Identidad:

o Valor:o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDJHELP

&Help

Button

CMONITORJCMPDIg

Push Buffon Praperti'e;

General I Styles j Extended Styíes |

£aption: I ¡Ayuda-il J

R Visible r firoup |7 ¿Jeip ID

F Dísabled W Ta£ stop

FUNCIÓN: MOSTRAR TfTULO

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

ID

IDC_STATIC

IDB_TITULO

Bitmap

Page 125: ESCUELA POLITÉCNICA NACIONA L

111

o Pertenece a la Clase: CMONITORJCMPDIg

Picture Properties

f General Styles | Extended Styles |

ID: JIDC.STATIC jj Tupe: JBitmap

R Visible r~ üroup

P Disjibled P" Tabstop

[unaanuim

Color:

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

Haciendo PIÜG a IP:

Monitoreo

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATICHOSTNAME

&Haciendo PING a IP:

Estatic Text

m_static_hostname

CStatic

CMONITORJCMPDIg

1? Geneial Styles | Extended Styles |

ID: |lDC_STATICHOSTNAME ^J £aptrán:

|7 Visible P Group T

\~ Tafcstop

¿Haciendo PING a IP

Page 126: ESCUELA POLITÉCNICA NACIONA L

112

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

**********

Hasta IP:

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATICJPFINAL***********

Estatic Text

m_static_ipfinal

CStatic

CMONITORJCMPDIg

TextProperties

General Styles Extendédseles

W Visible R Group T

p Disábled JT" Tabstop

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

Hacer PIKG durante:

Monitorear desde las:

o Identidad:

o Valor:

o Caption:

o Tipo:

ID

IDC_STATIC

Hacer PING durante:

Estatic Text

Page 127: ESCUELA POLITÉCNICA NACIONA L

113

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

m_static_hinic¡o

CStatic

CMONITORJCMPDIg

Text Properties iiiSt*),"W ? General | Styles j Extendédseles |

ID: PC STATIC HINICIO

Visible

Disabted

H Captíon: |Hacer PING durante;

firoup R

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

Minutos.

fá Éá--.i';>*:'s

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase;

Text Properties

ID

IDC_STATIC_HFIN

Minutos

Estatic Text

m_static_hfin

CStatic

CMONITORJCMPDIg

General | Styles | Extendédseles

ID:

R Visible

f~ Disjbled

1 fiíoup

f~ Tafestop

£aption: Minutos.

P" Help ID

Page 128: ESCUELA POLITÉCNICA NACIONA L

114

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

Cada...

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

Text Properties

ID

IDC_STATÍC_INTERVALO

Cada...

Estatic Text

m_static_intervalo

CStatic

CMONITORJCMPDIg

u]

f General j Styles | Extendédseles |

ID: ||DC_STATIC_1NTERVAL ^J £aption:

F? Vfflbto 17 group P ÜelpID

P Disabled P Tafastop

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

Segundos

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

ID

IDC_STATIC_M1NUTOS

Segundos

Estatic Text

m_static_minutos

CStatic

Page 129: ESCUELA POLITÉCNICA NACIONA L

115

o Pertenece a la Clase: CMONITORJCMPDIg

Text Properties

General I Styles | Extendédseles |

ID: |IDC_STATIC_MINUTQS jj £aption:

P" Visible |7 firoup f" Help ID

f" Dis^bled I~ Taijstop

FUNCIÓN: IDENTIFICAR A UNA CAJA DE TEXTO ESTÁTICO

Comienzo:

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATIC

Comienzo:

Estatic Text

CMONITORJCMPDIg

TeKt Properties ViilGeneral Styles | Extended Styles |

ID: |IDC_STATIC

17 Visible |7 QIQUP

J Caption:

r~ Help ID

Disjbled \~ Tafeslop

Page 130: ESCUELA POLITÉCNICA NACIONA L

FUNCIÓN: MOSTRAR LA FECHA ACTUAL

116

I Lunes ,25 de Febrero de2GC2-¿J

ID

IDC DATETIMEPICKER1

Date Time Picker

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase: CMONITORJCMPDIg

Date Time Picker Properties^_- k L k

-W Y General I Styles | Extendédseles |

ID: DC DATETIMEPCKER1

|7 Visible r firoup P help ID

F? Disabled P Tabstop

FUNCIÓN: MOSTRAR LA HORA ACTUAL

57:24:36 PM

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

ID

IDC DATETIMEPICKER2

Date Time Picker

1

Page 131: ESCUELA POLITÉCNICA NACIONA L

117

o Pertenece a la Clase: CMONITORJCMPDIg

Date Time Picker Properties

f Geneial I Styles | Extendédseles

Visible r Group T Help ID

Disabled l~~ Tabstop

FUNCIÓN: IDENTIFICAR TEXTO DE DATOS A ENVIAR:

Monitoreandoa:

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATICSECENV

Monitoreando a:

Estatic Text

CMONITORJCMPDIg

Tent Properties

General | Styles | Extended Styles |

1DC STATICSECENVID:

W Visible

P Disábled

Caption: |Monitoreando a:

Group F Melp ID

Tabstop

Page 132: ESCUELA POLITÉCNICA NACIONA L

118

FUNCIÓN: IDENTIFICAR TEXTO DE DATOS ENVIADOS

o Identidad:

o Valor:

o Caption:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

Destino:

ID

IDC_STATICSECENV2

Destino:

Estatic Text

CMONITORJCMPDIg

Date Time Picker Properties ^ OIElilOlSliFI

QBUB B HIHi^•Tt llinr nATPTiMppirk'p MvIki ^^^^^^^^^^^^^^^^^^^^^^^^^^HI

17 Visible

\y Disabled

\~ Group r~ Help ID

l~ Tabstop

FUNCIÓN: MOSTRAR (CONO

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

ID

IDC_STATIC

IDIJRED2

Icón

Page 133: ESCUELA POLITÉCNICA NACIONA L

119

o Pertenece a la Clase: CMONITORJCMPDIg

Picture Properties

General Styles | Extendédseles

10: |IDC_STATIC jj Tupe: [icón

F7 Visible I~ firoup

r~ Disabled f Tabstofi

r Help ID

Image:

Color:

FUNCIÓN: MOSTRAR (CONO

:-:\

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATIC

IDIJFACE

Icón

CMONITORJCMPDIg

Picture Properties -uial-W f General 1 Styles | Extendédseles |

]D: |IDC_STATIC jj Tupe: flcoñ

F/ Viable r £roup

P" Disabled f" Tabslop

r Help ID

Image:

Color:

Page 134: ESCUELA POLITÉCNICA NACIONA L

FUNCIÓN: MOSTRAR ICONO

120

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATIC

IDIJRELOJ

Icón

CMONITORJCMPDIg

Piclure Properlies xl

-W 1P General | Styles | Extended Styles

ID: |IDC_STATIC

F? Visible f Group

f~ Disabled I~ Tabstofi

r Help ID

Icón

Image: |[1¡1W¡1MÍ!ÍJ

Color: I

FUNCIÓN: MOSTRAR ICONO

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

ID

IDC_STATIC

IDIJREDM

Icón

Page 135: ESCUELA POLITÉCNICA NACIONA L

121

o Pertenece a la Clase: CMONITORJCMPDIg

Picture Properties

-W ? General | Stytes \d Styles

ID: |IDC_STATIC J Tupe: (Icón

P Visible r~ firoup

P Disabled f~ Tabstpp.

r Help ID

FUNCIÓN: MOSTRAR (CONO

d

•' rt

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATIC

IDIJEXIT

Icón

CMONITORJCMPDIg

Picture Properties

General I Styles I Extended Styles I

JD: JIDC.STATIC

(v Visible l~ firoup

r Disgbled T

Tupe: (icón

|UUU£1U_ ,Color:

Page 136: ESCUELA POLITÉCNICA NACIONA L

122

FUNCIÓN: MOSTRAR BITMAP

RESULTADOS DELMONITOREO

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATIC

IDB_BRESULTADOS

Bitmap

CMONITORJCMPDIg

Pícture Prooerties ^ ^ É9^B<3|

-W f General | Styles j Extendédseles |

ID: |IDC_STATIC jj Tupe: | Bitmap J

•rA' T^^HMtfTrrr ^^Hm r ünL; HR^MI i/-.i.-i,^nHi

UisAüleü 1 l auiluy _ . pColor; |

P Help ID

'— — — j

d

FUNCIÓN: MOSTRAR BITMAP

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

ID

IDC_STAT1C

1DB_BLINEVERDE

Bitmap

Page 137: ESCUELA POLITÉCNICA NACIONA L

123

o Pertenece a la Clase: CMONITORJCMPDIg

Picture Properties

General Styles Extended Styles

JD: |IDC_STATIC

I* V¡£¡ble F firoup

F Disabled P Tabstofi

r Help ID

FUNCIÓN: MOSTRAR BITMAP

Irsage:

Color:

o Identidad:

o Valor:

o Image:

o Tipo:

o Variable Asociada:

o Tipo de Variable:

o Método:

o Pertenece a la Clase:

ID

IDC_STATIC

IDB_BLINEAZUL

Bitmap

CMONITORJCMPDIg

Picture Properties

General Styles Extendédseles

ID: | I D C _ S T A T Í C ^ j Tupe: JBiímap

R Visible F fíroup Ifljage: |imaailg|güBfBT

F Disabled F Tabstoo _ iColor:

F Help ID '

Page 138: ESCUELA POLITÉCNICA NACIONA L

124

2.5.2.1 Presentación de la Ventana Principal

MONITOR ICMP

Ayuda

-SELECCIONE -r POTOr MONITOREOAUNAREDLOCAL

—-TIEMPOS -

r TIEMPO REAL

r UNA SOLA VEZ

Haciendo PING a IP;

Hacer POTO durante: \. Cada., Segundo*

Comienzo: p'M11'

Monitoreando a:

M y_d

Destino:

SampleLístboxítemsUb Ub tab

HACER PING

IMPRIMIR

InicUlizar Programa

RESULTADOS DEL MONITOREO

SamplcLístboxítemstab tab tab

Fig. 2.9 Presentación de la ventana principal del Proyecto

2.5.3 IMPLEMENTACIÓN DE UN MENÚ

Para crear un menú para este proyecto se deberá considerar a este como un

Recurso, mediante el MFC AppWizard creamos la aplicación y la llamaremos:

MENU1, luego lo agregaremos a la ventana de Diálogo principal.

Este menú será creado para escoger 3 opciones con las características

siguientes:

~~ ACCIONES SELECCIONAR A£UDA j

o OPCIÓN ACCIONES:

o Monitorear

o Inicializar

Page 139: ESCUELA POLITÉCNICA NACIONA L

125

o Imprimir

o Salir

o OPCIÓN SELECCIONAR

o Ping

o Monitoreo

o Una sola vez

o Tiempo Real

o OPCIÓN AYUDA

o Ayuda

o Acerca de Monitoreo.

ACCIONES 5ELE-

MonitorearInicializarImprimirSalir

SELECCIONAR

Ping

MonitoreoUna Sola vezTiempo Real

AVUDA

AyudaAcerca dé Monitoreo

Estas opciones del menú estarán asociados a los siguientes métodos:

o OPCIÓN ACCIONES:

o Monitorear, método asociado: OnBsend( )

o Inicializar, método asociado: OnBI_impiar( )

o Imprimir, método asociado: OnPrint( )

o Salir, método asociado: OnBend( )

Page 140: ESCUELA POLITÉCNICA NACIONA L

126

o OPCIÓN SELECCIONAR

o Ring, método asociado: OnRsend( )

o Monitoreo, método asociado: OnReceive( )

o Una sola vez, método asociado: OnUnavez()

o Tiempo Real, método asociado: OnTreal()

o OPCIÓN AYUDA:

o Ayuda

o Acerca de Minitoreo, método asociado:

OnAyudaAcercademonitoreo( )

A continuación se muestra la Configuración de las propiedades de los Controles

del Menú que será acoplado al Diálogo principal de la aplicación

FUNCIÓN: MOSTRAR LA OPCIÓN ACCIONES DEL MENÚ.

Menú ítem Properties ra^.Trv'Fxit£&&j&'.-&£iGeneral Extendédseles |

ID: |

f~ Separ-ator P" Pop-up P l]]act¡ve Break: [None

r~ Oieckcd r~ Grayed !~~ Hejp

Prompt:

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

&ACCIONES

Menú

IDR MENU1

Page 141: ESCUELA POLITÉCNICA NACIONA L

127

FUNCIÓN: PRESENTAR LA OPCIÓN Monitorear

Menú ítem Propertiea

.? General I Extended Styles |

ID; |ID_ACCIONES_MONITO jj £aplion; |!cMon¡lorear

P Sepa,rator P Pflp-up P lj]ac(ive fireak; ¡None

r Diccked T Grayed P Hejp¡

IMONITOREA UN DISPOSITIVO CONFIGURADO CON UNA I

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_ACCIONES_MONITOREAR

&Monitorear

Menú

OnBsend( )

IDR MENU1

FUNCIÓN: PRESENTAR LA OPCIÓN Inícíalizar

Menú ítem Properties

f General Extended Styles |

ID: |D_ACCIONES_INICIAUZ £aption:

**%&

P Sepjrator f" Pfip-up P Inactive fireak: fÑone

P Checfced P grayed P Hejp

Projrpt:

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_ACCIONES_INICIALIZAR

&lnicializar

Menú

OnBLimpiar( )

IDR MENU1

Page 142: ESCUELA POLITÉCNICA NACIONA L

128

FUNCIÓN: PRESENTAR LA OPCIÓN Imprimir

'* ;Menú ítem Properües

General Extendédseles

ID: |lD_ACCIONES_IMPRIMIR^j

l~~ Separator |~~ Pop-up I~~

F" Checfced l"~ Graved V

£aption:

Inactive

Hejp

\marnBreak: |None jj

Prorrjpl: |

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_ACCIONESJMPRIMIR

Im&primir

Menú

OnPrint( )

IDR MENU1

FUNCIÓN: PRESENTAR LA OPCIÓN Salir

Menú ítem Properties )'> XÍ> -J

Genera! Extendédseles

ID

rr

|ID_ACCIONESSeparator \~

Checked P

.SALIR

Pop-up

Grayed

drr

Caption: iB^SUt]

Inactive fireak: ¡None ^J

Hejp

Prompl: |

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_ACCIONES_SALIR

Sa&lir

Menú

OnBend( )

IDR MENU1

Page 143: ESCUELA POLITÉCNICA NACIONA L

129

FUNCIÓN: MOSTRAR LA OPCIÓN SELECCIONAR DEL MENÚ.

Menú ítem Properties

ID:

General Extendédseles

P Separator I? Pfip-up P Igactive fireafc [Nona

P ChecJsed P fif^ed P Hejp

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

&SELECCIONAR

Menú

IDR MENU1

FUNCIÓN: PRESENTAR LA OPCIÓN Ping

Menú ítem Properíies

? l: General I Extended Styles

y] £aption: |P&¡ng!ID SELECCIONAR PINGID:-. . • „ ; ; • • . - . . . . • . - - . . - ,-Separator P P$fi-up P (¿active fireafc JNone

P,rChecJsed. P ürayed P Hejp : \ Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_SELECCIONAR_PING

P&ing

Menú

OnRsend( )

IDR MENU1

Page 144: ESCUELA POLITÉCNICA NACIONA L

130

FUNCIÓN: PRESENTAR LA OPCIÓN Monitoreo

?¿' ":'í

Menú ítem Propettit •'1x1

General /Extended Sljil

ID: ECCIOMAR MONITOREO ^J Caplion:

P Sepflrator I" Pflp-up P Inactivo Bréale JNone

P Chec^ed P Grayed T Help

Ptoifjpt: I

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_SELECCIONAR_MONITOREO

&Monitoreo

Menú

OnReceive( )

1DR MENU1

FUNCIÓN: PRESENTAR LA OPCIÓN Una sola vez.

Menú ítem Ptoperties

General Extended Styles

SELECCIONAR UNAVEZ ~^J £aption: |&Una Sola vezID:— ^—— — • jii.—" — •

P Sepafator P Pflp-up P loaclrvc Eteak: [

P Chedsed P ürayed P Hcjp

PfprjDpt [

one

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_SELECCIONAR_UNAVEZ

&Una Sola vez

Menú

OnUnavez( )

IDR MENU1

Page 145: ESCUELA POLITÉCNICA NACIONA L

131

FUNCIÓN: PRESENTAR LA OPCIÓN Tiempo Real

Menú ítem Properties

General I Extendédseles

ID: ID SELECCIONAR TREA^I Caption: |i — — i 11 — i •

l~~ Separator l~~ Pop-up T~ lj]aciive fireak: |None

r~ Checked f~ grayed í"* Help

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_SELECCIONAR_JREAL

Tiempo &Real

Menú

OnTreal( )

IDR MENU1

FUNCIÓN: MOSTRAR LA OPCIÓN AYUDA DEL MENÚ.

Menú ítem Properties

-W ^ General | Extendédseles |

ID: |

f SeparatoE W Pflp-up

F" Checked 1"™ Grayed

J Caption: \WM

P Inaclive Break:

r Hejp

BSBIP IP tíiíí

a| None _^J

Piompt: |

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

A&YUDA

Menú

IDR MENU1

Page 146: ESCUELA POLITÉCNICA NACIONA L

132

FUNCIÓN: PRESENTAR LA OPCIÓN Ayuda

'j

Menú ítem Properties

General Extended Styles

Caption:^^I — —..

P Separator P Pgp-up P Inactivo Break: [Ñone

P ChecJsed P .Grayed P Hejp

Prornpt:

I

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_AYUDA_AYUDA

A&yuda

Menú

IDR MENU1

FUNCIÓN: PRESENTAR LA OPCIÓN Acerca de Monitoreo

Menú ítem Properties

^Acerca de Monitoreo

"W Y General I Extended Styles

ID: |ID_AYUDA_ACERCADEM^J Caption: (

P Sepa/ator P Pfip-up P Inactive Break: |None

P Checked P Carayed P Hejp

Prornpt: |

o Identidad:

o Valor:

o Caption:

o Tipo:

o Método Asociado:

o Pertenece al Recurso:

ID

ID_AYUDA_ACERCADEMONITOREO

&Acerca de Monitoreo

Menú

OnAyudaAcercademonitoreo( )

IDR MENU1

Page 147: ESCUELA POLITÉCNICA NACIONA L

133

2.5.3.1 Presentación de la Ventana Principal incluida el menú.

E3MONIIGR ICMP

'[ACOONES SELECOONAR AYUDA1 Montoiewi Incwfaar

I IfóB^fóKfflHHWlfiag'BliiMHBitfldPBtyro

I

'— SELECCIONE—PING

MONTTOREO AUNARSE LOCAL

TIEMPOS-r -nEMPOBEAl.

f UNA SOLA VlEZ

.Ayuda

Hadando PING a IP: ¡localhost f

Comienzo. '^"

Momtoreando a:

May i5,*oyj

_ |

[11.25 56 UI -jj

RESULTADOS DEL MONITOREO

I

IMPRIMIR

Iniaatizar Programa f I - •

Fig. 2.10 Presentación de la ventana principal del Proyecto incluido un menú

2.5.4 IMPLEMENTACIÓN DE LAS CLASES

Cuando se creó el proyecto usando el AppWizard de MFC, se formaron dos

clases principales:

o Clase CMONITORJCMPDIg tipo pública y heredada de la clase Cdiaiog.

o Clase CMONITORJCMPApp tipo pública y heredada de la clase CWinApp

Page 148: ESCUELA POLITÉCNICA NACIONA L

134

2.5.4.1 Clase CMONITORJCMPDlg

Esta clase heredada de la Clase Base CDialog de la MFC, nos permite darle

funcionalidad a este proyecto una vez que ingresemos el respectivo código a

todos los controles de la ventana de aplicación creada.

Dentro del archivo de cabecera MONITORJCMPDIg.h se establecerán las

variables que corresponden a darle funcionalidad a la ventana de Diálogo, aquí

también se definirán las estructuras de la Cabecera IP e ICMP que serán

necesarias para que el programa de monitoreo envíe datos a través de la red y los

traiga de vuelta cuando se solicite una respuesta de eco.

La Clase CDialog es derivada de la clase CWnd y por ende deriva a la clase

CMONITORJCMPDIg las funcionalidades siguientes:

• El constructor de la clase CDialoq::CDialoq. requiere dos parámetros: el

nombre de la plantilla de diálogo que utilizará (la que se haya diseñado en

los recursos) y una referencia a la ventana padre del diálogo (casi siempre

es la ventana que pide que se visualice). También existe un constructor por

defecto (sin parámetros) orientado a la creación de diálogos no modales.

• La función CDialog::DoModal, aplicada sobre un objeto construido

previamente permite visualizarlo en modo modal. Esta función es síncrona

en el sentido de que no devuelve el control a la función llamante hasta que

no se cierre el diálogo. Devuelve un valor que podemos utilizar para indicar

distintas opciones de cierre del diálogo.

• Función CDialoq::OnlnitDialoq. para inicializar el diálogo.

• Funciones CDialog::OnQk v CDialog::OnCancel que permiten realizar las

operaciones de confirmación o cancelación del objetivo del diálogo.

Page 149: ESCUELA POLITÉCNICA NACIONA L

135

2.5.4.2 Clase CMONITOR_ICMPApp

Esta clase se origina cuando se creó el proyecto a través del AppWizard de la

MFC, representa una aplicación Windows. Cada programa debe tener un objeto

global o estático, es decir que exista durante todo el tiempo, de una clase propia

derivada de CWinApp. De hecho, otra característica de la programación basada

en MFC es que el código carece de programa principal, la ejecución comienza

con la creación del objeto CWinApp.

En realidad, es la MFC la que provee una función principal estándar WinMain

(este es el nombre que toma para las aplicaciones Windows) que utilizarán todos

los programas. Los pasos básicos que sigue son tres: inicialización del programa,

entrada en el bucle de mensajes y finalización del programa.

• Inicialización del programa. Se obtiene en dos fases distintas: inicialización

de la aplicación e inicialización de la instancia de la aplicación.

• Bucle de mensajes. Es la parte central de la ejecución, no finaliza hasta

que no se cierra la ventana principal.

• Finalización de la instancia. Permitirá liberar recursos, cerrar ficheros de

trabajo, confirmar operaciones, etc.

2.5.5 IMPLEMENTACIÓN DE LAS ESTRUCTURAS DE CLASE

Para el caso de este programa, se necesitará crear dos estructuras dentro de el

archivo de cabecera MONITORJCMPDIg.h , de la clase CMONITORJCMPDIg,

las estructutas a crear son tres:

o Estructura: struct JpHeader. que definirá el tipo de variables de un

datagrama IP.

o Estructura: struct JcmpHeader: que definirá el tipo de variables de un

paquete ICMP.

o Estructura: struct JcmpHeaderTSCO: que definirá el tipo de variables de

un paquete ICMP para una solicitud de ECO.

Page 150: ESCUELA POLITÉCNICA NACIONA L

136

La estructura struct JpHeader, se la definirá de la siguiente manera:

typedef struct JpHeader

BYTE

BYTE

WORD

WORD

WORD

BYTE

BYTE

WORD

¡p_verlen;

ipjos;

ipjen;

ipjragoff;

ip_ttl;

ip_proto;

ip_chksum;

IN_ADDR ip_src_addr;

IN_ADDR ip_dst_addr;

}IpHeader;

// Longitud de la versión y encabezado

// Tipo de servicio

// Longitud total del paquete

// Identificación del datagrama

// Offset del fragmento

// Tiempo de vida

// Protocolo

// Suma de comprobación

// Dirección fuente

// Dirección destino

La estructura struct JcmpHeader, se definirá así:

typedef struct JcmpHeader

BYTE

BYTE

USHORT

USHORT

USHORT

ULONG

} IcmpHeader;

IcmpType;

IcmpCode;

IcmpChecksum;

Icmpld;

IcmpSeq;

IcmpTimestamp;

// Tipo de sevicio ICMP

// Tipo de Subcódigo

// Suma de comprobación

// Identidad

// Secuencia

// no está dentro del campo

de cabecera ICMP, pero se usa.

La estructura _lcmpHeaderT8CO, para enviar una solicitud de eco será:

typedef struct JcmpHeaderTSCO

BYTE IcmpType;

Page 151: ESCUELA POLITÉCNICA NACIONA L

137

BYTE

USHORT

USHORT

USHORT

ULONG

} IcmpHeaderTSCO;

IcmpCode;

IcmpChecksum;

Icmpld;

IcmpSeq;

IcmpTimestamp;

// Tipo de subcódigo

2.5.6 DEFINICIÓN DE VARIABLES DE LA CLASE CMONITORJCMP_Dlg

Las siguientes son las definiciones para las variables que se usan dentro de la

Clase CMONITOR_ICMP_Dlg tipo públicas

BYTE

BYTE

LPIcmpHeader

LPlpHeader

LPIcmpHeaderTSCO

SOCKET

DWORD

DWORD

DWORD

int

int

int

LPSTR

LPSTR

int

int

int

int

int

lcmpSendPacket[100];

lpRecvPacket[100);

pIcmpHeader;

plpHeader;

plcmpHeaderT8CO;

icmpSocket;

icmpRoundTripTime;

icmpPingSentAt;

icmpPingReceivedAt;

icmpRcvLen;

icmpCurSeq;

icmpCurld;

nomHostSíg;

nomHostSigFin;

a;

xx;

yy;zz;

t;

//buffer de envío de datos

//buffer de recepción de

datos

//Puntero a una estructura

//Puntero a una estructura

//Puntero a una estructura

//Nombre del Socket

//Tiempo de viaje redondo

//Tiempo al envío

//Tiempo a la recepción

//Long. De datos recibidos

//Secuencia ICMP

//Identidad ICMP

//Puntero a la IP inicial

//Puntero a la IP final

//variable tipo entero

//variable tipo entero

//variable tipo entero

//variable tipo entero

//variable tipo entero

Page 152: ESCUELA POLITÉCNICA NACIONA L

138

t.v•,r~ « .

SOCKADDRJN

LPHOSTENT

SOCKADDRJN

char

char

char

char

icmpSockAddr;

hostdest;

rcvSockAddr;

t¡podepaquete[100];

direccionfuente[100];

direcciondest[100];

descripc¡on[200];

//Estructura de dirección del

socket de envío

//Estructura de información del

anfitrión en internet

//buffer de datos

//buffer de datos

//buffer de datos

//buffer de datos

2.5.7 IMPLEMENTACIÓN DE LOS CONTROLES - ANÁLISIS DE MÉTODOS

Para darle funcionalidad al programa se analizará que función va a realizar cada

control y su método asociado, en la mayoría de los controles se necesita agregar

una parte de código para inicializar las variables, estableciendo valores de inicio

para la mayoría de ellas. Se verá que se repite la función UpdateData, ésta es

clave para trabajar con variables de control en Visual C++, ésta toma la

información de las variables y actualiza los controles en la pantalla con los valores

de las variables, también toma información de los controles y llena las variables

agregadas con cualquiera de los valores modificados por un usuario.

Si el argumento es FALSE, los valores de las variables se pasan a los controles

de la ventana. Si el argumento es TRUE, las variables se actualizan con cualquier

cosa que aparezca en los controles de la ventana.

Para leer las variables y obtener su valor actual, llamaremos a UpdateData con un

valor de TRUE antes de leer cualquiera de las variables.

Vamos a analizar cada uno de los controles de nuestro programa.

Page 153: ESCUELA POLITÉCNICA NACIONA L

139

2.5.7.1 Función OnBend( ), para SALIR del programa.

Cuando ejecutamos el botón "SALIR", se abrirá una ventana de diálogo la cual

permitirá confirmar si en verdad el usuario desea salir del programa. La

funcionalidad es la siguiente:

void CMONITOR_ICMPDig::OnBend()

{

int ¡Resultado; //Esta variable captura la selección del botón

//Pregunta al usuario

¡Resultado - MessageBox("Presione Si o No ",

"¡USTED CANCELARÁ EL PROGRAMA! ADIÓS!!",

MB_YESNO \

//Determina en cuál botón hizo clic el usuario

//Le proporciona al usuario un mensaje que muestra en cuál botón se hizo clic

switch (¡Resultado)

{

caselDYES: // ¿El botón Yes?

OnOK();

//Actualiza el diálogo

UpdateData (FALSE);

//m_strmensaje = "Usted canceló el programa";

break;

caseIDNO: // ¿ El botón No?

break;

El mensaje que se muestra al usuario es el siguiente:

Page 154: ESCUELA POLITÉCNICA NACIONA L

140

¡USTED CANCELARA EL PROGRAMA!

Presione Si o No

rs!*' • -j

i-.":', —"J

Ves

Fig. 2.11 Presentación de la ventana de diálogo de la Opción Salir.

2.5.7.2 Función OnBLimpiar( ), para INICIALIZAR la Pantalla.

Cuando ejecutamos el botón "Inicializar Programa", nos abre una ventana de

diálogo que permite escoger al usuario si desea o no Inicializar la Pantalla actual y

volver a la pantalla inicial del programa.

Inicializar Programa

Para que esto suceda ingresamos el siguiente código:

voidCMONITOR_ICMPDIg::OnBLimpiar()

int ¡Resultado; //Esta variable captura la selección del botón

//Pregunta al usuario

¡Resultado = MessageBox("Presione Si o No ",

"¿Desea Reiníciar el programa?",

MB__YESNO \

//Determina en cual botón hizo clic el usuario

//Le proporciona al usuario un mensaje que muestra en cuál botón se hizo clic

switch (¡Resultado)

{

caselDYES: //¿El botón Yes?

if (mJSend == 0)

{

m_strHName ~ "localhost" ;

m_strHNameFin = "";

Page 155: ESCUELA POLITÉCNICA NACIONA L

141

m_int_hora1 = 1;

m_int_hora2 = 2;

mjminutos = 60;

//Actualiza el diálogo

UpdateData (FALSE);

m_ctlListSend. ResetContentf);

m_ctlListRcv.ResetContent();

if(m_iSend~

m^strHName = "127.0.0.1";

m_strHNamef=in = "127.0.0.2";

mjnt_hora1 - 1;

m_int_hora2 = 2;

mjminutos = 60;

//Actualiza el diálogo

UpdateData (FALSE);

m_ctlU'stSend. ResetContentQ;

m_ctlListRcv. ResetContentQ;

break;

case IDNO: // ¿ El botón No?

break;

Como se observa inicializa la pantalla para dos casos, el primero si estamos en la

Opción PING, y el segundo para cuando estamos en la opción MONITOREAR.

Al usuario se desplegará la siguiente información:

¿Desea Reiniciar ef progratttd

Presione 5i o No

Yes No

Fig. 2.12 Presentación de la ventana de diálogo de la Opción Inicializar Programa.

Page 156: ESCUELA POLITÉCNICA NACIONA L

142

2.5.7.3 Función OnRsend(), para SELECCIONAR la opción PING.

--SELECCIONEPING

El usuario en la ventana principal del programa podrá escoger la opción PING ó

MONITOREAR, para cuando selecciona la opción PING, se enlazará al método

OnRsend( ), el cual activará sólo una entrada de datos para la dirección IP y el

control para ejecutar un monitoreo se cambiará a: "HACER P&1NG". Esto lo

conseguimos agregando a la función, el código siguiente:

HACER PING

void CMONITOR_ICMPDlg::OnRsend()

UpdateData(TRUE); //Se debe actualizar el botón marcado

if(m_iSend == O && mjreal == 0) //PING EN TIEMPO REAL

{

GetDlgltem(IDC_EHOSTNAME)->EnableWindow(TRUE);//Habilito la variable

GetDlgltem(IDC_EHOSTFIN)->EnableWindow(FALSE);//Deshabilitamos la variable

GetDlgltem(IDC_minutos)->EnableWindow(TRUE); //Habilito la opción minutos

GetDlgltem(IDC_hora2)->EnableWindow(FALSE);

GetDlgltem(IDC_STATIC_HINICIO)->EnableWindow(TRUE);//Habilito la variable

GetDlgltem(IDC_hora1)->EnableWindow(TRUE);//Habilitamosla variable

GetDlgltem(IDC_STATIC_HFIN)->EnableWindow(TRUE); //Habilito la opción minutos

GetDlgltem(IDC_STATIC_INTERVALO)->EnableWindow(TRUE);

GetDlgltem(IDC_STATIC__MINUTOS)->EnableWindow(TRUE);

m_strHName = "Iocalhost";//Predetermino uan dirección de Host

m_strHNameFin = "";

mjnt__hora1 = 1;

m_int_hora2 = 2;

mjminutos = 1;

m_ctlSend.SetWindowText ("HACER P&ING");//Modifico rótulo de botón

m_static_minutos. SetWindowText ("Segundo ");

m_static__hostname.SetWindowText ("Haciendo PiNG a IP:");

Page 157: ESCUELA POLITÉCNICA NACIONA L

143

m^staticjpfínal. SetWindowText (" ");

m_static_hÍnÍdo.SetWindowText ("Hacer PING durante:");

mjstatícjifin. SetWindowText ("minutos");

m^staticJntervalo.SetWindowText (" Cada...");

UpdateData(FALSE) /Retomo datos a la caja de edición.

iffmJSend == O && mjreal == 1) //PING UNA SOLA VEZ

GetDlgltem(lDC_EHOSTNAME)->EnableWindow(TRUE)S/Habilito la variable

GetDlgltem(IDC_EHOSTFIN)->EnableWindow(FALSE)S/Deshabilitamos la variable

GetDlgltem(IDC_minutos)->EnableWindow(FALSE); //Hbil'rto la opción minutos

GetDlgltem(lDC_hora2)->EnableWindow(FALSE);

GetDlgltem(IDC__STATIC_HlNICIO)->EnableWindow(FALSE);//Habilito la variable

GetDlgltem(IDC_hora 1)->£nable Window(FALSE) ¡//Deshabilitamos la variable

GetDlgltem(IDC_STATIC_HFIN)->EnableWindow(FALSE);

GetDlgltem(IDC_STATICJNTERVALO)->EnableWindow(FALSE);

GetDlgltem(IDC_STATIC_MINUTOS)->EnableWindow(FAL$E);

mjstrHName = "localhosty/Predetermino uan dirección de Host

m_strHNameFin = "";

mjnt_hora1 = 1;

m_int_hora2 = 2;

mjminutos = 1;

m_ctlSend.SetWindowText ("HACER P&ING");//Modifico rótulo de botón

m_síatic__minutos. SetWindowText ("Segundos");

m_static__ho$tname.SetWindowText ("Haciendo PING a IP:H);

mjstaticjpfínal. SetWindowText (" ");

m_static_hinicio.SetWíndowText ("Hacer PING durante:");

mj5tatic_hfin. SetWindowText ("minuto ");

m^staticJntervalo.SetWindowText (" Cada...");

UpdateData(FALSE) ¡//Retorno datos a la caja de edición.

Page 158: ESCUELA POLITÉCNICA NACIONA L

144

2.5.7.4 Función OnReceiveO, para SELECCIONAR la opción MONITOREO A

UNA RED LOCAL

MONITOREO A UNA RED LOCAL

Cuando se seleccione la opción MONITOREO A UNA RED LOCAL, nos

enlazamos al método OnReceive(), en este punto se habilitarán las dos entradas

de datos para la dirección IP tanto de inicio como final y también el botón para

ejecutar un monitoreo se cambiará a: "MONITOREAR".

MONITOREAR

El código es el siguiente:

void CMONITORJCMPDIg::OnReceive() //MONITOREO A UNA RED LOCAL

//m_iSend se iguala a 1

UpdateData(TRUE); //Se debe actualizar el botón marcado

if(m_iSend == 1 && mjreal == 0) //MONITOREO EN TIEMPO REAL

m__strHName = "127.0.0.1";//Elimino dirección alguna

m__strHNameFin = "127.0.0.2";

mjnt_hora1 = 1;

mjnt_hora2 = 2;

mjminutos = 1;

GetDlgltem(IDC__EHOSTNAME)->EnableWindow(TRUE);//Habilitamos la variable

GetDlgltem(IDC_EHOSTFlN)->EnableW¡ndow(TRUE)-//Hab¡litamos la variable

GetDlgltem(IDC_minutos)->EnableWindow(TRUE);//Habilito la opción minutos

GetDlgltem(IDC_hora2)->EnableWindow(TRUE);

GetDlgltem(IDC_STATIC_HINICIO)->Enab!eWindow(TRUE);//Habilito la variable

GetDlgltem(IDC_hora1)->EnableWindow(TRUE);//Deshabilitamos la variable

GetDlgltem(IDC_STATIC_HFIN)->EnableWindow(TRUE);

GetDlgttem(IDC_STATICJNTERVALO)->EnableWindow(TRUE);

GetDlgltem(IDC_STATIC_MINUTOS)->EnableWindow(TRUE);

GetDlgltem(IDC_minutos)->EnableWindow(TRUE);

Page 159: ESCUELA POLITÉCNICA NACIONA L

145

m_cfíSend.$etWindowText ("&MONITOREAR") ///Modifico rótulo de botón

m_static_minutos. SetWindowText ("Minutos");

m__static_hostname.SetWindowText ("Monitoreo desde IP:");

m_staticJpfínal.SetWindowText ("Hasta IP:");

mjstaticjhinicio.SetWindowText ("Monitorear desde las:");

m_static_hfin.SetWindowText ("horas, Hasta las:");

m_staticjntervalo. SetWindowText ("horas, cada:");

UpdateData(FALSE) -//Actualizo la ventana

if(m_iSend == 1 && mjreal == 1) //MONITOREO UNA SOLA VEZ

m^strHName = "127.0.0.1 "¡//Elimino dirección alguna

m^strHNameFin = "127.0.0.2";

mjnt__hora1 = í;

mjnt__hora2 = 2;

mjminutos = 1;

GetDlgltem(lDC_EHOSTNAME)->EnableWindow(TRUE);//Habilitamos la variable

GetDlgltem(IDC_EHOSTFIN)->EnableWindow(TRUE);//Habilitamos la variable

GetDlgltem(IDC_minuíos)->EnableWindow(FALSE); //Deshabilito la opción minutos

GetDlgltem(IDC_hora2)->EnableWindow(FALSE);

GetDlgltem(IDC_STATIC_HINICIO)->EnableWindow(FALSE);//Deshabilito la variable

GetDlgltem(IDC_hora1)->EnableWindow(FALSE);//Deshabilitamos la variable

GetDlgltem(IDC_STATIC_HFIN)->EnableWindow(FALSE); //deshabilito opción minutos

GetDlgttem(IDC__STATIC_INTERVALO)->EnableWindow(FALSE);

GetDlgltem(IDC_STATIC_MINUTOS)->EnableWindow(FALSE);

m_ctlSend.SetWindowText ("&MONITOREAR") ¡////Modifico rótulo de botón

m_static_minutos. SetWindowText ("Minutos ");

m_static_hostname,SetWÍndowText ("Monitoreo desde IP:");

m_statícJpfínal.SetWindowText ("Hasta IP:");

mjstatic_hinicio. SetWindowText ("Monitorear desde las:");

m_$tatic_hfín. SetWindowText ("horas, Hasta las:");

m_static_intervalo. SetWindowText ("horas, cada:");

UpdateData(FALSE) y/Actualizo la ventana

Page 160: ESCUELA POLITÉCNICA NACIONA L

146

2.5.7.5 Función OnBsend( ), para EJECUTAR MONITOREO

HACER PING MONITOREAR

La implementación del código para esta función sigue una secuencia la cual se

explicará detalladamente.

Una vez que se ha ejecutado el botón "HACER PING" o "MONITOREAR" según

sea el caso, lo primero que hará este programa es inicializar los buffers tanto de

envió como de retorno de información.

void CMONITOR_ICMPDIg::OnBsend()

{

LPBYTEpbuff;

pbuff = (LPBYTE)lpRecvPacket

memset (pbuff.O,100);

pbuff = (LPBYTE)lcmpSendPacket;

memset (pbuff,0,100);

char szPingBuffer[120];

CStríng s2;

//defino un bufferpara llena deadtos

¡//Especifico el buffer de envío

como una estructura

//Lleno de datos temporalmente

//Especifico el buffer de envío

como una estructura

//Lleno de datos temporalmente

Una vez inicializado los buffers de datos, verificamos la opción que el usuario

escogió en la ventana de diálogo, es decir si escogió hacer "PING" o

"MONITOREO A UNA RED LOCAL", para el caso de hacer "PING", la variable de

control tomará el valor: (mJSend == 0) , para el caso contrario la variable será:

(mJSentí == 1).

Ahora, ponemos en cero la estructura SOCKADDRJN déla clase winsock.h

Page 161: ESCUELA POLITÉCNICA NACIONA L

147

Convertimos la dirección IP ingresada en una cadena en notación decimal para

consultar si corresponde a una dirección IP, caso contrario resolvemos el nombre

del anfitrión, luego recuperamos la dirección IP de la cadena en notación decimal.

UpdateData(TRUE);

LPSTR nomHostSig = T2A((LPTSTR)((LPCTSTR)m_strHName));

memset(&icmpSockAddr,0,sizeof(icmpSockAddr)); //Ponemos en cero la

estructura SOCKADDRJN

unsigned long addr = inet_addr(nomHostSig); //Convierte la dirección IP

en una cadena en notación decimal

hostdest = NULL;

iffaddr == INADDR_NONE)

//Consultamos si la cadena correspondía a una dirección

hostdest = gethostbyname(nomHostSig);

//No corresponde a una dirección, entonces resuelve el nombre del anfitrión

if (hostdest)

//Si se obtiene la dirección IP como un entero largo sin signo

memcpy(&(icmpSockAddr.sin_addr),hostdest->h_addr,hostdest- >hjength)

¡//Copiamos la dirección IP desde la estructura de

//icmpSockAddr.sinJamily = hostdest->h_addrtype;

//información del anfitrión en internet

e/se

MessageBox("No puedo resolver este nombre en la red, Revise la

dirección ingresada!!!", nomHostSig, MB_OK\MB_ICONINFORMATION);

//Desplegamos un mensaje de no poder obtener la dirección del anfitrión

return;

else

icmpSockAddr.sin_addr.s_addr = addr;

icmpSockAddr.sin_family = AFJNET;

//Recuperamos la dirección IP

de la cadena en notación decimal

//Llenamos la estructura

SOCKADDRJN necesaria para Henar TCB

Page 162: ESCUELA POLITÉCNICA NACIONA L

148

Ahora se creará un socket básico y especificamos a ICMP como el protocolo a

utilizar.

icmpSocket = socket (PFJNET, SOCK__RAW,IPPROTOJCMP);

//Crea un socket básico y especifica a ICMP como el protocolo a utilizar

if (icmpSocket == INVALID^SOCKET)

{

MessageBox("No puedo crear un socket básico!!!!!!",

"ICMP", MB_OK\MB_ICONINFORMATION);

//Desplegamos un mensaje de no poder crear socket básico

retum;

Llenamos la estructura ICMP como de Solicitud de eco:

pIcmpHeaderTBCO = (LPIcmpHeaderT8CO)lcmpSendPacket;

memset (pIcmpHeaderTSCO, O, lcmpHeaderT8CQLength);//Pongo en cero los datos

plcmpHeaderT8CO->lcmpType - 8; //Especifico tipo de paquete como de solicitud de eco

plcmpHeaderT8CO~>lcmpCode = 0;

plcmpHeaderT8CO->lcmpChecksum = 0;

plcmpHeaderT8CO->lcmpld - icmpCurld;

plcmpHeaderT8CO->lcmpSeq - icmpCurSeq;

plcmpHeaderT8CO->lcmpTimestamp = GeíTickCountQ;

plcmpHeaderT8CO->lcmpChecksum = Chksum((LPWORD)plcmpHeaderT8CO,

IcmpHeaderTdCOLength);

Enviamos los datos hacia el Host destino,

LPIcmpHeader pIcmpHeader;

pIcmpHeader = (LPIcmpHeader)plcmpHeaderT8CO;

int Result;

ULONG icmpPingSentAt = GetTickCount();

Result = sendto (icmpSocket,(LPSTR) pIcmpHeaderTSCO, IcmpHeaderTSCOLength, O,

(LPSOCKADDR)&icmpSockAddr, sizeof (ícmpSockAddr));

if (Result == SOCKET_ERROR)

Page 163: ESCUELA POLITÉCNICA NACIONA L

149

MessageBoxfNo se puede monítorear la dirección IP ingresada..U!",

nomHostSig, MB__OK\MBJCONEXCLAMATION); //Desplegamos un mensaje de no poder

obtener la dirección del anfitrión

closesocket(icmpSocket);

retum;

Recibimos los datos como una Respuesta de Eco ICMP.

LPSOCKADDR pRcvSockAddr = (LPSOCKADDR)&rcvSockAddr;

int RcvlpHdrLen;

rcvSockAddr.sin_family - AFJNET;

rcvSockAddr.sin_addr.s_addr = INADDR^ANY;

rcvSockAddr.sin_port = 0;

RcvlpHdrLen = sizeof rcvSockAddr;

Result = recvfrom (icmpSockett(LPSTR)lpRecvPacket, 100,0, pRcvSockAddr, &RcvlpHdrLen);

ULONG icmpPingReceivedAt = GetTickCountQ;

if (Result == SOCKET^ERROR)

//icmpSocketError = WSAGetLastError();

MessageBox("No puedo recibir datos desde la dirección IP. Posible problema en la red!!!!1',

nomHostSig, MB__OK\MB_ICONINFORMATION);

//Desplegamos un mensaje de no poder obtener la dirección del anfitrión

closesocket(ÍcmpSocket);

retum;

¡cmpRcvLen = Result;

plpHeader = (LPIpHeader)lpRecvPacket;

// Extrae los bits 4-7 y convierte el número de palabras de 32-bits a bytes

RcvlpHdrLen = (plpHeader->ip_verlen & OxOf)*4;

if (Result < RcvlpHdrLen + ICMP^MIN)

// Too few bytes received

MessageBox("LONGITUD DE DATOS PEQUEÑA, NO ES LA CORRECTA!", "Clcmp::Receive",MB_OK\MB_SYSTEMMODAL);retum;

Page 164: ESCUELA POLITÉCNICA NACIONA L

150

,mJ

plcmpHeader=(LPIcmpHeader)((LPBYTE)lpRecvPacket + RcvlpHdrLen);

Ahora se recupera el tipo y código del paquete de la cabecera ICMP y llenamos

en un buffer la información que vamos a desplegar en nuestra pantalla de

visualización de datos enviados y resultados.

int type = plcmpHeader->lcmpType;

int code - plcmpHeader->lcmpCode;

if((type == 0)&&(code==0))

//recuperamos el tipo de paquete

//recuperamos el código del paquete

//RESPUESTA DE ECO

icmpRoundTrípTime = icmpPingReceivedAt - (plcmpHeaderT8CO->lcmpTimestamp);

wspríntf(tipodepaquete. "Realizando MONITOREO a Host >:

);//mensaje en/a cabecera del recuadro

wspríntf(dir6ccionfuente,HIP:%s'',(LPSTR)inet__ntoa(plpHeader->ip_src_addr));

if(hostdest*=NULL)

wsprintf(descripción,

"El tiempo del viaje redondo a IP [%s] fue de: %d ms.. Host encendido, conectado a la

red ".//mensaje presentado cuando la IP es formato hexadecimal

(LPSTR)in6t_ntoa(plpHeader->ip_src_addr),(ÍcmpRoundTripTime));

if(hostdest!=NULL)

wsprintf (descripción,

"El tiempo del viaje redondo a %s, con IP [%s] fue de: %d ms.. Host activo conectado a la red",

//mensaje cuando ya trae información del PING, la IP es un stríng

hostdest->h_name, (LPSTR)inet__ntoa(plpHeader->ip_src_addr),(icmpRoundTrípTime));

s2 = descripción;

UpdateData(FALSE);

m_ctlListRcv.AddStríng(s2);

}

closesocketficmp Socket);

wsprintffszPingBuffer.^/osF/osr.tipodepaquete.direccionfuente); //DATOS DE LA SEGUNDA

VENTANA DE CONTROL

s2 - szPingBuffer;

UpdateData(FALSE);

m_ctlListSend.AddString(s2);

Page 165: ESCUELA POLITÉCNICA NACIONA L

151

Este es el proceso para realizar monítoreo a un dispositivo configurado con una

dirección IP usando teoría de Sockets.

Para el caso que la opción escogida sea MONITOREAR a una Red, tendremos

que realizar un lazo para que se sume una dirección a la dirección inicio y llegue

hasta la dirección final, de la siguiente manera.

ujong Z = ntohl(addr); ///con ntohl convierto un numero de 32 bits de ordenamiento

ujong ZFIN = ntohl(addrfín); //de byte de red a ordenamiento de byte de anfitrión

///////comienza el lazo

ujong DIFERENCIA = ZFIN - Z;

for (int lazo=Z; lazo<=Z+DIFERENCIA; lazo++)

{ujong dirección = htonl(lazo); //con htonl convierto un numero de 32 bits de ordenamiento

//de byte de anfitrión a ordenamiento de byte de red

hostdest = NULL;

if (dirección == INADDR__NONE)

Usamos la función "htohl" para convertir un número de 32 bits de ordenamiento

de byte de red a ordenamiento de byte de anfitrión.

Usamos la función "htonl" para convertir un número de 32 bits de ordenamiento

de byte de anfitrión a ordenamiento de byte de red.

Para realizar un lazo que permita monitorear el número de veces requerido hay

que tomar en cuenta los valores que ingresa el usuario, los valores a ingresar son

el intervalo de horas de monitoreo y cada cuantos minutos requiere obtener una

respuesta del monitoreo. Lo implementamos con el siguiente lazo:

if (mjnt_hora2 > mjnt__hora1)

forfint xx=mjnt_hora 1 *60; xx<=mjnt_hora2*60; xx+=mjminutos ).

Page 166: ESCUELA POLITÉCNICA NACIONA L

152

Esto para cuando requiere hacerse un monitoreo en el transcurso de un día.

Para cuando el monitoreo pasa hasta el siguiente día hay que considearar lo

siguiente:

if (m_Ínt_hora2 < mjnt_hora1)

{yy-24- m_int_hora1 + m_int_hora2;

forfint xx = m_int_hora2*60; xx <= yy*60; xx+=m_iminutos)

Page 167: ESCUELA POLITÉCNICA NACIONA L

153

CAPITULO 3

RESULTADOS Y PRUEBAS

3.1 RESULTADOS

3.1.1 MONITOREANDO DESDE UNA PC NO CONECTADA A RED

Al ingresar una dirección IP cualquiera , el resultado que se obtiene al intentar

monitorear un dispositivo desde una PC que no está conectado a una red es una

Caja de diálogo en la que dice:

"No se puede monitorear la dirección IP ingresada..!!!,

Haciendo PING a IP: (192.168.126.1 **********

Hacer PING durante; fi

Comienzo: (Wednesday, 15 May ,2002

Monitoreando a:

192.168.126.1

Cada... \i

No se puede monitorear la dirección IP Ingresada. .111

OK

Fig. 3.1 Mensaje al monitorear un Host por su dirección IP cuando la PC local está desconectada de

la red

Al ingresar el nombre de un Host, el mensaje será el siguiente:

"No puedo resolver este nombre en la red, Revise la dirección ingresada!!!"

Page 168: ESCUELA POLITÉCNICA NACIONA L

154

I/1

.. ifl*

Haciendo PING a IP: **»»*****»

Hacer PING durante: [i 3 Millutos- K Cada... _»]

Comienzo: [wednesday, 15 May ^

Monitoreando a:No puedo resolver este nombre en la red, Revise la drecdón hgresadal !l

OK

Fig. 3.2 Mensaje al monitorear un Host por su nombre cuando la PC local está desconectada de la red

Si es una dirección de Internet el mensaje será el mismo, ya que no puede

resolver el nombre.

Haciendo PING a IP: vfww.epn.edu.ec **********

Hacer PING durante: -rl Minutos. Cada... [7

Comienzo: jWednesday, 15 May ,2002 23 |gj |i3:39'.43 TJ

Monitoreando a: Destino:www.epn.edu.ee Hfe^SY^-r^"^?

Kr^-¿¿m

No puedo resolver este nombre en lo red. Revise la dirección ingresada! II

OK

Fig. 33 Mensaje al monitorear una dirección de Internet cuando la PC local está desconectada de la

red

Si el usuario ingresa cualquier cadena texto también se desplegará el mismo

mensaje.

Page 169: ESCUELA POLITÉCNICA NACIONA L

155

Haciendo PING a IP: llaskdhldashdfsaf **********

Hacer PING durante: fi _J Minutos.

Comienzo: (Wednesday, 15 May ,2002

Monitc I

13:39:43

laskdhklashdfsaf

No puedo resolver este nombre en la red, Revise la dirección ingresada! II

OK

Cada.

Fig. 3.4 Mensaje al ingresar una cadena de caracteres cualquiera cuando la PC local está

desconectada de la red

Si el usuario ingresa una secuencia de números que no corresponde a una

dirección, el mensaje será: "No se puede monitorear la dirección IP ingresada..!!!,

Haciendo PING a IP: 1112327462354

Comienzo: ("««««sday, 15 May ,2002

Monitoreandoa: 112327462354

*«*»««**#«

Hacer PING durante: [i Jj Minutos. [2

Ti E^J 13:39=43

No se puede monitorear la dirección IP ingresada. .111

OK

Cada... fi~

Fig. 3.5 Mensaje al ingresar una secuencia de números cualquiera cuando la PC local está

desconectada de la red

Page 170: ESCUELA POLITÉCNICA NACIONA L

156

Al realizar un PING al local Host ó a la dirección IP: 127.0.0.1, dará una

respuesta, ya que la PC hace un loop.

En la ventana de datos a enviar se mostrará la IP del Host a monitorear, para el

caso, la dirección: 127.0.0.1.

En la ventana de resultados se tendrá que se realizó un monitoreo a la PC local,

mostrándonos el nombre, el tiempo de viaje redondo que es menor que 1 ms, esto

depende del tipo de procesador de la PC y por último la hora del monitoreo.

SSMQMTGRJCMP

ACCIONES SELECOONHR AYUDA

¡T!&^

-SELECQONE-ff PINGT MONITOREO A UN A RED LOCAL

—TIEMPOS

T TIEMPO REAL

f? UNASOLAVEZ

Haciendo PING a ff:

Hacer PIHC durante: [i IJ Minutos. Cada... fi

Comienzo: p^^S May ,2002 jj

Monitoreandoa: Destino:

Realizando MONITOREO a Host >:Realizando MONITOREO a Host >:

[IP: 127.0.0.1][IP: 127.0.0.1]

RESULTADOS DEL MONITOREO

«) Ayuda

HACER PING

IMPRIMIR

Inicializar Programa

•i tiempo del viaje redondo a ws_84253, con IP [127.0.0.1] fue de: o ms a Us 13:51:11.. RESPUESTA DEL LOCALHOSTil tiempo del viaje redondo a ws_84253, con IP [127.0.0.1] fue de: o ms a las 13:51:14.. RESPUESTA DEL LOCALHOST

Fig. 3.6 Resultados luego de realizar un monitoreo al LOCALHOST

iirÉi

Page 171: ESCUELA POLITÉCNICA NACIONA L

157

3.1.2 MONITOREANDO DESDE UNA PC CONECTADA A UNA RED DE

ÁREA LOCAL

Se tiene varias opciones de monitoreo, la una es hacer un solo PING a cierto

host, otra opción nos permite realizar varios PING al Host requerido,

permiténdonos además escoger con que secuencia deseamos que se realice

dicho monitoreo, otra de las opciones es MONITOREAR a varios dispositivos

conectados a una red por una sola vez y la última opción es hacer un

MONITOREO a varios dispositivos de la red seleccionando además con que

secuencia se desea realizar dicho monitoreo.

Si realizamos un solo PING a través de su IP a un dispositivo ubicado dentro de

una Red de Área local y que además esté conectado a la red, tendremos una

respuesta de que sí se realizó el monitoreo y que el tiempo de viaje redondo es

menos de 1 mílisegundo, para la PC, será O milisegundos.

53 -IONITOR ir-ipACCIONES SELECOOWW ÁVIDA

Ayuda

-SELECCIONEff PING

r MONITOREO A UNA RED LOCAL

-TIEMPOS-

r TIEMPOREAL

ff UNASOLAVEZ

Hadando PINO a IP: [¡"92.166.130.1

Mi ni i i.o

Comi«nzo: w*ln

Monitor«*iKÍoi: D««tíno:

Realizando MONITOREO a Host >: IIP: 192.108.126.1]HACERPING

IMPRIMIR

InicUlizar

RESULTADOS DEL MONITOREO

El tiempo del viaj« redondo a IP [192.166.126.1] fue d«r o mi. j las 14:04:03 Host «noandido, conectado a la red

Fig. 3.7 Resultados luego de realizar un PING a una dirección IP.

Page 172: ESCUELA POLITÉCNICA NACIONA L

158

Cuando se realiza un PING a cierto Host por el tiempo que se desee, se tiene el

siguiente resultado, para el ejemplo se hará durante 1 minuto y cada 3 segundos.

ACCIONES SELECaOWR AWDA

Ayuda

-SELECCIONE-ff PING

T MOrarOREO A UNA RED LOCAL

-TIEMPOS-

í? TIEMPO REAL

T UNASOLAVEZ

Haciendo PINC a IP: 1192-168.126.2

Hacer PING durante: Minutos. Cada... 13 Segundos

Comienzo:

Monitoreandoa:

15JÜ

Destbo:

Realizando MONITOREO a Host >:Realizando MONITOREO a Host >:Realizando MOHITOREO a Host >:Realizando MONITOREO a Host >:Realizando MONITOREO a Host >:Realizando MONITOREO a Host >:Realizando MONITOREO a Host >:

(IP: 192.160.126.3]UP: 192.168.126.2]tIP: 192.168.126.2][IP: 192.168,126.2)(IP: 192.166.126.2][IP: 192.168,126.2][IP: 192.168.126.2]

izl

IMPRIMm

Inicíalizar Programa

RESULTADOS DEL MONITOREO

El tiempo del viaje redondo a IP [192.168,120.2] fue de: i6ms. .a las 14:08:37 Host encendido, conectado a la redEl tiempo del viaje redondo a IP [192.166.126.2] fue de: o ms«a las 14:08:40 Host encendido, conectado a la red.El tiempo del viaje redondo a IP [192.168.120.2] fue de: o ms..a Us 14:08:43 Host encendido, conectado a la red..El tiempo del viaje redondo a IP [192.166,126.2] fue de: o ms. ¿ las 14:06:46 Host encendido, conectado a la red..El tiempo del viaje redondo a IP [192.168.126.9] fue de: o ms. .a las 14:08:49 Host encendido, conectado a la red..El tiempo del viaje redondo a IP [192.166.126.2] fue de: o ms..a las 14:06:52 Host encendido, conectado a la red..El tiempo del viaje redondo a IP [192.168.126.2] fue de: o ms..a Us 14:06:55 Host encendido, conectado a la red..

3^J

Fig. 3.8 Resultados luego de realizar un PING a una dirección IP.

Si monitoreamos a un Host conectado a la red y lo hacemos por su nombre, la

respuesta será que el Host está conectado a la red y que el tiempo de viaje

redondo es de O milisegundos.

Page 173: ESCUELA POLITÉCNICA NACIONA L

159

ACOOtíS SELECCIONAR ÁVIDA

-SELECCIONE -PINGMONITOREÓ A UNA RED LOCAL

—— TIEMPOS-tt TIEMPO REAL

r UNASOLAVEZ

Haciendo PING a IP: jQuitooi

Hacer PING durante: |» Minutos. _-j Cada... - Segundos

Monitowndo a: Destino:

Realizando MONITOREÓ a Hoít

Realizando MONITOREÓ a Host

Realizando MONÍTORBÓ a HostRealizando MONITOREÓ a Host

[IP: 192.166.126.2]

[IP: 193.168.136.2]

[IP: 192.168.136.2][IP: 193.168.126.2]

—1

J

HACER PING

IMPRIMIR

Inkializar Programa

RESULTADOS DEL MONITOflEO

El tiempo del viaje redondo a Quito 01 .pecom. cora -ar,El tiempo del viaje redondos Quitooi.pecom.com.ar,El tiempo del viaje redondo a Quitooi.pecom.coiii.ar,El tiempo del viaje redondo a Quitooi.pecom.com.ar,El tíempod«l viaje redondo* Quitooi.pecom.com.ar,El tiempo del viaje redondo a Quitooi.pecom^oat^r,El tiempo del viaje redondea Quitooi.pecom.com.ar,

con IP [193.168.136.2] fue da:con IP [192.168.120 .3 j fue de:con IP [a 92.168.1 a 6. a] fuá de:con IP [193.168.136.2] fue de:con IP [192. i68.ia6.aj fue de:con IP [192.168.196.2] fue de:con IP [192.168.126.2] fue de;

o ros a las 15:37:19..o msa las 15:37:24..o ms a las 15:37:29..o ms a las 15:37:34..o maa las 15:37:39..o ms a ks 15:37:44..o msa las 15:37:49..

Host activo conectado a la redHost activo conectado a U redHost activo conectado a U redHost activo conectado a la redHost activo conectado a la redHost activo conectado a la redHost activo conectado a la red

*J

Fig. 3.9 Resultados luego de realizar un PING a un Host a través de su nombre de red.

El Hostname ingresado fue QuitoOl, la respuesta de eco hace referencia a que se

monitoreó a la dirección IP: 192.168.126.2 y que el nombre está definido en la

tabla de Host, deteminadas por el DNS (Domain Ñame server) como:

quito01.pecom.com.ar.

Se puede saber además a que hora se realizó dicho monitoreó.

Cuando se realiza un PING a una dirección de Internet, lo que se hace es

monitorear a un Host remoto y si está conectado voy a saber el tiempo de viaje

redondo hasta ese dispositivo.

Page 174: ESCUELA POLITÉCNICA NACIONA L

ACOOMCS SELECCIONAR AYUDA

-SELECCIONEff PINCr MONTTOREOAUNAREDLOCAL

- - --- TIEMPOSff T1EMPOREAL

r UNASOLAVEZ

Haciendo PING a IP:

Hacer PINC durante: i Minutos. Cada...

Comien»: -

Monitor«andoa: Destino:

Realizando MONITOREO a HostRealizando MONITOREO a HostRealizando MONITOREO a Host

Realizando MONITOREO a HostRealizando MONITOREO a Host

[IP: 192.188.57.244][IP: 192.188.57.244][IP: 192.188.57.244]

[IP: 192.168.57.244][IP: 199.188.57.244]

RESULTADOS DEL MONITOREO

^ Segundos

HACERP1NC

IMPRIMIR

Iniculizar Programa

El tiempo d«l viaje redondo a epn.edu. ec, con IP [192.166.57.244] fue de: 1547 me a \AS 15:45118..Q tiempo del viaje redondo a epn.edu.ec, con IP [192.188.57.244] fue de: 2187 ms a las 15:45=30»a tiempo del viaje redondo a epn.edu.ec, con IP li9=-i68.57.244Í Fue de: 1703 ms a las 15:45:42..Q tiempo del viaje redondo a epn.edu.ec, con IP [192.188.57.244] fue de: 1610 ms a las 15:45:53»El tiempo del viaje redondo a epn.edu.ec, con IP [192.188.57.244] fue de: 1828 ms alas 15:46:05..El tiempo del viaje redondo a epn.edu.ec, con IP [193.166.57.244] fae de: 1578 ms a las 15:46:17..

Host activo conectado a la r«dHort activo conectado a la redHost activo conectado a la redHost activo conectado a la redHost activo conectado a la redHost activo conectado a U r«d

160

Fig. 3.10 Resultados luego de realizar un PING a una dirección de Internet.

El programa resuelve la IP real del Host asociado a la dirección de Internet, de

los resultados se puede apreciar que el tiempo de viaje redondo es de

aproximadamente 2000 milisegundos, lo que asegura que desde dónde se hizo el

monitoreo hasta el Host destino existen muchos saltos que pueden ser satelitales.

Si se realiza un PING a un Host remoto que se encuentre en una red WAN,

también se recibirá respuesta de eco.

Page 175: ESCUELA POLITÉCNICA NACIONA L

161

Ayuda— SELECCIONE —

PING

MOHITOREO A UNA RED LOCAL

TlEMPOS-

TCEMPOREAL

UNASOLAVEZ

Haciendo PING a IP:

Hacer POTC durante: ] Minutos, Cada... 15 ^l Segundos

Comienzo: J!*'«to*sday, 15 M

Monitoreandoa;

Realizando MONITOREO a Host —

Destino:

, rrn. *• * n . M ni

— >: [IP: 54.113.10.2]

HACER P1HG

IMPRIMIR

Tniculiar ProgranuRESULTADOS DEL MONITOREO

El tiempo <d«l viijer«dondo a ctioi.p^oom.cora^r, con IF [54.113.10.2] fue d«: 594 mi a las 15:51:53- Host activo conectado a U r«dEl tiempo del viaje redondo a ctaoi.pecom.córner, con IP [5 .113.10,3] fue d«: 734 ms a las 15:52:09.. Ho»t activo conectado a la redEl tiempo d«l viaje redondo a ota o i.pecom .córner, con IP [54.113.10.2] fue da: ¿09 mía las 15:52:25.. Host activo conectado a la redEl tiempo del viaje redondo a cUoi.pecom.com.ar, con IP [54.113.10.2] fue d«: 703 ms a las 15:52:40.. Host activo conectado a la red

Fig. 3.11 Resultados luego de realizar un PING a un Host remoto, parte de la red VVAN

El dispositivo remoto se llama CTA01 y se encuentra interconectado al host local

desde donde se realiza el PING mediante un enlace satelital, por lo mismo el

programa resuelve la IP y el tiempo de viaje redondo de 1000 ms, se trata de un

dispositivo que está conectado al host Local a través de un doble salto satelital.

Si la dirección que ingresó el usuario es cualquier cadena de caracteres, el

programa desplegará el siguiente mensaje: ("No puedo resolver este nombre en la

red, Revise la dirección ingresada!!!",), se debe a que los datos que ingresó el

usuario no corresponden a una dirección IP.

Page 176: ESCUELA POLITÉCNICA NACIONA L

162

ft':Gi>£S SELECCIONAR

PINGMOHTTOREOAUNAREDLOCAL

Haciendo PING a IP; wwhrsctjsrj

Hacer PirJG (Kirdíif?: i -J Minutos. 2 •»!

Corawnzo: |W*dnMday. 15 M.iy

Monitoreando a:No puedo wotar Mta nombra «n U r«d, R*vto la *ecdófi hgroMdalll

Inicializar Programa

RESULTADOS DEL MONITOREO

Fig. 3.12 Resultados cuando la dirección ingresada a monitorear es una cadena de caracteres que no

corresponden a una dirección IP

El programa no resuelve nombres que no correspondan al formato de una

dirección IP.

Si se monitores a un conjunto de dispositivos que estén dentro de una red de

Área Local, en principio se ingresará una dirección inicial y una dirección final, si

todas están conectadas a la red, el programa dará como resultados el tiempo de

viaje redondo hasta cada dispositivo y la hora a la que se hizo el mon¡toreo,

indicando que los terminales están conectados a la red. Como opciones se podrá

realizar el monitoreo una sola vez o seleccionar el intervalo de tiempo en el cual

se desea resultados.

Page 177: ESCUELA POLITÉCNICA NACIONA L

163

Se tiene que considerar que para obtener resultados del monitoreo paralelamente

se debe correr el mismo programa haciendo PING al Local Host durante un

intervalo de tiempo considerable

ACCIONES SEUTCaoittR AYUDA

Ayuda

-SELECCIONE^PING

MONITOREO A UNA REDLOCAL

-TIEMPOS-

TIEMPO REAL

UNASOLAVEZ

Monitor» desdelP: 192-168.126.156 HartalP: Ji9a.xi8.ia6.i6g

_ Minutos

Conii«nzo

Morutoroando a: Destino:

Realizando MONITOREO a Host [IP: 192.168.126.159]

Realizando MONITOREO a Host [IP: 192.168.126.161]Realizando MONITOREO a Host [IP: 192.168.126.162]

RESULTADOS DEL MONITOREO

) IMPRIMIRJ

El tiempo del viaja redondo a IP [192.168.126.156] fue de: 16 ms..a las 16:15:54 Host encendido, conectado de la red. .El tiempo del viaja redondo a IP [192.168.126.157] faede: o rns.-a las 16:15:57 Host encendido, conectado de la red..El tiempo del viaje redondo a IP [193.168.126.158] fue de: o res..* las 16:16:00 Host encendido, conectado de la red..El tiempo del viaje redondo a IP [192.168.126.159] fue de: o ras.* las 16:16:03 Host encendido, conectado de la red..El tiempo del viaje redondo a IP [199.168,126.160] fue da: o ms..a las 16:16:06 Host encendido, conectado d« la red..El tiempo del viaja redondo a IP [199.168.126.161] fuá de: o tns.A las 16:16:09 Host encendido, conectado de la red..El tiempo del viaja redondo a IP [192.166.120.162] fue da: oms..¿ las 16:16:1.2 Host encendido, conectado de la red...

^J SALIR

T '}m\

J

d

Fig. 3.13 Resultados obtenidos al monitorear a varios dispositivos de red dentro de una Red de Área

Local.

Como se aprecia en el gráfico, el programa monitorea a los dispositivos en forma

secuencial, y presentando en la ventana de resultados la información de

monitoreo pertinente a cada dispositivo, como son la dirección IP, el tiempo de

viaje redondo y la hora en la que se realizó el monitoreo.

Page 178: ESCUELA POLITÉCNICA NACIONA L

164

3.2 PRUEBAS

Para realizar nuestras pruebas del programa en una red real, se utilizó la Red de

La Compañía Petrolera Pérez Companc Ecuador, la cual es una Red de Área

Local con conexión a una Red WAN con las siguinentes características:

• Red con Topología Ethernet.

• La interconectividad se la realiza con switch Cisco 10 /100 autosensitive.

• PCs con tarjetas de Red 3Com Ethernet 10/100.

• Cableado Horizontal implementado con cable DTP categoría 5e.

• Cableado vertical con fibra óptica multimodo.

La dirección de la red clase C, es 192.168.126.1 hasta 192.168.126.154

Máscara de Red: 255.255.255.0

3.2.1 MENSAJES DE ERROR.

Al monitorear un dispositivo el usuario tiene que ingresar una dirección IP, una

dirección de Internet ó un nombre de Host auténtico, si no lo hace obtendrá un

mensaje de error. Por ejemplo si ingresamos como dato el nombre de un servidor

que no existe, para el caso déla red de prueba se tiene un Host denominado

QUITO02.

Al monitorearlo tendremos el mensaje siguiente:

quitoOZ

No puedo resolver este nombre en la red, Revise la dirección ingresada!!!

OK

Fig. 3.14 Mensaje que indica al usuario que la dirección que ingresó no corresponde a una dirección

de red

Page 179: ESCUELA POLITÉCNICA NACIONA L

165

Cuando se ingresa una cadena de caracteres inválida tenemos el mismo

mensaje.

Cuando el usuario ingresa en el intervalo de horas un valor que no esté entre 1 y

24, el mensaje es el siguiente:

MONITOR_ICMP

Please enter an Integer between 1 and 24,

QK |

Fig. 3.15 Mensaje que indica al usuario que debe ingresr un número entero entre 1 y 24

Si se ingresa una dirección correcta pero en vez de especificar con números las

horas de monitoreo se escribe una cadena de caracteres, el programa no

ejecutará ninguna acción y esperará que se ingrese el dato correcto.

PING-SELECCIONE—

r

Haciendo PING a IP: 1192.168.126.1

Monitorear desde las: f^as horas, Hasta las: |

Fig. 3.16 El usuario debe tener en cuenta de no ingresar una cadena de caracteres

Si por alguna razón la PC no está conectada a la red, el mensaje es el siguiente:

"No se puede monitorear la dirección IP ingresada..!!!, Revise si su PC está

conectada a una RED"

Page 180: ESCUELA POLITÉCNICA NACIONA L

166

Haciendo PINC a ff: Hasta ff:

Monitoreardesdelas: I1 j^J horas, Hártalas: ja j horas, cada: [6o j Minutos

Comienzo: Maríés '2f i l i l

Monitoreandaa:

Fig. 3.17 Mensaje al usuario cuando el programa detecta que la computadora no está conectada a la

red

3.2.2 MONITOREO A DISPOSITIVOS DENTRO DE LA RED

Ahora se monitoreará a una PC dentro de la red, esta tiene dirección IP:

192.168.126.2, se hará por una sola vez.

Acaotes XLECOCMR AYUDA

SELECCIONE —ff P1NGr MONITOREO A UMA R£D LOCAL

TIEMPOSTIEMPO REAL

UNA90LAVEZ

H»ci«i<JoPIWCíIP:

3 J

Destino:

RMlinndo MONITOREO i tíoK >: [IP: 192. lúe .ia 6.2]HACER PTNG

IMPRIMIR

InicUlúar Programa

RESULTADOS DEL MOMITOREO

El tit mpodil vUj« redondo * IPU93.i68.i26.il] fu* d«; 16 ma.j las 10:29:20 HoftvacwuUdo.conKUdoiUr^d

Fig. 3.18 Monitoreo a un Host a través de su dirección IP.

Page 181: ESCUELA POLITÉCNICA NACIONA L

167

Los resultados muestran tiempos de viaje redondo aproximadamente cero

milísegundos , esto se debe a que la dirección monitoreda está dentro de la Red

LAN, además se muestra la hora del monitoreo y el estado de la PC, es decir está

conectada a la red.

• Si se monitorea ahora a un Host remoto ingresando una dirección de Internet:

Esta puede ser: wwv^]}ti_oc|u_ec. Como resultado tenemos el tiempo de viaje

redondo que es de aproximadamente 1500 ms.

ACCIONES SELECCIONAR AYUDA

Ayuda

SELECCIONE —PINO

MONITOREQAUNAREDLOCAL

_ TIEMPOS -

TIEMPOREAL

UNASOLAVEZ

Haciendo PING a IP: jwwvf.epn.edu.ee

'I

Comienzo: Fridav . 17 Mav

Monitoreando a: Destino:

Realizando MONITOREO a Host >: [IP: 192.100.57.244]HACERPING

IMPRIMIR

Inicializar Programa

RESULTADOS DEL MONITOREO

[El tiempo del viaje redondo a epn.edu.ec, con IP [192.106.57.244] fue de: 1547 ms a las 12:21:09.. Host activo conectado a la red

Fig. 3.19 Monitoreo a un Host a través de su dirección de Internet.

• Se monitoreará ahora a un Host remoto que no está dentro de la red LAN sino

que nos conectamos a él a través de una red WAN

El nombre del servidor remoto será: CTA01 (su ubicación física es en Argentina).

El resultado del monitoreo es el siguiente.

Page 182: ESCUELA POLITÉCNICA NACIONA L

168

=¡SMUrHlíUH_ItMl>

ACCIONES SELECCIONAR AYUDA

Ayuda

-SELECCIONE-PING

MONITOREO A UNA RED LOCAL

- TIEMPOS-

f~ TIEMPO REAL

fí UNA SOLA VEZ

Haciendo PING a IP:

H.3c«rPirJG durante: Mitllltos- Cada...

Comienao: r

Monitoreando a: Destino:

Realizando MONITOREO a Host >: [IP: 54.113.10.2]HACER PING

IMPRIMIR

Inicíalizar Programa

RESULTADOS DEL MONITOREO

El tiempo del viaje redondo a ct a oí, con IP [54.113.10.2] fue de: 781 ms a las 13:23:19.. Host activo conectado a la red

Fig. 3.20 Monitoreo a un Host a través de su nombre de red.

El tiempo de viaje redondo a este Host remoto es de aproximadamente 800

milisegundos.

• Ahora vamos a monitorear a un conjunto de PCs que se encuentran en la red,

por una sola vez:

La dirección IP inicial será: 192.168.126.170

La dirección Ip final será: 192.168.126.180

El resultado es el siguiente:

Page 183: ESCUELA POLITÉCNICA NACIONA L

169

ACCIONES SELECOONAA AYUDA

Ayuda-SELECCIONE-

rpmcMONTrOREOAUNAREDLOCAL

TIEMPOS -C TIEMPOREAL

ff UNA SOLA VES

Monitor» d«d«IP: 192-108.126.170 Hasta IP: 192-168-126.180

Monitoroardosdebs: J 1 _~l Minutos

Comienzo:

Moni toreando a: Destino:

Realizando MONITOREO a HostRealizando MONITOREO a Host

Realizando MONITOREO a HostRealizando MONITOREO a HostRealizando MONITOREO a Host

[IP: 127.0.0.1][IP: 192.168.126.172]

[IP: 192.168.126.174][IP: 192.168.126.175][IP: 127.0.0.1] ¿\R

IMPRIMIR

InícUlizar ProgramaRESULTADOS DEL MONITOREO

El tiempo del viaja redondo a IP [192.168.126.170] fue de: o ms..a las 12:29:06 Host encendido, conectado de la red.....El tí«mpo del viaje redondo a IP [127.0,0.1] fue de: iSS ms. J las 12:29:11 Host encendido, conectado de la redEl tiempo dal viaje redondo a IP [193.108.126.172] fue de: o ms..a laá 12:29:11} Host encendido, conectado de la redEl tiempo del viaje radondo a IP [197.0.0.1] fuá de: 156 ms.-a las 12:29:18 Hoií encendido, conectado d« la redEl tiempo del viaje redondo a IP [192.168.120.174] fue de: 16 ms..a las 12:29:21 Host encendido, conectado de la redEl tiempo del viaje redondo a IP [192.108.126.175] fue de: o ms..a las 12:29:24 Host encendido, conectado de 1a red.....El tiempo del viaje redondo a IP [127.0.0.1) fue de: 218 ms~a las 12:29:27 Host encendido, conectado da la red

Fig. 3.21 Monitoreando a un grupo de direcciones dentro de una red LAN.

Se despliega la información del monitoreo de las diferentes PCs. Se despliega el

tiempo de viaje redondo y el estado de conexión a la red de los dispositivos

conectados.

Para esta opción de monitoreo se debe correr un programa paralelo monitoreando

al localhost de modo que cuando ef programa principal esté monitoreando a la red

y no encuentre un dispositivo, el socket se quedará en espera (abierto) sino que

continuará con el monitoreo, es decir cuando no se encuentre un host disponible

la respuesta lo dará la dirección del localhost 127.0.0.1.

Page 184: ESCUELA POLITÉCNICA NACIONA L

170

CAPITULO 4

CONCLUISONES Y RECOMENDACIONES

4.1 CONCLUSIONES

Una vez que se ha terminado este proyecto y se ha probado su funcionalidad se

puede concluir lo siguiente:

• La interfaz de aplicación de WINDOWS SOCKETS permite manejar una gran

cantidad de funciones de conectividad. Al programar con la interfaz de

Windows Sockets y las clases Winsock de la Microsoft Foundation Class

(MFC) podremos llevar a cabo comunicaciones de red entre varios dispositivos

configurados bajo el protocolo de comunicaciones TCP / IP.

• El lenguaje de programación de alto nivel Microsoft Visual C++ 6.0, aunque

tiene su grado de complejidad, es muy versátil y permite a un usuario

programar en forma ordenada y modular, es decir se pueden compilar las

clases por separado . Lo más relevante de este lenguaje de programación son

las funciones y clases que incluye para conectividad de redes. Para este

programa se usó la clase Winsock

• El programa se lo realizó con una interfaz de visualización sencilla, de modo

que permita al usuario manejar la aplicación sin problemas y que cumpla su

objetivo principal como es monitorear a un dispositvo local o remoto que esté

conectado a una red y esté configurado bajo el protocolo de comunicacines

TCP/IP.

• Se cumplió el objetivo planteado para este Proyecto de Titulación como es el

de monitorear a un dispositivo configurado con TCP / IP. Al monitorear a cierta

dirección de red el usuario recibe información valiosa como el tiempo de viaje

Page 185: ESCUELA POLITÉCNICA NACIONA L

171

redondo desde el Host local hasta el dispositivo a monitorear, además podrá

saber la hora en la que el dispositivo fue monitoreado.

• El programa es útil para un administrador de red ya que la plataforma sobre la

que se ejecuta el programa es Microsoft Windows y es la más común en el

entorno de las comunicaciones de red en empresas medianas e instituciones

gubernamentales y privadas. Uno de los objetivo de un administrador de red

es monitorear a los dispositivos que componen su red para siempre tener un

estatus de la misma y mantener una calidad de servicio aceptable, el

administrador al usar el programa podrá controlar si es que hay tráfico en la

red reflejándose este parámetro en los tiempos de respuesta (tiempo de viaje

redondo) que es uno de los parámetros de información que presentan los

resultados de este programa.

• En la actuliadad la mayoría de aplicaciones para conectividad y redes están

desarrolladas con teoría de sockets, tanto para el sistema operativo Windows

como para sistemas operativos basados en plataformas UNIX. Los sistemas

operativos de Microsoft actuales incluyen muchas funcionalidades para

sockets y para interconectividad de redes incluidas el monitoreo, este

programa puede acoplarse sin ningún problema a estos sistemas operativos

ya que su creación se basa en la misma tecnología y particularidades de

diseño.

• El programa funciona correctamente en sistemas operativos Windows

multitarea como Windows NT 4.0, Windows 2000 y Windows XP. No corre

sobre Windows 95, Windows 98 y Windows Milenium porque las librerías y

dlls de Visual Estudio 6.0 presentan conflictos con estos Sistemas Operativos.

• Por último puedo concluir que realizar este programa fue de mucha ayuda

para mi desarrollo profesional ya que en la actualidad me encuentro

realizando tareas de administración de redes e internetworking, por lo que he

podido sacarle el máximo provecho y pienso que se podrían ímplementar en el

Page 186: ESCUELA POLITÉCNICA NACIONA L

172

programa otras aplicaciones pero que por hoy están fuera del objetivo

particular de este proyecto de Titulación.

4.2 RECOMENDACIONES

• Al término de implementar este Proyecto de Titulación, recomiendo que un

Ingeniero en Electrónica y Telecomunicaciones también conozca de

programación orientada a objetos ya que es una herramientas muy útil para

diseñar aplicaciones sobre todo que se refieran a conectividad de redes.

Windows Sockets y la Microsoft Foundation Class, permite que un

programador de Red pueda manejar y controlar dispositivos de red en forma

local o remota ya no de la manera tradicional sino con un interfaz gráfico y en

diferentes plataformas de sistema operativo.

• Recomiendo al usuario de este programa que para una mejor visualización de

los datos, utilice un monitor SVGA que esté configurado con un área de

pantalla de 1024 x 768 pixels.

• Antes de que un usuario use este programa tendrá que percatarse de que su

PC esté conectado a una red, caso contrario tendrá varios mensajes de error.

• Si existe dificultades en el manejo del programa podrá el usuario ingresar a la

ayuda que ofrece el programa y consultar el tema sobre el que necesita

información, en particular acerca de manejo de sockets o manejo de paquetes

IP en redes.

• Cuando se ingrese una dirección IP que no pueda monitorear (por no estar el

dispositivo conectado a la red) hará que el programa se quede inactivo, lo que

se hará es abrir otra ventana del programa y monitorear a una dirección

Page 187: ESCUELA POLITÉCNICA NACIONA L

173

conocida o al Local Host de modo que el primer programa arroje un resultado

y continúe monitoreando. La ventaja del programa es que fue diseñado para

procesos multitarea.

• Sí un usuario desea diseñar alguna aplicación para interconectividad de redes

podrá basarse en la información que presenta el capítulo 1, al igual que en el

capítulo 3 dónde se explica detalladamente la forma de implemenatar una

conexión con sockets.

Page 188: ESCUELA POLITÉCNICA NACIONA L

REFERENCIAS BIBLIOGRÁFICAS

• APRENDIENDO VISUAL C++ 6 en 21 días, Davis Chapman, Editorial

Prentice Hall - México 1999

• APRENDIENDO TCP/IP en 24 horas , Joe Casad y Bob Willsey,

Editorial Prentice Hall - México 2000

• EFFECTIVE TCP/IP PROGRAMMING, Jon C Snader, Editorial .Addison-

Wesley - 2000

• WINDOWS SOCKETS NETWORK PROGRAMMING , by Bob Quinn,

Dave Shute, David K. Shute, Adison Wesley 1995

• INTERNETWORKING WITH TCP/IP VOL. III CLIENT-SERVER

PROGRAMMING AND APPLICAT1ONS-WINDOWS SOCKETS

VERSIÓN, Douglas E. Comer, David L. Stevens, Editorial Prentice Hall -

edición volumen 3 - abril 1997

• PROGRAMACIÓN EN INTERNET , Hamsa Cris , Cope Ken, McGraw

Hill 1ra. Edición - México 1996

• REDES GLOBALES DE INFORMACIÓN CON INTERNET Y TCP/IP,

Douglas E. Comer, Prentlce Hall 3ra. Edición 1996

• REDES DE COMPUTADORAS, Andrew S. Tanenbaum, Prentice Hall

3ra. Edición 1997

Page 189: ESCUELA POLITÉCNICA NACIONA L

CONSULTAS EN INTERNET:

http://cws.internet.com/32winsock.html

http://www.sockets.com/

http://msdn.microsoft.com/visualc/default.asp

http://www.codequru.com/index.shtml

http://www.vale.edu/pclt/COMM/TCPIP.HTM

http://www.protocols.com/pbook/tcpip.htm

http://www.abcdatos.com/tutoriales/redes.html

http://www.aul.fiu.edu/tech/visualc.html

http://www.visionx.com/mfcpro/

http://world.std. comHimf/papers/sockets/wínsock.htmi

http://www.microsoft.com/products/developer/winsock/defauit.htm

ftp://ftp.cica.indiana.edu/pub/pc/win3/winsock/

http://msdn.microsoft.com/

http://www.sockets.com/wsnp.htm

http://infase.es/FORMACION/INTERNET/tcpip.html

Page 190: ESCUELA POLITÉCNICA NACIONA L

ANEXO A

ÍNDICE DE FIGURAS Y TABLAS

Page 191: ESCUELA POLITÉCNICA NACIONA L

ÍNDICE DE FIGURAS

Fig. 1.1 Red tipo Estrella 4Fig. 1.2 Red Tipo Bus 4Fig. 1.3 Red Tipo Anillo 5Fig. 1.4 Organización conceptual del software de protocolo en capas 8Fig. 1.5 Una comparación de (a) estratificación por capas conceptual

de protocolos y, (b) una visión realista de la organización delsoftware que muestra varias interfaces de red entre IP yvarios protocolos 9

Fig. 1.6 Trayectoria de un mensaje que atraviesa Internet desde unemisor, a través de dos máquinas intermedias, hasta unreceptor. Las máquinas intermedias sólo envían el datagramahacia la capa de software IP 10

Fig. 1,7 Modelo de referencia OSI, para software de protocolo 11Fig. 1.8 Las cuatro capas conceptuales del software TCP/IP y la forma

en que los objetos pasan entre capas. La capa con elnombre interfaz de red se conoce con frecuencia con elnombre de capa de enlace de datos 13

Fig. 1.9 La capa de red de TCP/IP incluye los módulos de software deIP, ICMPeIGMP 14

Fig. 1.10 Trayectoria de un mensaje cuando pasa de la aplicación enun anfitrión a la aplicación en otro. Una capa n en el anfitriónB recibe exactamente el mismo objeto que la capa ncorrespondiente del anfitrión emisor A 16

Fig. 1.11 Relación entre la estratificación por capas conceptual y lasfronteras, para el sistema operativo y las direcciones deprotocolo de alto nivel 18

Fig. 1.12 Encápsulamiento de datos utilizando TCP en una redEthernet 19

Fig. 1.13 Estructura de un datagrama IP que muestra los campos en elencabezado IP 22

Fig. 1.14 Formato del Datagrama IP 27Fig. 1.15 Formato de la Cabecera del IPv6 31Fig. 1.16 Dos niveles de la encapsulacion ICMP. El mensaje ICMP se

encapsula en un datagrama IP que, a su vez, se encapsulaen una trama para su transmisión. Para identificar el ICMP, elcampo de protocolo del datagrama contiene el valor 1 35

Fig. 1.17 a) Mensaje del ICMP con los campos del encabezado deICMP identificados

b) Encapsulamiento del ICMP 36Fig. 1.18 Formato de mensajes de ICMP de solicitud y respuesta de

eco (tipos 8 y 0) 39Fig. 1.19 Proceso básico de conexión de un socket 40

Page 192: ESCUELA POLITÉCNICA NACIONA L

Fig. 1.20 Los puertos sirven para enrutar las conexiones de red a laaplicación correcta 43

Fig. 1.21 Estructura simple de datos de un socket 45Fig. 1.22 Posición de Winsock dentro del ambiente Windows 63

Fig. 2.1 Diagrama Básico del Contenido de la Ventana Principal 88Fig. 2.2 Presentación Básica de Interfaz Programa - Usuario 93Fig. 2.3 Opción MFC AppWizard(exe) en Visual C++ 94Fig. 2.4 Configurando un Proyecto con MFC AppWizard(exe) en

Visual C++. Paso 1 94Fig. 2.5 Configurando un Proyecto con MFC AppWizard(exe) en

Visual C++. Paso 2 95Fig. 2.6 Configurando un Proyecto con MFC AppWizard(exe) en

Visual C++. Paso 3 95Fig. 2.7 Configurando un Proyecto con MFC AppWizard(exe) en

Visual C++. Paso 4 96Fig. 2.8 Configurando un Proyecto con MFC AppWizard(exe) en

Visual C++. Resumen 96Fig. 2.9 Presentación de la ventana principal del Proyecto 124Fig. 2.10 Presentación de la ventana principal del Proyecto incluido un

menú 133Fig. 2.11 Presentación de la ventana de diálogo de la Opción Salir 140Fig. 2.12 Presentación de la ventana de diálogo de la Opción Inicializar

Programa 141

Fig. 3.1 Mensaje al monitorear un Host por su dirección IP cuando laPC local está desconectada de la red 153

Fig. 3.2 Mensaje al monitorear un Host por su nombre cuando la PClocal está desconectada de la red 154

Fig. 3.3 Mensaje al monitorear una dirección de Internet cuando la PClocal está desconectada de la red 154

Fig. 3.4 Mensaje al ingresar una cadena de caracteres cualquieracuando la PC local está desconectada de la red 155

Fig. 3.5 Mensaje al ingresar una secuencia de números cualquieracuando la PC local está desconectada de la red 155

Fig. 3.6 Resultados luego de realizar un monitoreo al LOCALHOST 156Fig. 3.7 Resultados luego de realizar un PING a una dirección IP 157Fig. 3.8 Resultados luego de realizar un PING a una dirección IP 158Fig. 3.9 Resultados luego de realizar un PING a un Host a través de

su nombre de red 159Fig. 3.10 Resultados luego de realizar un PING a una dirección de

Internet 160Fig. 3.11 Resultados luego de realizar un PING a un Host remoto, parte

delaredWAN 161Fig. 3.12 Resultados cuando la dirección ingresada a monitorear es

una cadena de caracteres que no corresponden a una

Page 193: ESCUELA POLITÉCNICA NACIONA L

dirección IP 162Fig. 3.13 Resultados obtenidos al monitorear a varios dispositivos de

red dentro de una Red de Área Local 163Fig. 3.14 Mensaje que indica al usuario que la dirección que ingresó no

corresponde a una dirección de red 164Fig. 3.15 Mensaje que indica al usuario que debe ingresr un número

entero entre 1 y 24 165Fig. 3.16 El usuario debe tener en cuenta de no ingresar una cadena

de caracteres 165Fig. 3.17 Mensaje al usuario cuando el programa detecta que la

computadora no está conectada a la red 166Fig. 3.18 Monitoreo a un Host a través de su dirección IP 166Fig. 3.19 Monitoreo a un Host a través de su dirección de Internet 167Fig. 3.20 Monitoreo a un Host a través de su nombre de red 168Fig. 3.21 Monitoreando a un grupo de direcciones dentro de una red

LAN 169

ÍNDICE DE TABLAS

Tabla 1.1 Características de la Opción IPTabla 1.2 Valores del tipo de mensajes ICMPTabla 1.3 Funciones para Transmitir Datos a través de un socketTabla 1.4 Funciones para la recepción de DatosTabla 1.5 Funciones Sockets de BloqueoTabla 1.6 Funciones Sockets de No BloqueoTabla 1.7 Funciones de Bases de DatosTabla 1.8 Funciones de Bases de Datos AsincronasTabla 1.9 Macros para manipular el estado de un socketsTabla 1.10 Valores del Parámetro lEvent de WSAAsyncSelect

26374851535455565859

Page 194: ESCUELA POLITÉCNICA NACIONA L

ANEXO B

PRESENTACIONES

Page 195: ESCUELA POLITÉCNICA NACIONA L

MO

NIT

OR

EA

ND

O A

L L

OC

AL

HO

ST

AC

CIO

NE

S

SEL

EC

CIO

NA

R

AY

UD

A -SE

LE

CC

ION

E-

ff P

ING

C M

ON

ITO

RE

OA

UN

AR

ED

LO

CA

L

-TIE

MPO

Sr

TIEM

PO R

EAL

ff U

NA

SOL

AV

EZ

Hac

iend

o PI

NG

a J

P:

[loc

alho

st

Hac

er P

ING

dur

ante

: H

^j

Min

utos

.C

ada.

.. Ji

Com

ienz

o:

Wed

nesd

ay, 1

5

Mon

itore

aodo

a:

Des

tino:

Rea

lizan

do M

ON

TTO

REO

a H

ost

Rea

lizan

do M

ON

TTO

REO

a H

ost

>:

>:

[IP:

127.

0.0.

1][IP

: 12

7-0.

0.1]

RES

ULT

AD

OS

DEL

MO

NIT

OR

EO

M)

Ayu

da

_ Se

gund

os IMPR

IMIR

Inic

ializ

ar P

rogr

ama

I

El ti

empo

del

via

je re

dond

o a

ws_

8425

3, c

on IP

[127

.0.0

.1]

fue

de:

o m

s a la

s 13

:51:11

.. R

ESPU

ESTA

DEL

LO

CALH

OST

El ti

empo

del

via

je r

edon

do a

ws_

8<i2

53, c

on I

P [

127.

0.0.

1] fu

e de

: o

ms

a la

s 13

:51:

14..

RES

PUES

TA D

EL L

OCA

LHO

ST

Page 196: ESCUELA POLITÉCNICA NACIONA L

MO

NIT

OR

EA

ND

O A

UN

HO

ST A

TR

AV

ÉS

DE

SU

DIR

EC

CIÓ

N IP

ACCI

ONE

S SE

LECC

IONA

R AV

UDA

- SE

LE

CC

ION

E -

í? P

ING

C

MO

NT

TO

RE

OA

UN

AR

ED

LO

CA

L

-TIE

MP

OS

-

TIE

MP

O R

EA

L

UN

A S

OL

A V

EZ

Hac

iend

o PI

NG

a IP

: 19

2.16

8.12

6.1

Hac

er P

INO

dur

ante

: [

ij

j M

inut

os.

Cad

a...

i

Com

ienz

o:

[Ñed

nesd

ay,

15

May

,2

00

2 -d

[>

J

[13:

39:4

;

Mon

itore

ando

a:

Des

tino:

Rea

lizan

do M

ON

ITO

REO

a H

ost

>:[I

P: 1

92.1

68.1

26.1

]

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

ü)

A

yuda

jj

Segu

ndos

HA

CER

PIN

G

IMPR

IMIR

Inic

ializ

ar P

rogr

ama

El ti

empo

del

via

je re

dond

o a

IP [1

92.1

68.1

26.1

] fue

de:

o m

s..a

las

14:0

4:03

Hos

t enc

endi

do, c

onec

tado

a la

red

Page 197: ESCUELA POLITÉCNICA NACIONA L

MO

NIT

OR

EA

ND

O A

UN

HO

ST A

TR

AV

ÉS

DE

SU

NO

MB

RE

DE

RE

D

53 M

ONIT

OR JC

MP

ACC

ION

ES

SELE

CCIO

NAR

AVUD

A -SE

LE

CC

ION

E-

PIN

G

MO

NIT

OR

EO

A U

N A

RE

D L

OC

AL

-TIE

MPO

S-

TIEM

PO R

EAL

UN

A S

OLA

VES

Hac

iend

o PI

NG

a IP

: Q

uito

oi

Hac

er P

ING

dur

ante

:^

M

inut

os.

Cad

a...

j Se

gund

os

Com

ienz

o:

f

Mon

itore

ando

a:

. [W

edne

sday

, 15

May

,2

00

215

=37

^0

Des

tino:

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

Rea

lizan

do M

ON

ITO

REO

a H

ost

>:

Rea

lizan

do M

ON

ITO

REO

a H

ost

>:

[IP:

192

.168

.126

.2]

[IP:

192

.168

.126

.2]

[IP:

192

.168

.126

.2]

[IP:

192

.168

.126

.2]

[IP:

192

.168

.126

.2]

[IP:

192

.168

.126

.2]

[IP:

192

.168

.126

.2]

d

HA

CER

PIN

G

IMPR

IMIR

Inic

ializ

ar P

rogr

ama

El t

iem

po d

el v

iaje

red

ondo

a Q

uito

oi.p

ecom

.com

.ar,

El ti

empo

del

via

je r

edon

do a

Qui

tooi

.pec

om.o

om.a

r,El

tiem

po d

el v

iaje

red

ondo

a Q

uito

oi.p

ecom

.com

.ar,

El ti

empo

del

via

je r

edon

do a

Qui

tooi

.pec

om.c

om.a

r,El

tiem

po d

el v

iaje

red

ondo

a Q

uito

oi.p

ecom

.com

.ar,

El ti

empo

del

via

je r

edon

do a Q

uito

oi.p

ecom

.com

.ar,

El ti

empo

del

via

je r

edon

do a

Qui

tooi

.pec

om.c

om.a

r,

con

IP [1

92.1

08.1

26.2

] fiíe

de:

con

IP [

192.

168.

126.

2] f

ue d

e:co

n IP

[19

2.16

8.12

6.2]

fue

de:

con

IP [1

92.1

68.1

26.2

] fu

e de

:co

n IP

[192

.168

.126

.2]

fue

de:

con

IP [19

2.16

8.12

6.2]

fue

de:

con

IP [1

92.1

68.1

26.2

] fu

e de

:

o m

s a

las

15:3

7:19

.,o

ms a

las

15:3

7:24

.o

ms a

las 15

:37:

29.

o m

s a la

s 15

:37:

34.,

o m

s a la

s 15

:37:

39.

o m

sala

s 15

:37:

44.

o m

s a la

s 15

:37:

49.,

Hos

t act

ivo c

onec

tado

a la

red

Hos

t act

ivo c

onec

tado

a la

red

Hos

t act

ivo c

onec

tado

a la

red

Hos

t act

ivo co

nect

ado

a la

red

Hos

t act

ivo c

onec

tado

a la

red

Hos

t act

ivo c

onec

tado

a la

red

Hos

t act

ivo co

nect

ado

a la

red

Page 198: ESCUELA POLITÉCNICA NACIONA L

L

MO

NIT

OR

EA

ND

O A

UN

HO

ST A

TR

AV

ÉS

DE

SU

DIR

EC

CIÓ

N D

EIN

TE

RN

ET

MO

NIT

OR

JC

MP

AC

CIO

NE

S

SE

LEC

CIO

NA

R

AV

UD

A

Ayu

da

-SE

LE

CC

ION

E-

i* P

ING

C M

ON

ITO

RE

OA

UN

AR

ED

LO

CA

L

-TIE

MPO

S-

TIE

MPO

RE

AL

UN

A S

OLA

VE

Z

Hac

iend

o PI

NG

a I

P:

Hac

er P

ING

dur

ante

Min

utos

.C

ada.

.. fio

^\s

Com

ienz

o:

Mon

i tor

eand

o a

:

15:3

7:20

Des

tino:

Rea

lizan

do M

ON

ITO

REO

a H

ost

>:

Rea

lizan

do M

ON

ITO

REO

a H

ost

>:

Rea

lizan

do M

ON

ITO

REO

a H

ost

>:

[IP:

192.

188.

57.2

44]

[IP: 1

92.1

88.5

7.24

4][I

P: 19

2.18

8.57

.244

][I

P: 19

2.18

8.57

.244

][I

P:

192.

188.

57.2

44]

[IP:

192,

188.

57.2

44]

HA

CER

PIN

G

IMPR

IMIR

Inic

ializ

ar P

rogr

ama

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

El ti

empo

del

via

je r

edon

do a

epn

.edu

.ec,

con

IP [

192.

166.

57.2

44]

fue

de:

El ti

empo

del

via

je r

edon

do a

epn

.edu

.ec,

con

IP [19

2.18

6.57

.244

] fu

e de

:El

tiem

po d

el v

iaje

red

ondo

a e

pn.e

du.e

c, c

on IP

[19

2.18

8.57

.244

] fu

e de

:El

tiem

po d

el v

iaje

red

ondo

a e

pn.e

du.e

c, c

on IP

[19

2.18

8.57

.244

] fu

e de

:El

tiem

po d

el v

iaje

red

ondo

a e

pn.e

du.e

c, c

on IP

[19

2.18

8.57

.244

] fu

e de

:El

tiem

po d

el v

iaje

red

ondo

a e

pn.e

du.e

c, c

on IP

[19

2.18

8.57

.244

] fu

e de

:1547

ms

a la

s 15

:45:

18..

2187

msa

las

15:4

5:30

..17

03 m

s a

las

15:4

5:42

..16

10 m

sala

s 15

:45:

53..

1828

ms

a la

s 15

:46:

05..

1578

msa

las

15:4

6:17

..

Hos

t act

ivo

cone

ctad

o a

la re

dH

ost a

ctiv

o co

nect

ado

a la

red

Hos

t act

ivo

cone

ctad

o a

la r

edH

ost a

ctiv

o co

nect

ado

a la

red

Hos

t act

ivo

con

ecta

do a

la re

dH

ost ac

tivo

cone

ctad

o a

la re

d

Page 199: ESCUELA POLITÉCNICA NACIONA L

MO

NIT

OR

EA

ND

O A

UN

HO

ST P

OR

UN

IN

TE

RV

AL

O D

E T

IEM

PO

as M

ONITO

R JC

MP

AC

CIO

NE

S

SE

LEC

CIO

NA

R

AY

UD

A-,.

iasi

Ayu

da

- SE

LE

CC

ION

E-

PIN

G

MO

NIT

OR

EO

AU

NA

RE

DL

CIC

AL

HE

MP

OS-

TIE

MPO

RE

AL

UN

ASO

LA

VE

Z

Hac

iend

o PI

NG

a IP

: 19

2.16

8.12

6.2

Hac

er P

ING

dur

ante

M

inut

os.

Cad

a...

[3.11

Seg

undo

s

Com

ienz

o:IW

edne

sday

, 15

May

,2

002

-il

Mon

itore

ando

a:D

estin

o:

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

Rea

lizan

do M

ON

ITO

REO

a H

ost

— >

:

[IP:

192.

168.

126.

2][I

P: 1

92.1

68.1

26.2

][I

P: 1

92.1

68.1

26.2

][I

P: 1

92.1

68.1

26.2

][I

P: 1

92.1

68.1

26.2

][I

P: 1

92.1

68.1

26.2

][I

P: 1

92.1

68.1

26.2

]

J d

IMPR

IMIR

Iníc

ializ

ar P

rogr

ama

0 ti

empo

del

viaj

e re

dond

oa IP

[192

.168

.126

.2]

fue d

e:El

tiem

po de

l via

je re

dond

o a

IP [1

92.1

68.1

26.2

] fue

de:

El ti

empo

del

via

je r

edon

do a

IP [1

92.1

68.1

26.2

] fue

de:

El ti

empo

del

via

je r

edon

do a

IP [1

92.1

68.1

26.2

] fue

de:

El ti

empo

del

via

je r

edon

do a

IP [1

92.1

68.1

26.2

] fue

de:

El ti

empo

del

via

je r

edon

doa

IP [1

92.1

68.1

26.2

] fu

e de

:El

tiem

po d

el v

iaje

red

ondo

a IP

[192

.168

.126

.2]

fue

de:16

ms.

.a la

s 14

:08:

37o

ms.

.a la

s 14:

08:4

0o

ms..

a la

s 14

:08:

43o

ms.

.a la

s 14

:08:

46o

ms.

.a la

s 14

:08:

49o

ms..

a la

s 14

:08:

52o

ms.

.a la

s 14

:08:

55

Hos

t enc

endi

do, c

onec

tado

a k

red

Hos

t enc

endi

do, c

onec

tado

a la

red

Hos

t enc

endi

do, c

onec

tado

a la

red

Hos

t enc

endi

do, c

onec

tado

a la

red

Hos

t enc

endi

do, c

onec

tado

a la

red

Hos

t enc

endi

do, c

onec

tado

a la

red

Hos

t enc

endi

do, c

onec

tado

a la

red

Page 200: ESCUELA POLITÉCNICA NACIONA L

ME

NSA

JE D

E E

RR

OR

CU

AN

DO

SE

IN

GR

ESA

UN

A D

IRE

CC

IÓN

QU

E N

O E

XIS

TE

AC

CIO

NE

S

SE

LEC

CIO

NA

R

AY

UD

A

Ayu

da

-SE

LE

CC

ION

E-

PIN

G

MO

NIT

OR

EO

AU

NA

RE

DL

OC

AL

-TIE

MP

OS

-

f T

TE

MP

OR

EA

L

ff

UN

A S

OL

A V

ES

Hac

iendo

PIN

G a

IP

: w

erhrs

etjs

rj

Cad

a..:

S

egu

nd

os

Com

ienzo

: p^day, 1

5

May

Monit

ore

ando a

:

^ r

wet

hrse

tjsrj No p

uedo

reso

lver

est

e n

ombr

e e

n la

red.

Rev

ise la

dire

cció

n in

gre

sada!!!

OK

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

HA

CE

R P

ING

IMP

RIM

IR

Inic

ializa

r P

rogra

ma

Page 201: ESCUELA POLITÉCNICA NACIONA L

MO

NIT

OR

EA

ND

O A

VA

RIO

S D

ISP

OSI

TIV

OS

DE

NT

RO

DE

UN

A R

ED

AC

CIO

NE

S

5El£

CC

ION

Aft

A

VU

DA

Ayuda

-SE

LE

CC

ION

E -

r PI

NGff

M

ON

TT

OR

EO

AU

NA

RE

DL

OC

AL

-TIE

MPO

S-

r

TIE

MP

OR

EA

L

ff

UN

AS

OL

AV

EZ

Moa

itore

o de

sde

IP:

192.

168.

126.

156

Has

talP

: [1

92.1

68.1

26.1

65

Mon

itor

íar

~T] h

oras

, H

asta

las:

(2

jj

ho

ras,

C

ada:

j:

_T!

Min

utos

Com

ienz

o:

Mon

itore

ando

a:

y, 1

5 M

ay

Des

tino:

' "

[IP:

192

.166

.126

.156

][I

P: 1

92.1

68.1

26.1

57]

[IP:

192

.166

.126

.158

][I

P: 1

92.1

68.1

26.1

59]

[IP:

192

.168

.126

.160

][I

P: 1

92.1

68.1

26.1

61]

[IP:

192

.168

.126

.162

]

^J

J zlR

ES

ULT

AD

OS

DE

L M

ON

ITO

RE

O

MO

NIT

OR

EAR

IMPR

IMIR

Inic

íaliz

ar P

rogr

ama

El ti

empo

del

via

je re

dond

o a

IP [1

92.1

66.1

26.1

56]

fue

de: 1

6 m

s..a

las

16:1

5:54

El ti

empo

del

via

je r

edon

do a

IP [1

92.1

68.1

26.1

57] f

ue d

e: o

ms.

.a la

s 16

:15:

57El

tiem

po d

el v

iaje

red

ondo

a IP

[192

.168

.126

.158

] fue

de:

o m

s..a

las

16:1

6:00

El ti

empo

del

via

je r

edon

do a

IP [1

92.1

68.1

26.1

59] f

ue d

e: o

ms.

.a la

s 16

:16:

03El

tiem

po d

el v

iaje

redo

ndo

a IP

[192

.168

.126

.160

] fue

de:

o m

s..a

las

16:1

6:06

El ti

empo

del

via

je re

dond

o a

IP [1

92.1

68.1

26.1

61]

fue

de: o

ms.

.a la

s 16

:1.6

:09

El ti

empo

del

via

je r

edon

do a

IP [19

2.16

8.12

0.16

2] fu

e de

: o m

s..a

las

16:1

6:12

Hos

t enc

endi

do, c

onec

tado

de

la re

d»H

ost e

ncen

dido

, con

ecta

do d

e la

red.

..H

ost e

ncen

dido

, con

ecta

do d

e la

red...

Hos

t enc

endi

do, c

onec

tado

de

la re

d...

Hos

t enc

endi

do, c

onec

tado

de

la re

d...

Hos

t enc

endi

do, c

onec

tado

de

la re

d..,.

Hos

t enc

endi

do, c

onec

tado

de

la re

d....

J

Page 202: ESCUELA POLITÉCNICA NACIONA L

CU

AD

RO

DE

DIA

LO

GO

CU

AN

DO

SE

DE

SEA

IN

ICIA

LIZ

AR

LA

PA

NT

AL

LA

AC

CIO

NE

S

SE

LEC

CIO

NA

R

AY

UD

A

Ayu

da-S

EL

EC

CIO

NE

(=• P

ING

r

MO

NIT

OR

EO

AU

NA

RE

DL

OC

AL

- TIE

MPO

S -

r T

IEM

PO R

EA

L

ff U

NA

SOL

AV

EZ

Hac

iend

o PI

NG

a IP

: [l

ocal

host

Hac

er P

ING

du

ran

te:

fiC

ada.

.. |i

-"-

j S

egun

dos

Com

ienz

o:

3u

nd

a?

' 1

9

May

,2

00

2

Mon

ítor

ean

do

a:P

resi

one

Si o

No

\s |

No

|

HA

CE

R P

ING

- Inl

x|

IMPR

IMIR

Iníc

ializ

ar P

rogr

ama

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

El ti

empo

del

via

je re

dond

o a

ws^

8425

3, co

n IP

[127

.0.0

,1]

fue

de: o

ms a

las 21

:09:

18..

RESP

UES

TA D

EL L

OCA

LHO

ST

Page 203: ESCUELA POLITÉCNICA NACIONA L

CU

AD

RO

DE

DIA

LO

GO

CU

AN

DO

SE

DE

SEA

TE

RM

INA

R E

LP

RO

GR

AM

A

AC

CIO

NE

S

SE

LEC

CIO

NA

R

AY

UD

A

Ayu

da

-SE

LE

CC

ION

E-

PIN

G

MO

NIT

OR

EO

AU

NA

RE

DL

CC

AL

-TIE

MPO

S-T

IEM

PO R

EA

L

UN

AS

OL

AV

E2

Hac

iend

o PI

NG

a IP

: jl

ocal

host

Hac

er P

IWG

du

ran

te:

UM

inu

tos-

Cad

a... ji

Seu

nd

os

Com

ienz

o:

Mon

itor

eand

o a

:

,19

May

,2

00

2

-^U

ST

ED

CA

NC

EL

AR

A E

L P

RO

GR

AM

A! A

DIÓ

S»,

Pre

sion

e S

i o M

o

Yes

HA

CER

PIN

G

IMP

RIM

IR

Inic

íali

zar P

rogr

ama

RES

ULT

AD

OS

DE

L M

ON

ITO

RE

O

Page 204: ESCUELA POLITÉCNICA NACIONA L

PRESENTACIÓN DE LA AYUDA DEL PROGRAMA

MO

NIT

OR

IC

MP

Ap

plicatio

n H

elp

Fríe

E

dit

Boo

kmar

k O

pCío

ns

Hslp

Con

tení

*[

índe

x j

Bac

k |

frin

l

MO

NIT

OR

EO

D

E D

ISP

OS

ITIV

OS

CO

NF

IGU

RA

DO

S C

ON

TC

P/1

P

INT

RO

DU

CC

IÓN

La e

xpansi

ón

de

las

redes

info

rmátic

as y

de te

leco

munic

aci

ones

de á

rea lo

cal,

imple

menta

das

en t

od

o e

l m

undo

que

usa

n e

l pro

toco

lo d

e r

ed

TC

P/IP

par

a la

transm

isió

n d

e in

form

ació

n,

cre

cen

ca

da

día

más

y e

l monito

reo

de

las

mis

mas

es

un r

equerim

iento

muy

ne

cesa

rio

cuyo

obj

etiv

o

prin

cipal

es g

ener

ar r

ep

ort

es

de la

dis

ponib

ilidad

y a

cce

sib

ilid

ad

de

tod

os

los

dis

posi

tivos

de c

omun

icac

ione

s p

rese

nte

s en

dic

ha r

ed

. pa

ra

lleva

r

una e

fect

iva p

lanifi

caci

ón,

org

an

iza

ció

n,

supe

rvis

ión

y

con

tro

l de

mo

do

que

se g

ara

ntic

e

un n

ivel

de s

erv

icio

efic

ient

e p

or p

arte

de lo

s

ad

min

istr

ad

ore

s de

la re

d.

En l

os c

aso

s m

ás n

orm

ales

un

sis

tem

a d

e r

ed

es

¡nte

rco

ne

cta

da

s (in

tern

éis

) no

tom

an

to

po

log

ías

esp

ecí

fica

s si

no

que

co

ne

cta

n l

as r

ed

es

sin

impo

rtar

sus

top

olo

gía

s o

tecn

olo

gía

s, e

sta

s in

tern

éis

util

izan

dis

posi

tivos

esp

eci

ale

s, lla

mad

os h

ost

, re

pe

tido

res,

puente

s, e

nru

lad

ore

s ,

com

pu

ert

as,

etc

, pa

ra c

on

ect

ar

las

red

es

ind

ep

en

dia

nte

s, e

n el

ca

so d

e la

s re

de

s de

áre

a lo

cal u

tiliz

an

ta

les

disp

ositi

vos

para

ext

en

de

r la

con

exi

ón

de

ntr

o d

e su

¿re

a.

El

pres

ente

tra

ba

jo s

e h

a d

esar

rolla

do c

on e

l p

rop

ósi

to d

e c

rea

r un

a h

erra

mie

nta

de s

oftw

are

que

per

mita

mon

itore

ar a

to

do

dis

posi

tivo

conf

igur

ado

baj

o el

pro

toco

lo d

e re

c

de P

rogr

ama d

e A

plic

aci

ón (A

PI, A

reca

lca

r qu

e e

n lo

s últi

mos

años

el

por

est

o la

herr

am

ienta

de

pro

gram

AP

I b

asa

da e

n e

l par

adig

ma d

e s

oc

Win

dow

s e

s un

a d

e la

s pla

tafo

rmas

est

ándar

ace

pta

do

par

a e

l de

sarr

olle

La id

ea

sica

de

MO

NIT

OR

EO

ta

l

rem

oto

s e

stá

n d

isponib

les

y a

cce

sil

que

dem

ora e

n ll

egar

las

re

spu

est

a:iH

pir. T

upir»

MO

NIT

OR irM

P A

ppiir

ntinr. H

fip

. -

.= .-*i

t'iITM

Mr*

PI

Ct •n

lenl

» I

F*n

d 1

CEck

a lo

ptc,

and

then

dck

Ditp

iay.

Oí c

6ck

anot

hM la

b, tu

ch a

* In

dex.

ftjl

«MO

NIT

OR

EO

DE

DIS

PO

SIT

IVO

S C

ON

FIG

UR

ADO

S C

ON

TC

P /

\F±_

g)

«IN

TR

OD

UC

CIÓ

(¿21

«R

ED

ES

DE

ÁR

EA

LO

CA

L»@

] «R

ED

ES

LA

Q2J

«P

RO

TO

CO

LO IP

»[3

«P

RO

TOC

OLO

IP

Ȇ

á «

EN

CA

PS

ULA

MIE

NTQ

DE

DA

TO

[21 «E

NC

AP

SU

LAM

IEN

TO

»(Ü

«D

AT

AG

RA

MA

IP»

05

«ES

TR

UC

TU

RA

IP

»0

«D

IRE

CC

ION

ES IP

»

i?)

«IN

TRO

DU

CC

IÓN

A IC

MP

»g|

«EN

TR

EG

A D

E M

ENSA

JES IC

MP

»«i

~

i -r

1

Orn

a

| P

rinL.

. j

Can

cel

desa

rrol

lado

util

iza u

na I

nter

face

iara

desa

rrolla

r so

ftwar

e. C

abe

ado

es e

l de

Mic

roso

ft W

indow

s,

do c

om

o W

inso

ck q

ue e

s un

a

e M

icro

soft

Win

dow

s. C

om

o

Vin

dow

s S

ock

ets

def

ine

un

term

inar

si

cie

rto

s an

fitrio

nes

o y

de

spu

és

se m

ide

el t

iem

po

Page 205: ESCUELA POLITÉCNICA NACIONA L

AC

ER

CA

DE

L P

RO

GR

AM

A M

ON

ITO

R

ICM

P

AC

CIO

NE

S

SE

LEC

CIO

NA

R

AY

UD

A

HB

IlIí

aiH

ES

iBE

miB

H^

^

Ayu

da

-SE

LE

CC

ION

E-

ff

PIN

G

r

MO

NT

TO

RE

OA

UN

AR

ED

LO

CA

L

-TIE

MPO

S-

TIE

MPO

RE

AL

UN

ASO

LA

VE

Z

Hac

iend

o PD

JG a

IP:

loca

lhos

t

Hao

?r P

ING

dur

ante

:M

iílu

tos-

jj S

egun

dos

Com

ienz

o:

Mon

itor

eand

oa:

Ab

ou

t M

GIN

ITÜ

R

ICM

P

MO

NIT

OR

JCM

P V

ersi

ón 1

.1

Por:

Mar

celo

Ric

ardo

Fili

an N

arvá

ez

OK

Cop

yrig

ht (O

200

2

RE

SU

LTA

DO

S D

EL

MO

NIT

OR

EO

HA

CE

R P

ING

IMPR

IMIR

Inic

ializ

ar P

rogr

ama