jueves, 11 de septiembre de 2008

Analizando el datagrama IP


Versión: 4 bits
Siempre vale lo mismo 4 en hexadecimal y 0100 en binario. Este campo describe el formato de la cabecera utilizada. En este caso es la versión 4.



Tamaño Cabecera (IHL): 4 bits
Longitud de la cabecera, en palabras de 32 bits. Su valor mínimo es de 5 para una cabecera correcta, y el máximo de 15. En este caso particular es 5 y multiplicado por 32 bits da como resultado 160 bits o 20 bytes.


Tipo de Servicio: 8 bits
Indica una serie de parámetros sobre la calidad de servicio deseada durante el tránsito por una red. Algunas redes ofrecen prioridades de servicios, considerando determinado tipo de paquetes "más importantes" que otros (en particular estas redes solo admiten los paquetes con prioridad alta en momentos de sobrecarga). Estos 8 bits se agrupan de la siguiente manera. Los 5 bits de menos peso son independientes e indican características del servicio:


Bit 0: sin uso, debe permanecer en 0.
Bit 1: 1 costo mínimo, 0 costo normal.
Bit 2: 1 máxima fiabilidad, 0 fiabilidad normal.
Bit 3: 1 maximo rendimiento, 0 rendimiento normal.
Bit 4: 1 mínimo retardo, 0 retardo normal.
Los 3 bits restantes están relacionados con la precedencia de los mensajes, un indicador ajunto que indica el nivel de urgencia basado en el sistema militar de precedencia (véase Message Precedence) de la CCEB, un organización de comunicaciones electrónicas militares formada por 5 naciones. La urgencia que estos estados representan aumenta a medida que el número formado por estos 3 bits lo hace, y responden a los siguientes nombres.
000: De rutina.
001: Prioritario.
010: Inmediato.
011: Relámpago.
100: Invalidación relámpago.
101: Procesando llamada crítica y de emergencia.
110: Control de trabajo de Internet.
111: Control de red.

Longitud Total: 16 bits
Es el tamaño total, en octetos, del datagrama, incluyendo el tamaño de la cabecera y el de los datos. El tamaño máximo de los datagramas usados normalmente es de 576 octetos (64 de cabeceras y 512 de datos). Una máquina no debería enviar datagramas mayores a no ser que tenga la certeza de que van a ser aceptados por la máquina destino.
En caso de fragmentación este campo contendrá el tamaño del fragmento, no el del datagrama original.

En este caso la longitud total es de 48 octetos, divididos de la siguiente manera: 20 octetos para la cabecera IP y 28 octetos para los datos.

Identificador: 16 bits
Identificador único del datagrama. También se utilizará, en caso de que el datagrama deba ser fragmentado, para poder distinguir los fragmentos de un datagrama de los de otro. El originador del datagrama debe asegurar un valor único para la pareja origen-destino y el tipo de protocolo durante el tiempo que el datagrama pueda estar activo en la red.

En este caso aunque el datagrama no está fragmentado el identificador del datagrama es: 2A96 en hexadecimal, 10902 en decimal y 0010101010010110 en binario.

Indicadores: 3 bits
Actualmente utilizado sólo para especificar valores relativos a la fragmentación de paquetes:

Bit 0: Reservado; debe ser 0
Bit 1: 0=Divisible, 1=No divisible
Bit 2: 0=Ultimo fragmento, 1=Fragmento intermedio (le siguen mas fragmentos)

La indicación de que un paquete es indivisible debe ser tenida en cuenta bajo cualquier circunstancia. Si el paquete necesitara ser fragmentado, no se enviará.

En este caso el campo tiene un valor de 010 en binario, lo que significa que el paquete no es divisible ó no está fragmentado.

Posición de Fragmento: 13 bits
En paquetes fragmentados indica la posición, en unidades de 64 bits, que ocupa el paquete actual dentro del datagrama original. El primer paquete de una serie de fragmentos contendrá en este campo el valor 0.

En este caso el campo tiene un valor de 0000000000000 en binario, indicando que es el primero, pero también que es el único paquete porque no está fragmentado.

Tiempo de Vida (TTL): 8 bits
Indica el máximo número de direccionadores que un paquete puede atravesar. Cada vez que algún nodo procesa este paquete disminuye su valor en, como mínimo, un direccionador. Cuando llegue a ser 0, el paquete no será reenviado.

En este caso el valor es de 128 en decimal, 80 en hexadecimal y 10000000 en binario. Este número es considerado el óptimo para aprovechar el rendimiento de Internet. Con este valor el datagrama es enviado y será decrementado en 1 por cada uno de los nodos por los que pase antes de llegar al destino.

Protocolo: 8 bits
Indica el protocolo de siguiente nivel utilizado en la parte de datos del datagrama. En este caso el protocolo es TCP, 06 en hexadecimal y decimal y 00000110 en binario.

Checksum Cabecera: 16 bits
Checksum de la cabecera. Se recalcula cada vez que algún nodo cambia alguno de sus campos (por ejemplo, el Tiempo de Vida). El método de cálculo (intencionadamente simple) consiste en sumar el complemento a 1 de cada palabra de 16 bits y hacer el complemento a uno del valor resultante. En este caso el campo tiene el valor d7fe en hexadecimal y 1101011111111110 en binario, el cálculo es el siguiente:

Primero: Asumimos que el valor del Checksum es 0000 en hexadecimal.

Segundo: Realizamos la suma de las palabras de 16 bits de la cabecera del protocolo IP.

[Hex] Binario Suma
[4500] 0100010100000000 0100010100000000
[0030] 0000000000110000 0100010100110000
[2a96] 0010101010010110 0110111111000110
[4000] 0100000000000000 1010111111000110
[8006] 1000000000000110 10010111111001100
0010111111001100 + 1 = 0010111111001101
[0000] 0000000000000000 0010111111001101 (Checksum)
[c80d] 1100100000001101 1111011111011010
[9e29] 1001111000101001 11001011000000011
1001011000000011 + 1 = 1001011000000100
[c869] 1100100001101001 10101111001101101
0101111001101101 + 1 = 0101111001101110
[c992] 1100100110010010 10010100000000000
0010100000000000 + 1 = 0010100000000001

Tercero: Realizamos el complemento a uno al valor de la suma.

Suma: 0010100000000001
Complemento a 1: 1101011111111110 [d7fe]

El resultado es el valor del Checksum: d7fe en hexadecimal o 1101011111111110 en binario.

Dirección IP de origen: 32 bits
El valor es c8.0d.9e.29 en hexadecimal, 11001000.00001101.10011110.00101001 en binario y 200.13.158.41 en decimal.

Dirección IP de destino: 32 bits
El valor es c8.69.c9.92 en hexadecimal, 11001000.01101001.11001001.10010010 200.105.201.146

Opciones: Variable
Aunque no es obligatoria la utilización de este campo, cualquier nodo debe ser capaz de interpretarlo. Puede contener un número indeterminado de opciones, que tendrán dos posibles formatos. Este datagrama no cuenta con este campo.

Relleno: Variable
Utilizado para asegurar que el tamaño, en bits, de la cabecera es un múltiplo de 32. El valor usado es cero. Este caso no cuenta con ese campo.

Referencias
http://es.wikipedia.org/wiki/Cabecera_IP
Protocolo de Mensajes de Control de Internet o ICMP (Internet Control Message Protocol)