Práctica 7 Redes de Computadores Los protocolos IP e ICMP Objetivos El objetivo de esta práctica es analizar el comportamiento de los protocolos IP e ICMP a través de la herramienta Analyzer introducida en la práctica anterior. Con este tipo de herramientas podemos capturar flujos de paquetes IP para posteriormente analizarlos y así verificar la funcionalidad del protocolo IP, de la misma manera que hemos hecho con el protocolo ARP. Con respecto al protocolo ICMP estudiaremos dos comandos ampliamente utilizados que se basan en el intercambio de mensajes ICMP: Ping y traceroute. Descripción Hasta ahora hemos visto aspectos relacionados con el hardware de red de nuestras máquinas: Acceso al adaptador de red y un mecanismo para la resolución de direcciones hardware. Esto nos suministra un acceso a nuestra red local que permite la comunicación a nivel de trama con todas las máquinas de la misma. Sin embargo, la interconexión de distintas redes, tanto locales como de área extensa o metropolitana, introduce un problema de comunicación al involucrarse distintos sistemas de direccionamiento a veces incompatibles entre sí (tal y como decíamos al hablar del protocolo ARP). El protocolo IP (Internet Protocol) es el que se encarga de resolver estas diferencias definiendo un espacio de direcciones universal por encima de las direcciones hardware que cada red define. Esto permite que máquinas conectadas a redes remotas, y probablemente con direccionamiento hardware incompatible, puedan comunicarse a través de este protocolo. El protocolo IP es el pilar básico de Internet (red de redes, interconectadas a nivel mundial) que permite la interconexión de redes abstrayéndose de las diferentes tecnologías de red existentes. Es, en su totalidad, un protocolo software que está desligado de los detalles del hardware de red, característica fundamental para la interconexión redes. En la estructura de Internet (Figura 1) se definen unos elementos conocidos como pasarelas o routers IP que se encargan de conectar dos o más redes entre sí y que trabajan a nivel de paquete IP (nivel 3 OSI). Estos elementos, definen las fronteras de las redes a este nivel, conocidas como redes IP. Token TokenRing Ring ProNet-10 ProNet-10 Ethernet Ethernet R1 Internet Internet R2 FDDI FDDI++ Ethernet Ethernet R3 X.25 X.25 Figura 1: Redes conectadas a través de routers IP: Internet. En la figura, podemos observar una de estas redes IP que contienen redes Ethernet y FDDI. Este podría ser el ejemplo de la antigua red de la UPV que consistía en una única red IP compuesta por diversos segmentos de red Ethernet conectados por una troncal basada en un doble anillo FDDI. Los elementos que separan estos segmentos de red, los puentes o bridges, trabajan a nivel de trama (nivel 2 OSI), por lo que una difusión Ethernet (dirección destino: FF:FF:FF:FF:FF:FF), se propagará a todas las máquinas de la red IP. Esta difusión no pasa a través de la pasarela R1, ya que esta define la frontera de la red IP y por otro lado trabaja con los paquetes de nivel 3. El protocolo, por tanto, permite la interconexión de redes de forma independiente al hardware de las mismas. Veamos algunas de sus características: • Define una red virtual, Internet, con un espacio de direcciones virtuales, direcciones IP, que son asignadas de forma exclusiva a los hosts que pertenezcan a la misma. • Se encarga de llevar los mensajes de un host a otro cualquiera de Internet, independientemente de donde esté conectado. • El protocolo IP realiza las funciones del nivel de red, según OSI, ofreciendo un servicio sin conexión. Por lo que NO garantiza la entrega de los mensajes, el orden en que han sido enviados ni la ausencia de errores, entre otras cosas. • La unidad de información con la que trabaja se la denomina datagrama. • Los hosts y las pasarelas implementan este protocolo. Estas últimas, se centran en la tarea de conducir los datagramas desde el host origen hacia el destino 2 remoto a través de las redes intermedias que sea necesario cruzar (encaminamiento IP). Direcciones IP. Las direcciones IP son de 32 bits y se dividen en dos campos: Identificación de la red IP (NetID) e identificación del host (Hostil) perteneciente a esa red. En la Figura 2 se muestran las distintas clases de direcciones IP. 0 1 Clase A Clase B Clase C Clase D Clase E 8 16 NetId 0 31 HostId NetId 1 0 1 1 0 1 1 1 0 1 1 1 1 HostId NetId HostId Dirección multicast 0 RESERVADO Figura 2: Clases de direcciones IP. Así tenemos 27 redes de clase A, cada una de ellas con capacidad de direccionar hasta 224 hosts, 214 redes de clase B, cada una de ellas con un capacidad de 216 hosts y 221 redes de clase C con capacidad de 28 hosts. También se proporciona un espacio de direcciones para direcciones de grupo (direcciones multicast). Las direcciones IP se suelen representar en formato decimal (4 octetos separados por un punto decimal) en lugar de expresarlas como un número de 32 bits. De esta forma podemos identificar rápidamente los octetos que pertenecen al identificador de red y los del host. Ejemplos de direcciones: 158.42.53.127 (clase B: NetID=158.42 y HostID=53.127), 192.15.32.200 (clase C: NetID=192.15.32 y HostID=200), 11.10.200.1 (clase A: NetID=11 y HostID=10.200.11). Sin embargo existen direcciones especiales que no deben ser asignadas a un host, ya que tienen un significado propio, así: • Dirección de red: Las redes tienen su dirección, que no es más que el NetID con el identificador de la red y el HostID a cero. Ejemplo: 158.42.0.0 (dirección de red de la UPV). • Dirección de broadcast: Define la dirección de difusión a nivel de IP. Consiste en el NetID con el identificador de la red donde se va a realizar la difusión, y en el HostID se coloca todo a “1s”. Ejemplo: 158.42.255.255 (dirección de difusión de la UPV). 3 • Difusión limitada: Es otro tipo de difusión pero que se extiende solo sobre la red IP donde ha sido generada. Los dos campos de la dirección IP a “1s”. Ejemplo: 255.255.255.255. • Dirección de bucle (loopback): Es una dirección de clase A, 127.x.x.x, que se ha reservado para soportar comunicaciones entre aplicaciones del mismo host y para comprobar el funcionamiento de aplicaciones de red sin interferir en ella. Si utilizamos esta dirección para enviar un datagrama, el protocolo IP la reenvía hacia el protocolo superior, NUNCA la enviará hacia la red. Habitualmente se utiliza la dirección de bucle: 127.0.0.1. • Nuestro propio host: Es una dirección que se usa en circunstancias muy concretas, indicará la dirección de nuestro host. No es una dirección IP válida. Ejemplo: 0.0.0.0 • Host en nuestra red: El campo correspondiente al NetID se pone a "0", para especificar la dirección de un host en nuestra propia red. Al igual que la anterior sólo debe usarse en determinadas circunstancias.. Ejemplo: 0.0.53.127. Formato de un datagrama IP. Los datagramas IP se encapsulan dentro de una trama, ocupando el espacio dedicado al campo de datos de la misma (Figura 3). Tipo de prot. IP IP = 0x0800 Datagrama IP Direcciones Hw. Dir. Destino Dir. Origen 0x800 Campo de datos (MTU = 1500) Cabecera de la trama Ethernet (DIX) Figura 3: Encapsulado de un datagrama IP en una trama Ethernet. El tamaño máximo de un datagrama, 64Kb según el estándar del protocolo IP. Sin embargo, el tamaño del datagrama está limitado por el tamaño máximo del campo de datos de la trama que lo va a llevar. Esta es una limitación que depende de la tecnología de red 1 que tengamos. Cada tecnología de red define el tamaño máximo del campo de datos de la trama, también conocido como MTU (Maximun Transfer Unit), que maneja. Así, por ejemplo, Ethernet define un MTU de 1500 octetos. El protocolo IP, lógicamente usa direcciones IP para identificar la fuente y el destino de datagrama. Ahora bien, el datagrama viaja dentro de una trama, y ésta utiliza direcciones hardware. Y por este motivo, necesitamos los servicios del protocolo ARP, 1 Es la única dependencia que IP tiene del hardware de red subyacente. 4 para determinar la dirección hardware que corresponde a la dirección IP del destinatario. El datagrama, se divide en dos campos: Cabecera y datos. La cabecera contiene información que el protocolo necesita para ofrecer su servicio, y el campo de datos contiene el mensaje en si que tiene que ser entregado en el host destino. En la figura 4 se muestra el formato de un datagrama, donde pueden apreciarse los siguientes campos: • Versión: Especifica la versión del protocolo IP a la que pertenece el datagrama, actualmente se está utilizando la versión 4 del protocolo. • Longitud de la cabecera: Define el tamaño de la cabecera IP en palabras de 32 bits, ya que esta puede ser de tamaño variable. A efectos prácticos consideraremos la cabecera IP de tamaño fijo (sin campo de opciones). • Tipo de servicio: Contiene información acerca de cómo debe ser tratado el datagrama en su viaje al destino. Incluye algunos ítems acerca de la calidad de servicio que va a recibir este datagrama. Actualmente, en esta versión de IP, este campo no es utilizado y su valor suele ser 0. 0 4 8 16 31 C A B E C E R A vers longc tipo servicio identificación tiempo vida longitud total flags protocolo desp. fragmento checksum de la cabecera dirección IP fuente dirección IP destino opciones IP (opcional) Relleno DATOS Figura 4: Formato de un datagrama IP. • Longitud total: Como su nombre indica, define el tamaño total del datagrama (cabecera + datos) en bytes. • Identificación: Es un entero de 16 bits que identifica a este datagrama y lo distingue de otros datagramas que hemos enviado. Es una especie de número de secuencia que se increme nta cada vez que IP envía un datagrama. • Flags + Desplazamiento de fragmento: Estos campos incluyen información útil para el mecanismo de fragmentación de datagramas. Cuando un datagrama cruza una pasarela y al otro lado existe una red con un MTU inferior al tamaño del datagrama, la pasarela lo fragmenta en trozos. Estos fragmentos son datagramas que viajan hacia el destino de forma independiente, donde son recogidos por el protocolo IP para reconstruir el datagrama original. 5 • Tiempo de vida (TTL): Define el tiempo de que dispone el datagrama para llegar a su destino, con el fin de evitar la existencia de datagramas que, por errores en el encaminamiento, estén dando vueltas indefinidamente en la red. Cada vez que el datagrama cruza una pasarela, este campo es decrementado en una unidad, de forma que cuando alcanza el valor nulo, es eliminado de la red. • Protocolo: Identifica el protocolo al que pertenecen la información almacenada en el campo de datos del datagrama. De forma que cuando se recibe un datagrama dirigido a nuestra máquina, y después de realizar las comprobaciones pertinentes, el protocolo IP debe saber a quién entrega los datos que lleva dicho datagrama. Así, para los protocolos ICMP, UDP y TCP los valores de este campo serán 1, 17 y 6 respectivamente. • Checksum de la cabecera : En este campo se almacena un checksum de los campos de la cabecera. Es un mecanismo simple para detectar posibles errores en los campos de la cabecera del datagrama, los cuales podrían provocar situaciones "incómodas" en la red. • Direcciones IP origen y destino : Direcciones origen y destino del datagrama. Aunque el datagrama viaje a través de varias pasarelas, estos campos nunca cambian. • Opciones IP: Este campo es opcional y de longitud variable. Por esto último, es necesario añadir un campo de relleno con el fin de ajustar el tamaño de este campo a múltiplos de 32 bits. El encaminamiento IP. Como habíamos dicho, el protocolo IP debe llevar los datagramas desde el host origen hacia el host destino, cruzando las pasarelas y redes necesarias para tal fin. Por tanto, son las pasarelas las que participan de forma activa en el encaminamiento del datagrama hacia su correcto destino Este encaminamiento se basa en la dirección IP destino del datagrama (campo de la cabecera del mismo). En realidad, se basa fundamentalmente en el campo NetID de la dirección destino, ya que el datagrama se encamina hacia la red destino a la que pertenece el destinatario. Se trata de un encaminamiento distribuido, donde cada pasarela sólo conoce la siguiente en la ruta hacia el destino. No tienen un conocimiento global de la ruta que va seguir el datagrama. Por esta razón, las tablas de encaminamiento de las pasarelas deben estar actualizadas para realizar el encaminamiento lo mejor posible. De hecho, las pasarelas disponen de protocolos específicos que intercambian información de encaminamiento, con el fin de coordinar las mejores rutas en cada momento. El algoritmo de encaminamiento que utilizan las pasarelas y los hosts está basado en una tabla. Esta dispone de una serie de entradas donde se indican las rutas a seguir en función de cada red destino. Antes de enviar un datagrama, consultamos su dirección destino para conocer la red a la que pertenece el host destino, de forma que: 6 • Si coincide con el NetID de una red a la que estamos directamente conectados, entonces se trata de un encaminamiento directo. • En caso contrario, tendremos que utilizar una pasarela. Para ello consultamos nuestra tabla de encaminamiento en busca de una entrada que me indique la siguiente pasarela que hay que utilizar para acercarnos a la red donde se encuentra el destinatario. Esto es un encaminamiento indirecto. • En cualquiera de los dos casos tenemos que enviar el datagrama hacia el host (encaminamiento directo) o pasarela (encaminamiento indirecto) correspondiente. El envío del datagrama requiere los servicios de ARP, para adivinar la dirección hardware y así poder encapsular el datagrama en una trama. Formato de la tabla de encaminamiento. Las tablas de encaminamiento IP están formadas por entradas que, en su versión más sencilla, tienen sólo dos campos: El NetID de la red que queremos alcanzar y la dirección IP de la pasarela que debemos utilizar para llegar a ella. Sin embargo, existen otros tipos de entradas que facilitan la implementación de las mismas y que su interpretación es un poco diferente: • Ruta por defecto: Se refiere al encaminamiento por defecto, de forma que si ninguna entrada de la tabla satisface el encaminamiento de un datagrama, entonces se aplica el encaminamiento por defecto especificado en esta entrada. En el primer campo de la entrada de la tabla aparece el símbolo “Default ” para indicar que se trata de una entrada de este tipo, y en el segundo campo se encuentra la dirección IP de la pasarela que por defecto debemos usar2 . • Rutas específicas: Aunque el encaminamiento está basado en la identificación de las redes y no de los hosts, esta entrada permite indicar un encaminamiento específico para un host destino determinado. Se utiliza para propósitos muy específicos. En el primer campo se coloca la dirección del host destino, y en el segundo la pasarela a utilizar. Algoritmo de encaminamiento IP. Veamos el algoritmo de encaminamiento que tanto un host como una pasarela deben implementar dentro del protocolo IP: 1. Partiendo de la dirección IP destino del datagrama, extraemos el identificador de red, IN, y el identificador del host, IH. 2. Si IN coincide con el NetID de cualquier red que tengamos directamente conectada, encaminamiento directo, entonces enviamos el datagrama directamente al host destino. Para ello encapsulamos el datagrama dentro de una trama, cuya dirección hardware destino averiguaremos vía ARP. Se trata de un host perteneciente a nuestra red IP. 2 Ayudan a reducir el tamaño de las tablas. Son muy útiles en las tablas de encaminamiento de los hosts que pertenecen una red IP con una única pasarela. 7 3. Si no, si IH aparece en la tabla de encaminamiento como una entrada de ruta específica, usaremos la pasarela asociada como destinatario del datagrama, apoyándonos en ARP. 4. Si no, si IN aparece como una entrada en la tabla de encaminamiento, entregaremos el datagrama al a pasarela especificada en ella. 5. Si no, si en la tabla de encaminamiento existe una ruta por defecto, la usaremos para encaminar nuestro datagrama. 6. Si no, entonces existe un error que debemos notificar, descartando el datagrama. El protocolo ICMP Como hemos visto el cometido del protocolo IP es el transporte de datagramas desde un host origen a otro cualquiera en Internet. El servicio que realiza IP es un servicio sin conexión, por lo que no se garantiza ningún tipo de calidad de servicio, pudiendo ocurrir la pérdida de datagramas, su entrega desordenada, errores en los mensajes que transporta, etc. Cuando un datagrama viaja hacia su destino tendrá que atravesar una serie de pasarelas (routers), las cuales procesan el datagrama para dirigirlo adecuadamente hacia su destino. Si una pasarela no puede encaminar ese datagrama, o bien detecta alguna condición especial en la que se ve incapacitada para hacerlo (congestión de red, líneas fuera de servicio, etc.), entonces ese datagrama se pierde. Estas y otras circunstancias en el tratamiento de los datagramas en su viaje hacia el destino, hacen necesario la creación de un mecanismo que, al menos, informe de estas situaciones al host origen, para que sea consciente de los problemas que ha sufrido el datagrama que ha enviado y, si procede, tome las acciones oportunas. De aquí nace el protocolo ICMP. El protocolo ICMP (Internet Control Message Protocol), es un mecanismo que informa de la aparición de errores en la manipulación de los datagramas. Siempre que una pasarela detecte un error o excepción en un datagrama, utiliza el protocolo ICMP para informar al host origen de la circunstancia. ICMP no realiza ninguna acción para corregir el error que se haya producido, solamente se encarga de comunicarlo al host origen para que éste realice las acciones oportunas para corregir el error. Originalmente, ICMP fue diseñado como un protocolo para las pasarelas, sin embargo los host también lo pueden utilizar. Los mensajes ICMP van encapsulados en datagramas IP. El destino del mensaje ICMP no será la aplicación del usuario en el host destino, sino que deberá ser interpretarlo por su módulo ICMP. Si un mensaje ICMP afecta a una aplicación del usuario, ICMP deberá articular los mecanismos necesarios para comunicar a la aplicación el evento ocurrido. Aunque este protocolo fue diseñado para detectar las incidencias que se producen en el transporte de un datagrama hacia el host destino, no todas ellas pueden ser detectadas. Entre estas causas se encuentra la pérdida de un datagrama que lleva un mensaje ICMP. 8 En este punto, podríamos pensar que para solucionar este problema, esta pérdida podría ser notificada con otro mensaje ICMP. Más que solucionar el problema, lo estaríamos agravando cuando la razón de esa pérdida sea una congestión en la red. Por eso, NO SE PERMITE la notificación de mensajes ICMP causados por la pérdida de datagramas que lleven un mensaje ICMP. Otra norma general que impone este protocolo es que las notificaciones de error se hacen SOLAMENTE al host origen. Formato de los mensajes ICMP. Como habíamos comentado anteriormente, los mensajes de ICMP van encapsulados en datagramas como muestra la Figura 5: Campo Proto. ICMP ICMP = 0x01 Mensaje ICMP Tipo de prot. IP IP = 0x0800 Cabecera IP Campo de datos Direcciones MAC Dir. Destino Dir. Origen 0x800 Campo de datos (MTU = 1500) Cabecera de la trama Ethernet (DIX) Figura 5: Encapsulado de un mensaje ICMP en un datagrama. Aunque veamos que ICMP va encapsulado en un datagrama de IP, eso no quiere decir que ICMP sea un protocolo de nivel superior (nivel de transporte). Se debe considerar como parte de IP, como si fuese una herramienta auxiliar que dispone IP para poder detectar errores en el transporte de los datagramas a sus destinos. Campo tipo 0 3 4 5 8 11 12 13 14 15 16 17 18 Tipo de mensaje ICMP Echo Reply Destination Unreachable Source Quench Redirect Echo Request Time exceeded Parameter Problem Timestamp Request Timestamp Reply Information Request Information Reply Address Mask Request Address Mask Reply Tabla 1: Tipos de mensajes ICMP. 9 Cada tipo de mensaje ICMP tiene su propio formato, aunque todos ellos comienzan con tres campos comunes, el resto puede variar en función del tipo de mensaje: q El campo TIPO identifica el tipo de mensaje ICMP (ocupa 8 bits). En la tabla 1, se muestran los distintas opciones que contempla este protocolo. q El campo CÓDIGO se usa para dar más información acerca del tipo de mensaje ICMP (8 bits). q Y el último campo, contendrá el checksum de todo el mensaje ICMP (16 bits). El cálculo del checksum es el mismo que en IP, solo que en este caso cubre todo el mensaje ICMP. En la tabla 1 se muestran los distintos tipos de mensajes ICMP que considera el protocolo. De todos ellos, los más importantes son los seis primeros, que a continuación pasamos a describir brevemente: q Echo Request y Echo Reply: Son dos mensajes que se usan conjuntamente para determinar la alcanzabilidad de un host o una pasarela. Normalmente son utilizados por los hosts, de forma que estos pueden extraer información acerca del estado del host remoto, el retardo que introduce la red en la entrega de los mensajes y el porcentaje de mensajes perdidos. q Destino inalcanzable (Destination unreachable): Se trata de un mensaje que es generado por una pasarela cuando no puede encaminar un datagrama. Existen diferentes causas que provocan la emisión de este mensaje y que están codificadas en el campo código del mensaje ICMP. El mensaje es dirigido al host que ha enviado el datagrama, y en su interior se especifican los primeros 64 bits del datagrama que lo ha causado. q Source Quench: Es un mensaje que utilizan las pasarelas para frenar el ritmo de inyección de mensajes en la red de un determinado host. Esta situación se produce cuando una pasarela se ve sobrecargada con la recepción de datagramas (una posible situación de congestión) teniendo que descartar algunos por falta de buffers. Cuando se produce esta situación, la pasarela envía un mensaje de este tipo al host origen del datagrama descartado, diciéndole que baje el ritmo de inyección de datagramas ya que en ese momento hay una situación temporal de congestión. q Cambio de ruta (redirect): Este mensaje es utilizado por una pasarela para indicar a un host de su red IP, un cambio en su tabla de encaminamiento, debido a la existencia de otra pasarela en la red que es más idónea que la que está utilizando actualmente. q Tiempo de vida agotado (Time Exceeded): Cuando una pasarela encamina un datagrama, una de sus tareas es decrementar en una unidad el campo TTL de la cabecera del mismo. Si tras la operación el campo vale "0", debe descartar el datagrama y enviar un mensaje ICMP de este tipo hacia el host origen. 10 Echo Request y Echo Reply: Alcanzabilidad de un destino. En esta práctica vamos a desarrollar la base del protocolo ICMP, que sólo va a procesar los mensajes del tipo ICMP ECHO, siendo susceptible de ampliar el código aquí mostrado para procesar el resto de mensajes ICMP. La utilidad de este tipo de mensajes es la de comprobar desde nuestro host si otro host remoto es alcanzable y está operativo. El mecanismo es sencillo, cuando un host/pasarela envía un ECHO REQUEST hacia un host/pasarela remoto, éste debe responder con un mensaje ICMP de tipo ECHO REPLY devolviendo la misma información que portaba el mensaje original (EchoRequest) en el campo de información adicional, y el mismo identificador y número de secuencia del mismo. En la Figura 6 se muestra el formato específico de estos mensajes ICMP. El campo Identificador y Número de secuencia se utilizan para identificar la tanda o serie de mensajes ICMP EchoRequest, y el número de secuencia se utiliza para diferenciar un mensaje de otro dentro de la misma serie. Es decir, si hago una serie de 10 EchoRequest hacia un host destino determinado, a la serie la marco con un identificador (p.ej.: 0) y a cada EchoRequest dentro de la misma con su número de secuencia (p.ej.: del 0 al 9). El campo datos adicionales funciona como relleno para simular datagramas de cualquier tamaño. Aquí podemos introducir cualquier mensaje (un texto ASCII, o lo que queramos). En el mensaje EchoReply correspondiente, se devuelve en este campo exactamente la misma información. 0 31 Tipo (0 u 8) 8 16 Código (0) Checksum Identificador de tanda Número de secuencia Datos opcionales. Figura 6: Formato de los mensajes ECHO Request y ECHO Reply. La máquina destino puede estar en otra red distante, por lo que el mensaje ICMP puede que tenga que atravesar varias pasarelas. Por esta razón, si no obtenemos respuesta cuando le enviamos el mensaje de EchoRequest puede ser debido a varias causas: Perdida del mensaje EchoRequest (mal encaminamiento de una pasarela intermedia, un error de checksum, etc.) o bien el host remoto está fuera de servicio. Puede también ocurrir que la máquina destino esté muy cargada y se demore en mandar el mensaje de respuesta EchoReply. La máquina origen establece un tiempo de respuesta (TimeOut) tras el cuál vuelve a enviar un nuevo mensaje EchoRequest (incrementando el número de secuencia, para distinguirlo del anterior). Aunque es difícil estimar cual puede ser el tiempo razonable para recibir el EchoReply (depende de lo distante que esté la máquina destino, la velocidad de respuesta y lo congestionada que este la red que tiene que cruzar los mensajes) la suma de los TimeOuts de los sucesivos reintentos debe de ser suficiente para que al menos llegue un EchoReply. 11 En mucho sistemas UNIX y también en Windows, existe un comando de usuario que precisamente realiza esta misma operación. Este comando se llama PING y se encarga de enviar una serie de mensajes ICMP de tipo EchoRequest, esperando la llegada de las respuestas correspondientes (mensajes EchoReply). Al final nos indica cuantos mensajes EchoRequest se han enviado y cuantas han sido las respuestas recibidas para indicar el porcentaje de mensajes perdidos. También nos indica el tiempo de round-trip 3 , de cada par EchoRequest-EchoReply recibido, dándonos una idea del retardo que introduce la red entre los dos hosts. Pasos y cuestiones Configuración TCP/IP La orden ipconfig (orden de consola), para Windows 98 y 2000, proporciona información sobre la configuración de la red en nuestra máquina (para cada uno de los adaptadores de red instalados). A continuación se muestra la ayuda correspondiente al uso de este comando: D:\Documents and Settings\mperez>ipconfig /? USO: ipconfig [/?|/all|/renew [adapter]|/release [adapter]|/flushdns| /displaydns|/registerdns|/showclassid adapter | /setclassid adapter [classid] ] donde adapter à nombre de conexión(se permiten comodines * y ? Opciones: /? muestra la ayuda /all muestra toda la información de configuración. /release libera la dirección IP para el adaptador dado. /renew renueva la dirección IP para el adaptador dado. /flushdns purga la caché de resolución de DNS. /registerdns actualiza todas las concesiones y registra DNS. /displaydns muestra la caché de resolución DNS. /showclassid muestra todas las id. de clase dhcp permitidas. /setclassid modifica la id. de clase dhcp. De manera predeterminada se muestra solamente la dirección IP, la máscara de subred y la puerta de enlace para cada adaptador enlazado con TCP/IP. Para Release y Renew, si no hay ningún nombre de adaptador especificado, se liberan o renuevan las concesiones de dirección IP enlazadas con TCP/IP. Para Setclassid, si no hay ClassId especificada, se quita ClassId. Ejemplos: > ipconfig ... muestra información > ipconfig /all ... muestra información detallada > ipconfig /renew ... renueva todos los adaptadores > ipconfig /renew EL* ... renueva conexiones cuyo no mbre comience con EL > ipconfig /release *Con* ...libera todas las conexiones que coincidan por ejemplo: 3 Es el tiempo transcurrido desde que se envía un mensaje hasta que se recibe su respuesta. También conocido como tiempo de ida y vuelta. 12 "Conexión de área local 1" o "Conexión de área local 2" La orden ipconfig, que se invoca desde una ventana MS-DOS (Inicioà Programasà AccesoriosàSimbolo del Sistema), ofrece entre otras cosas la siguiente información: • Dirección de adaptador de red: Es la dirección física que corresponde a la tarjeta de red (Ethernet en nuestro caso) que está instalada en nuestro computador y nos facilita el acceso a la red. • Dirección IP: Dirección IP asignada a nuestra máquina, bien de forma permanente, o bien de forma dinámica mediante el protocolo DHCP. • Máscara de subred: Indica qué parte de la dirección IP identifica la red, y qué parte identifica al computador (a un adaptador de red). • Puerta de enlace predeterminada : Dirección IP del router que conecta nuestra LAN con el exterior (Internet). (1) La orden ipconfig Ejecuta la orden ipconfig y completa la información de la tabla siguiente: Tabla 1.1 Dirección física del adaptador Ethernet Dirección IP Máscara de subred Dirección IP del router (puerta de enlace) Cuestión 1.1. Con la información obtenida, podrías comentar a que clase de direcciones IP pertenece la red a la que está conectado tu computador. Comenta brevemente la respuesta y calcula la dirección de tu red (NetID) 13 (2) Los paquetes IP Con el analizador de protocolos, captura una sesión de paquetes IP generados al solicitar al navegador Web el acceso a la página www.redes.upv.es. Para ello se deberá filtrar el resto de tráfico, quedándonos únicamente con los paquetes generados por esta acción. Analiza la secuencia de paquetes IP capturados y responde a las siguientes cuestiones: Tabla 2.1 Identificador TTL Source IP Destination IP Paquete n. 1 Paquete n. 2 Paquete n. 3 Paquete n. 4 Paquete n. 5 Cuestión 2.2 Si el campo identificador determina la secuencia de paquete enviados por un host. ¿Los identificadores de los paquetes IP enviados por nuestra máquina son consecutivos? y los enviados por el servidor Web ?. Explica brevemente las respuestas. Cuestión 2.3 Con respecto al campo TTL (Time To Live) de la cabecera IP de los paquetes capturados ¿son siempre iguales?, ¿Todos los paquetes IP que envía una máquina tienen el mismo TTL? Explica brevemente las respuestas. Cuestión 2.4 Tras analizar los campos de la cabecera IP Opciones y Tipo de servicio (Type of Service) de los paquetes capturados, ¿ a qué conclusión llegas? 14 (3) Fragmentación IP No podemos observar la fragmentación que se produce en los routers pero podemos utilizar un pequeño truco para generar fragmentación en la propia interfaz del computador. Desde una ventana de DOS ejecutamos la orden siguiente (previamente habremos iniciado una captura de tramas con el filtro “icmp” para recoger todo el tráfico generado): C:\> ping –n 1 –l 2000 www.redes.upv.es4 Con ello estamos forzando a nuestro computador al envío de un mensaje de más de 2000 bytes al destino especificado. Como estamos conectados a una red Ethernet cuya MTU es de 1500 bytes, el envío solicitado exigirá la fragmentación del mensaje en dos paquetes IP. Compara las cabeceras de ambos fragmentos, fijándote especialmente en los campos long. total, flags, y desplaz. Fragmento. Primer fragmento: Versión longc tipo servicio long total Identificación flags desplaz. Fragmento Tiempo protocolo vida Dirección IP fuente checksum de la cabecera Dirección IP destino Opciones (variable) Segundo fragmento: Versión longc tipo servicio long total Identificación flags desplaz. Fragmento Tiempo protocolo vida Dirección IP fuente checksum de la cabecera Dirección IP destino Opciones (variable) 4 Al ejecutar la orden ping, la estudiaremos más adelante en esta práctica, se fuerza el envío de un paquete IP que transporta un mensaje ICMP en su interior. 15 Cuestión 3.1 ¿ Cuál es el valor del campo protocolo de la cabecera de ambos segmentos?. ¿Tiene que ser el mismo para ambos fragmentos?. ¿Cuál es el valor del campo offset del segundo fragmento 5 ?. Calcula el tamaño del mensaje que deberíamos enviar, utilizando la orden ping, para que se generen 3 fragmentos de tamaño máximo. Campo protocolo El mismo ? Campo Offset Tam. de mensaje (4) El comando ROUTE El comando ROUTE permite la manipulación de la tabla de encaminamiento de nuestro sistema. Cuando se invoca el comando sin ningún argumento se muestra la ayuda del comando: E:\>route Manipula tablas de enrutamiento de red. ROUTE [-f] [-p] [comando [destino] [MASK máscara_red] [puerta_enlace] [METRIC métrica] [IF interfaz] -f Borra las tablas de enrutamiento de todas las entradas de puerta de enlace. Si se usa junto con uno de los comandos, se borrarán las tablas antes de ejecutarse el comando. -p Cuando se usa con el comando ADD, hace una ruta persistente en los inicios del sistema. De manera predeterminada, las rutas no se conservan cuando se reinicia el sistema. Se pasa por alto para todos los demás comandos, que siempre afectan a las rutas persistentes apropiadas. Esta opción no puede utilizarse en Windows 95. comando Uno de los siguientes: PRINT Imprime una ruta ADD Agrega una ruta DELETE Elimina una ruta CHANGE Modifica una ruta existente destino Especifica el host. MASK Especifica que el siguiente parámetro es la máscara de red máscara_red Especifica un valor de máscara de subred para esta entrada de ruta. Si no se especifica, se usa de forma predeterminada el valor 255.255.255.255. puerta_enlace Especifica la puerta de enlace. interfaz El número de interfaz para la ruta especificada. METRIC Especifica la métrica; por ejemplo, costo para el destino. Ejemplos: > route PRINT > route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2 Si no se indica IF, intentará buscar la mejor interfaz para una puerta de enlace determinada. > route PRINT > route PRINT 157* .... Sólo imprime las que coincidan con 157* > route DELETE 157.0.0.0 > route PRINT 5 Recuerda que la unidad que se expresa en este campo es una palabra de 8 octetos. 16 Imprime la tabla de encaminamiento de tu computador y rellena la siguiente tabla: Tabla 4.1 Destino de Red Máscara de red Puerta de acceso Interfaz Métrica 1. 2. 3. 4. 5. 6. 7. 8. Cuestión 4.1 Explica la utilidad de cada una de las entradas de la tabla de encaminamiento. Significado de la entrada de encaminamiento 1. 2. 3. 4. 5. 6. 7. 8. 17 Cuestión 4.2 Identifica la entrada de la tabla que corresponde con la entrega directa (direct delivery) y elimínala. A continuación invoca el comando ping: C:\> ping zoltar.redes.upv.es Explica lo que ha ocurrido y vuelve añadir la entrada que has eliminado para volver a la situación anterior. Cuestión 4.3 Repite lo mismo que en la cuestión anterior, pero en este caso se trata de eliminar la entrada por defecto. Modifica la tabla de encaminamiento para que la entrada por defecto apunte a una máquina del laboratorio y no al router. Invocar el comando ping para acceder a una máquina perteneciente a una red IP remota (ej.: www.uv.es). Usando el Analyzer, comprueba que todo el tráfico que se genera hacia el exterior se dirige a una máquina que no es el router y por tanto no es posible la comunicación. (5) Dirección física y dirección IP Invoca el comando ping especificando como host destino una máquina del propio laboratorio (pertenece a la misma subred) C:\> ping –n 1 zoltar.redes.upv.es y captura el tráfico generado. Rellena los siguientes campos con la información obtenida de la cabecera IP de los paquetes ICMP: Tabla 5.1 Dirección Física Destino Dirección IP Destino Pregunta Respuesta 18 Cuestión 5.1 En el paquete de pregunta: ¿La dirección física destino y la dirección IP destino corresponden a la misma máquina? ¿Por qué? Ahora repite el proceso para una máquina externa (en otra red o subred) C:\> ping –n 1 www.uv.es y captura el tráfico generado. Rellena los siguientes campos con la información obtenida de la cabecera IP de los paquetes ICMP: Tabla 5.2 Dirección Física Destino Dirección IP Destino Pregunta Respuesta Cuestión 5.2 En el paquete de pregunta: ¿La dirección física destino y la dirección IP destino corresponden a la misma máquina? ¿Por qué? 19 (6) La orden ping Mediante la orden ping (se ejecuta desde una ventana MS-DOS) se obtiene una estimación del tiempo de ida y vuelta de un paquete, desde la estación origen a una estación destino que se especifica. Para ello se almacena el instante de tiempo en el que se envía el paquete y cuando llega la respuesta al valor almacenado se le resta del tiempo actual. El funcionamiento detallado de la orden ping será estudiado más adelante en el curso cuando se introduzcan los protocolos IP (Internet Protocol) e ICMP (Internet Control Message Protocol). Otras utilidades de la orden ping son: q Averiguar si un destino está operativo, conectado a la red y sus protocolos TCP/IP en funcionamiento. q Conocer la fiabilidad de la ruta entre origen y destino (calculando el porcentaje de paquetes que obtienen respuesta). Ejemplo: C:\>ping www.upc.es Haciendo ping a www.upc.es [147.83.20.2] con 32 bytes de datos: Respuesta Respuesta Respuesta Respuesta desde desde desde desde 147.83.20.2: 147.83.20.2: 147.83.20.2: 147.83.20.2: bytes=32 bytes=32 bytes=32 bytes=32 tiempo=23ms tiempo=20ms tiempo=31ms tiempo=24ms TTL=248 TTL=248 TTL=248 TTL=248 Estadísticas de ping para 147.83.20.85: Paquetes: enviados = 4, Recibidos = 4, perdidos = 0 (0% loss), Tiempos aproximados de recorrido redondo en milisegundos: mínimo = 20ms, máximo = 31ms, promedio = 24ms La orden ping admite un serie de opciones, algunas de las más útiles se muestran a continuación: ping [-t] [-a] [-n cantidad] [-l tamaño] [-f] [-i TTL] [-v TOS] [-r cantidad] [-w Tiempo de espera agotado] lista de destino Opciones: -t Solicita eco al host hasta ser interrumpido. Para ver estadísticas y continuar: presione Ctrl-Pausa/Inter. -a -n -l -f -i -v -r -w cantidad tamaño TTL TOS cantidad tiempo Para interrumpir: presione Ctrl-C. Resuelve direcciones a nombres de host. Cantidad de solicitudes de eco a enviar. Tamaño del búfer de envíos. No fragmentar el paquete. Tiempo de vida. Tipo de servicio. Registrar la ruta para esta cantidad de saltos. Tiempo de espera de respuesta en milisegundos. 20 Haz un ping a las direcciones siguientes: herodes.redes.upv.es (servidor dentro del Laboratorio de Redes), www.upv.es (servidor web de la UPV), www.ua.es (servidor web de la Universidad de Alicante), www.ono.es (servidor web comercial), www.berkeley.edu (servidor web de la Universidad de California en Berkeley). Anota los resultados en la tabla siguiente Tabla 6.1 Paquetes Tiempo de ida y vuelta (ms) Enviados Recibidos Perdidos Mínimo Máximo Medio herodes.redes.upv.es www.upv.es www.ua.es www.ono.es www.berkeley.edu Los resultados que se obtienen mediante la orden ping son, a veces, difíciles de interpretar. El usuario obtiene poca información de por qué el tiempo de ida y vuelta es mayor en unos destinos que en otros. Incluso cuando no hay respuesta al ping, no es posible conocer cuál es el problema: la máquina referenciada está fuera de servicio, no existe una ruta desde el origen al destino o la saturación de la red es tan alta que no se obtiene respuesta del destino en un tiempo razonable. A pesar de lo dicho, es una de las herramientas que más utilizan los administradores y usuarios de equipos conectados en red. A través de las opciones de la orden ping podemos modificar las características del paquete (datagrama IP) que se enviará a través de la red para sondear al destino. En este punto vamos a modificar uno de esos parámetros. Como recordarás, la cantidad máxima de información que puede transportar una trama Ethernet es de 1500 bytes. Si queremos enviar un bloque de información mayor, deberá dividirse en varias tramas. Cuando en la orden ping especificamos la opción –f estamos solicitando que el bloque de datos asociado al paquete de “ping” no se fragmente en su recorrido desde la estación origen a la estación destino. 21 Cuestión 6.1 Captura las tramas ICMP resultantes de la ejecución de la orden: “ping herodes.redes.upv.es”, y refleja en la siguiente tabla los valores correspondientes a las tramas capturadas: Nº Echo Request Tipo: Código: identificador Secuencia Echo Reply Tipo: Código: identificador Secuencia 1 2 3 4 Repite el ejercicio, y comparando los resultados obtenidos con los de la tabla anterior, indica cuál es la política de asignación de identificadores y secuencias. Cuestión 6.2 Ejecuta la secuencia de órdenes siguiente: ping -l 1000 -f –n 1 ping -l 1500 -f –n 1 ping -l 2000 -f –n 1 herodes.redes.upv.es herodes.redes.upv.es herodes.redes.upv.es ¿Se puede enviar un bloque de datos de 1500 bytes sin fragmentación?.Intenta explicar por qué no se puede enviar sin fragmentación un bloque de información de 1500 bytes. Cuestión 6.3 Averigua por tanteo el tamaño máximo (en bytes) del bloque de datos que puede ser enviado dentro de un solo paquete. Intenta explicar el porqué de esta cifra. 22 (7) La orden tracert La orden tracert (se ejecuta desde una ventana MS-DOS) permite conocer el camino (la secuencia de routers) que debe atravesar un paquete para llegar desde la estación origen a la estación destino. El funcionamiento se basa en gestionar adecuadamente un parámetro de la cabecera de los datagramas IP (el campo TTL: tiempo de vida) y en la información que aportan los mensajes ICMP que generan los routers cuando les llega un datagrama cuyo tiempo de vida se ha agotado (todo ello se estudiará con detalle a lo largo del curso). Por cada nuevo router atravesado por el datagrama se dice que hay un salto en la ruta. Podemos decir, que el programa tracert calcula y describe el número de saltos de una ruta. El programa de MS-DOS tracert realiza la siguiente función: para averiguar cada nuevo salto envía tres datagramas y para cada uno de ellos calcula el valor del tiempo de ida y vuelta. Si en un tiempo máximo (configurable) no hay respuesta se indica en la salida mediante un asterisco. Algunas puntualizaciones: q No hay ninguna garantía de que la ruta que se ha utilizado una vez vaya a ser utilizado la siguiente (cuando estudiemos el protocolo IP veremos por qué). q No hay ninguna garantía de que el camino seguido por el paquete de vuelta sea el mismo que ha seguido el paquete de ida. Esto implica que a partir del tiempo de ida y vuelta que ofrece tracert puede no ser directo estimar el tiempo de ida o de vuelta por separado ( si el tiempo que tarda el paquete en ir desde el origen hasta el router es de 1 segundo y le tiempo que tarda paquete de vuelta es de 3 segundos el valor que nos proporcionará tracert es de 4 segundos) Monitoriza los mensajes ICMP correspondientes a la orden Tracert www.upv.es Y rellena la siguiente tabla: Nº Tipo: identificador Petición Código: Secuencia TTL 1 2 3 4 5 6 23 Tipo: Host origen Respuesta Código: Datos Cuestión 7.1 ¿Qué tipo de mensajes ICMP se observan? Basándote en los mensajes anteriores, escribe el algoritmo que emplea tracert Ejecuta la orden tracert para los mismos destinos del ejercicio 6 y anota en la tabla siguiente el número de saltos y el nombre y direcció n IP de los routers que se atraviesan. Incluye también la dirección IP de la máquina destino. Tabla 7.1 Saltos Routers en el camino (nombre y dirección IP) herodes.redes.upv.es www.upv.es www.ua.es 24 www.ono.es www.berkeley.edu 25