Resumen

  • La suma TCP cubre el encabezado y los datos TCP, además de un pseudoencabezado conceptual formado con información de IP.
  • Ese pseudoencabezado no viaja como bytes TCP; emisor y receptor lo vuelven a construir.
  • Ayuda a detectar errores y ciertas entregas equivocadas, pero no autentica al emisor ni demuestra la ruta.

La suma de comprobación de un segmento TCP no se limita a lo que aparece entre sus propios campos. Para calcularla, el emisor incorpora las direcciones IP de origen y destino, la identidad del protocolo y la longitud TCP. El receptor reconstruye ese mismo contexto antes de aceptar o rechazar el segmento.

En IPv4, RFC 793 define un pseudoencabezado de 96 bits. Contiene las dos direcciones, un byte cero, el número de protocolo y la longitud TCP calculada. La información ya pertenece al contexto de IP, por lo que TCP no la duplica dentro del segmento. Se suministra a través de la interfaz entre ambas capas.

La razón es evidencial. Una suma sobre los puertos, números de secuencia y datos podría seguir coincidiendo aunque se alteraran las direcciones o el protocolo del paquete envolvente. Al incluir esos campos seleccionados, TCP puede descubrir algunas corrupciones o entregas a un contexto distinto del previsto.

El cálculo es la suma en complemento a uno de palabras de 16 bits, seguida de su complemento a uno. El campo de checksum se trata como cero mientras se calcula. Si el material cubierto tiene un número impar de octetos, se añade un octeto cero solo para completar la última palabra; no se transmite. La longitud TCP cuenta el encabezado TCP y los datos, pero no los doce octetos del pseudoencabezado IPv4.

RFC 9293 mantiene el diseño y exige que el emisor genere la suma y el receptor la compruebe. Cualquier protocolo inferior que transporte TCP debe proporcionar las direcciones, la identidad del protocolo y una forma de determinar la longitud TCP.

En IPv6, el pseudoencabezado mide 320 bits. Incluye las direcciones IPv6, la longitud de la capa superior, tres bytes cero y el valor Next Header que identifica TCP. Si hay encabezados de extensión, se emplea el valor que identifica TCP al final de la cadena, no necesariamente el valor inmediato del encabezado IPv6. Con source routing, las direcciones son las de origen inicial y destino final, no las direcciones transitorias.

Una suma correcta demuestra una coincidencia limitada de los datos cubiertos. No prueba quién envió el segmento, que una conexión esté autorizada ni que el paquete haya seguido una ruta concreta. Tampoco impide que un atacante que modifique el tráfico recalcule la suma. El pseudoencabezado es, en definitiva, un acuerdo entre capas: IP aporta el contexto, TCP lo incluye en su evidencia y el cable no recibe un encabezado adicional.

Fuentes