Blog what I write

Análisis de una trama IP

post - - 4 replies -

Vamos con ello. Supongamos que hemos instalado en un ordenador un programa que captura todos los paquetes que circulan por una red local. Al cabo de un rato, cogemos toda la información capturada y eliminamos las cabeceras y colas correspondientes a la trama de red local, con lo cuál lo que queda son paquetes IP. Imprimimos el resultado y obtenemos esto:

45 00 00 2c 1f e8 40 00 f8 06 41 7a c1 92 c4 ec 93 53 07 97 00 15 3c bd 82 b4

31 36 92 1d e5 bb 50 12 22 38 eb de 00 00 4d 75 6e 64 6f 0d 0a

Donde cada línea corresponde a un paquete. Cada grupo de dos dígitos corresponde a 8 bits (un byte) expresado en formato hexadecimal e identificando cada byte con el campo que le corresponde en las cabeceras IP y TCP. Los bytes que corresponden a la aplicación, sabemos que transportan información en ASCII.

Para el paquete

45 00 00 2c 1f e8 40 00 f8 06 41 7a c1 92 c4 ec 93 53 07 97 00 15 3c bd 82 b4

31 36 92 1d e5 bb 50 12 22 38 eb de 00 00 4d 75 6e 64 6f 0d 0a (*)

La transcripción sería:

  • 4: Es la versión.
  • 5: Determina la longitud de la cabecera.
  • 00: Clase de servicio.
  • 002c: Longitud total del paquete;

(0*16^3)+(0*16^2)+(2*16^1)+(12*16^0)= 0+0+32+12 = 44bytes

  • 1fe8: ID del paquete.
  • 4000: Flags e indica el posicionamiento de este fragmento dentro del datagrama en conjunto.
  • f8: TTL: Es el tiempo de vida del paquete, un contador hacia atrás, cuando llega a cero el paquete se descarta y se envía un paquete de aviso al emisor. Por cada nodo al que salta decrece en 1 el valor TTL. El total de saltos del paquete antes de ser descartado es de: (15*16^1)+(8*16^0)= 240+8 = 248 saltos
  • 06: Protocolo, Es utilizado por la capa de red, para saber a que protocolo de la capa de transporte le tiene que enviar el datagrama, si al TCP, UDP, etc. En este caso corresponde al TCP.
  • 417a: Checksum. Para el control de errores en la cabecera, el resultado de checksum ha de ser igual a la suma de los bits que forman esta cabecera, si difiere es que ha habido errores en la transmisión, si es igual es que todo ha sido transferido de forma correcta.
  • c1 92 c4 ec: IP del emisor;

1.- Se pasan cada digito a binario, con 0 al inicio si hiciera falta para llegar a 4 dígitos posiciónales.

1100 | 0001 | 1001 | 0010 | 1100 | 0100 | 1110 | 1100

2.- Se agrupan en bytes (8digitos) dando lugar a 4 grupos, cada uno se pasa a decimal.

> 193.146.196.236

93 53 07 97: IP del destinatario;

1001 | 0011 | 0101 | 0011 | 0000 | 0111 | 1001 | 0111

>147.83.7.151

Como la longitud de cabecera es 5, no hay opciones y a continuación vendría la cabecera TCP.

—————–TCP—————–

  • 00 15: Puerto de origen. (1*16^1)+(5*16^0) = 16+5 = 21.
  • Se trata del puerto de envió de ordenes para el servicio del protocolo FTP (file transfer protocol). Si capturamos las tramas de esta conexión, podríamos decodificar el login.
  • 3c bd: Puerto de destino = 15549 (16bits)
  • 82 b4 31 36: Numero de secuencia de 32bits. Identifica el primer byte del campo de datos
  • 92 1d e5 bb: Numero reconocido.
  • 5: Longitud de cabecera de 4bits.
  • 012: Reservado párale futuro (6bits).
  • 22 38: Ventana.
  • eb de: Checksum.
  • 00 00: Puerto de urgencia.

Datos: 4d(m) 75(u) 6e(n) 64(d) 6f(o) 0d(CR) 0a(LF)

CR y LF (Retorno de Carro y Cambio de Línea). Macintosh, utiliza CR. DOS, Windows, y las máquinas NT, utilizan CR LF (ambas, en ese orden).

  • D-JANN

    Hola!!
    Gracias por tan estupendo articulo.

  • Pía

    Genial artículo, gracias!!!!!!

  • http://www.tdbista.com IkerBurguera

    Me ha sido de gran ayuda! De verdad que aprecio este tipo de tutoriales gracias por todo!

    Iker burguera

  • Ximo

    Excelente articulo, es de mucha ayuda!!