Página siguiente Página anterior Índice general

8. Qué aspecto tienen los paquetes

Para el excepcionalmente curioso (y el curiosamente excepcional), aquí tenemos una descripción del aspecto real de un paquete. Hay varias herramientas que miran qué paquetes están entrando y saliendo de su máquina Linux: el más común es «tcpdump» (que comprende más que TCP actualmente). Estos programas se llaman «esnifadores de paquetes» (packet sniffers).

El principio de cada paquete dice a dónde va, de dónde viene, el tipo de paquete, y otros detalles administrativos. Esta parte se denomina «cabecera del paquete». El resto del paquete, contiene los datos a transmitir en sí, y normalmente sel es llama «cuerpo del paquete».

Por lo tanto, cualquier paquete IP comienza con la «cabecera IP»: de al menos 20 bytes de largo. Parece algo como esto: (este diagrama ha sido robado sin ningún tipo de remordimiento de conciencia del RFC 790):

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Versión|  IHL  |Tipo de Servic.|          Tamaño Total         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Identificación        |Flags|  Desplaz. del Fragmento |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Tiempo de Vida |   Protocolo   |    Checksum de la cabecera    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Dirección de Origen                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Dirección de Destino                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Los campos importantes son el Protocolo, que indica si es un paquete TCP (número 6), UDP (número 17) u otra cosa, la Dirección IP de Origen y la Dirección IP de Destino.

Ahora, si el campo de protocolo dice que es un paquete TCP, entonces a esta cabecera IP le sigue inmediatamente una cabecera TCP: la cabecera TCP también tiene al menos 20 bytes de longitud:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Puerto de Origen       |       Puerto de Destino       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Número de Secuencia                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Número de Confirmación                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Deplz. |           |U|A|P|R|S|F|                               |
   |de los | Reservado |R|C|S|S|Y|I|            Ventana            |
   | Datos |           |G|K|H|T|N|N|                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Checksum            |      Puntero de Urgencia      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Los campos más importantes son el puerto de origen y el de destino, que dicen a qué servicio está destinado el paquete (o de cual viene, en el caso de que sea un paquete de respuesta). Los números de secuencia y confirmación (acknowledgement) se utilizan para mantener el orden de los paquetes, y decirle al otro extremos cuántos paquetes se han recibido. Los indicadores (flags) ACK, SYN, RST y FIN (escritos de mayor a menor) son simples bits que se utilizan en la negociación de apertura (SYN) y cierra (RST o FIN) de las conexiones.

Siguiendo a esta cabecera viene el verdadero mensaje que la aplicación envió (el cuerpo del paquete). Un paquete normal puede tener hasta 1500 bytes: esto significa que el mayor espacio que pueden ocupar los datos es de 1460 bytes (20 bytes para la cabecera IP y 20 para la cabecera TCP): alrededor del 97%.


Página siguiente Página anterior Índice general