Protocolos IP e ICMP - Redes de Computadores

Anuncio
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
Descargar