Mostrando las entradas con la etiqueta encapsulamiento. Mostrar todas las entradas
Mostrando las entradas con la etiqueta encapsulamiento. Mostrar todas las entradas

martes, 28 de abril de 2009

Encapsulamiento IP

Tomaré el ejemplo del post anterior para explicar los campos contenidos en este datagrama de IP, sin tomar en cuenta el encabezado Ethernet, que fue explicado claramente. Entonces tenemos los 60 bytes del datagrama, ordenados en grupos de 8 bytes por renglón para su fácil lectura, y con la numeración en valores hexadecimales:

000000: 45 00 00 3C 82 47 00 00 E..<.G..
000008: 20 01 94 C9 C0 A8 01 01 ......
000010: C0 A8 01 11 08 00 48 5C ...@..H\
000018: 01 00 04 00 61 62 63 64 ....abcd
000020: 65 66 67 68 69 6A 6B 6C efghijkl
000028: 6D 6E 6F 70 71 72 73 74 mnopqrst
000030: 75 76 77 61 62 63 64 65 uvwabcde
000038: 66 67 68 69 fghi

Ahora bien, ¿que es lo que nos dice esta información?

  • Los primeros 4 bits nos indican que es un datagrama versión 4 (IPv4).
  • El siguiente campo nos indica que tiene una longitud de 5 palabras, cada una de 4 bytes; y el mínimo es 5.
  • El tipo de servicio nos indica la calidad de servicio QoS, anteriormente era el campo de precedencia y se cambió para dar lugar al etiquetado de DCSP (Differentiated Services Code Point; RFC 2474); en este caso, al ser un paquete de ICMP no tiene prioridad.
  • La longitud total del datagrama, en este caso 60 bytes.
  • El campo de identificación sirve para distinguir un datagrama de otro.
  • Las banderas nos indican que se puede fragmentar este datagrama si fuera necesario y que es el último fragmento.
  • El offset nos asegura que se utilicen los primeros 8 bytes del encabezado

Los campos subsecuentes están explicados a detalle en el post anterior.

lunes, 20 de abril de 2009

Ejemplo de Encapsulamiento (ilustración del datagrama)

Tomando el caso del ejemplo anterior, el datagrama será analizado en fragmentos de 8 bytes, indicando la longitud de cada campo; recordemos que es un paquete de ICMP encapsulado en IP.

Del byte 0 al 7:




y tenemos la siguiente información de sus campos:



IHL: Especifica la longitud del encabezado de IP en palabras de 32 bits (4 Bytes) y el valor mínimo es 5.

TOS: Type of service, 8 bits, especifica los parámetros para el tipo de servicio solicitado. Los parámetros pueden ser utilizados por las redes para defini el manejo del datagrama durante el transporte. El bit M fue agregado en el RFC 1349.



Total Lenght: es la longitud total del datagrama, en este caso es 0x003C (60 bytes).

Identification: Usado para indentificar fragmentos de un datagrama deaquellos de otro. El módulo de protocolo que origina al datagrama fija el valor del campo de identificación a un valor que debe ser único para el par de Fuente-Destino y protocolo por todo el tiempo que el datagrama estará activo en el sistema de red. El módulo de protocolo de origen de un datagrama completo pone los bits MF y el Fragment Offset a cero.



Fragment Offset, 13 bits: usado para dirigir el reensamblado de un datagrama fragmentado. En este caso es cero porque no hay más fragmentos.

Del byte 8 al 15:




TTL: Time to live, es un temporizador para llevar un control del tiempo de vida del datagrama. Cuando el TTL es decrementado a cero, el datagrama es desechado.

Protocol: este campo especifica el protocolo encapsulado, en este caso el valor es 1, lo que nos indica que se trata de un paquete de ICMP (ping). Consulta los valores en la tabla (click aquí).

Header Checksum: 16 bits de la suma de verificación del encabezado de IP y las opciones IP.

Source IP Address: Es la dirección IP del transmisor, en este caso 192.168.1.1 (0xC0.A8.01.01).

Del byte 16 al 27:




Destination IP Address: es la dirección IP del destino, en este caso 192.168.1.17 (0xC0.A8.01.11).

C, Class y Option: en este caso indican (tabla de valores):

  • 0x0: no copiar

  • 0x00: mensaje de control

  • 0x1000: solicitud de Echo (RFC 792, Summary of Message Types, 8 Echo).


Padding: es de longitud variable y sirve como relleno para asegurar que los datos comienzan tras de una frontera de 32 bits después de la dirección de destino.

Aquí es importante destacar que al tratarse de un mensaje de control (ICMP) se utilizan los bytes del 20 al 27 para información de control; y se usan de la siguiente manera (RFC792):
    20                  21                  22                  23
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type Code Checksum
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Identifier Sequence Number
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Data ...

+-+-+-+-+-

De aquí obtenemos que:

  • byte 20, es un paquete tipo 8 (echo request)
  • byte 21, siempre va a cero
  • byte 22 y 23, es el checksum de ICMP
  • bytes 24 y 25, si el byte 21=0 el identificador ayuda a hacer match entre las solicitudes y las respuestas de eco; puede ser 0 o puede usarse para identificar una sesión.
  • bytes 26 y 27 son para llevar la secuencia de las solicitudes de eco, y quien responde debe usar el mismo número; la secuencia debe incrementarse con cada nueva solicitud (en una instrucción típica de ping se envían 4 paquetes, y pueden enviarse cuantos se desee).

Bytes del 28 al 59 (32 bytes)

Son los datos de relleno que se colocaron dentro del mensaje de Echo, y se trata de una secuencia, del 0x61 al 0x77, y se vuelve a comenzar. Cuando se responde la solicitud de eco se debe incluir exactamente la misma información en el campo de datos.









miércoles, 1 de abril de 2009

Ejemplo de Encapsulamiento

Para comenzar, la dirección de origen usada 192.168.1.1 se escribe así en hexadecimal: C0 A8 01 01

Cuando escribimos el comando:

C:\>ping 192.168.1.1

Este es el paquete de Ping (74 Bytes)como aparece en la red Ethernet, y cada par de números representa un byte (8 bits) de información dentro del frame o paquete:

[sourcecode language='css']
000000: 00 A0 CC 63 08 1B 00 40 : 95 49 03 5F 08 00 45 00 ...c...@.I._..E.
000010: 00 3C 82 47 00 00 20 01 : 94 C9 C0 A8 01 01 C0 A8 .<.G.. ...... ..
000020: 01 11 08 00 48 5C 01 00 : 04 00 61 62 63 64 65 66 .@..H\....abcdef
000030: 67 68 69 6A 6B 6C 6D 6E : 6F 70 71 72 73 74 75 76 ghijklmnopqrstuv
000040: 77 61 62 63 64 65 66 67 : 68 69 wabcdefghi......
[/sourcecode]

donde tenemos que los primeros 14 bytes componen el encabezado Ethernet, y son:

  • 00 A0 CC 63 08 1B la dirección MAC de destino
  • 00 40 95 49 03 5F la dirección MAC de origen
  • 08 00 el campo Tipo de Ethernet (0x0800 IP Datagram)


sigue el datagrama de IP (60 Bytes), que ya sin el encapsulado de Ethernet nos queda así:

[sourcecode language='css']
000000: 45 00 00 3C 82 47 00 00 : 20 01 94 C9 C0 A8 01 01 E..<.G.. ......
000010: C0 A8 01 11 08 00 48 5C : 01 00 04 00 61 62 63 64 ...@..H\....abcd
000020: 65 66 67 68 69 6A 6B 6C : 6D 6E 6F 70 71 72 73 74 efghijklmnopqrst
000030: 75 76 77 61 62 63 64 65 : 66 67 68 69 uvwabcdefghi......
[/sourcecode]

y comienza con un valor 0x4500, el 4 indica que es un paquete de IPv4 y el 5 que el encabezado de IP tiene una longitud de 5 palabras de 32 bits; es decir, 160 bits o 20 bytes.

tenemos una dirección de origen 192.168.1.1 (C0 A8 01 01)
y una dirección de destino 192.168.1.17 (C0 A8 01 11)

y nos quedan 40 bytes de datos IP, que en este caso son de una solicitud de eco (ICMP Echo Request), incluyendo 32 bytes de datos (longitud por default para un paquete de ping).

Este post es un complemento al anterior:

http://ipref.wordpress.com/2008/06/03/encapsulamiento/

y posteriormente pondré una descripción detallada de cada uno de los números presentes en el frame de ejemplo.

sábado, 7 de junio de 2008

Identificando los Componentes de un Datagrama IP.

IP transfiere la información en forma de paquete, el protocolo de internet define el formato de dicho paquete. Las primeras 5 ó 6 palabras de 32 bits son de información de control y se llama header (encabezado).Hay varios campos en un datagrama de IP, por default el encabezado tiene 5 palabras de largo, la sexta es opcional. La longitud del encabezado es variable, así que se incluye un campo llamado IP Header Lenght (IHL) que indica la longitud en pabras. A continuación se explican los campos contenidos en el header de IP y su longitud.



datagram

Version: número de versión (4 bits).

Header Lenght: longitud del encabezado en palabras de 32 bits (4 bits).


Priority and type of service: cómo se debe manejar el datagrama, los primeros 3 bits son de prioridad (8 bits).


Total Lenght: longitud total, encabezado + datos (16 bits).


Identification: valor único de datagrama de IP (16 bits).


Flags: especifica si debe ocurrir frangmentación (3 bits).


Fragment Offset: provee la fragmentación de datagramas para permitir diferentes unidades de transmisión máximas en la red (maximum transmission unit MTU) (13 bits).


Time-to-live (TTL): identifica durante cuanto tiempo será considerado válido el datagrama (8 bits).


Protocol: Protocolo en el siguiente nivel que envió el datagrama (8 bits).


Header Checksum: para verificar la integridad en el encabezado (16 bits).


Source IP Address: dirección IP de origen (32 bits).


Destination IP Address: dirección IP de destino (32 bits).


IP Options: network testing, debugging, security and others (0 o 32 bits si está)


Data: datos del protocolo de la capa superior, longitud variable.

martes, 3 de junio de 2008

La Pila de Protocolos de TCP/IP

Junto al modelo OSI universalmente reconocido, está el estándar abierto de internet, que es la pila de protocolos de TCP/IP.


Este modelo tiene 4 capas, y algunos autores consideran que la capa inferior debería ser dividida en dos, y sus niveles son:


Capa de Aplicación: maneja los protocolos de alto nivel, incluyendo los asuntos de representación, codificación y control de diálogo. Esta capa maneja todo lo relacionado con aplicaciones y que se empaquen los datos adecuadamente para la siguiente capa.


Capa de Transporte: Esta capa maneja la calidad de servicio, confiabilidad, control de flujo y corrección de errores. Uno de sus protocolos es el Transmission Control Protocol (TCP), que provee de comunicaciones de red confiables, orientadas a la conexión, a diferencia de UDP, no orientado a conexión.


Capa de Internet: el propósito de la capa de internet es enviar los paquetes de la fuente de cualquier red en el intenetwork y hacer que lleguen a su destino, sin importar la ruta que tomen para llegar ahí.


Capa de Acceso a la Red: el nombre de la capa engloba muchas cosas y es un poco confuso. También se llama host-to-host network layer. Incluye los protocolos LAN y WAN, y los detalles en las capas física y de enlace de datos del modelo OSI.

Encapsulamiento

Todas las comunicaciones de una red se originan en una fuente y son enviadas a un destino, aquí se explica cómo es el proceso de transmitir la información de un sitio a otro.


Si una computadora A quiere enviar datos a una computadora B, los datos deben ser empacados primero por un proceso llamado encapsulamiento. Este proceso puede pensarse como poner una carta dentro de un sobre, y poner las direcciones correctas del destinatario y el remitente para que sea entregada apropiadamente por el sistema postal.



El encapsulamiento envuelve los datos con la información de protocolo necesaria antes de transitar por la red. Así, mientras la información se mueve hacia abajo por las capas del modelo OSI, cada capa añade un encabezado, y un trailer si es necesario, antes de pasarla a una capa inferior. Los encabezados y trailers contienen información de control para los dispositivos de red y receptores para asegurar la apropiada entrega de de los datos y que el receptor interprete correctamente lo que recibe.