Checksum


El checksum y el CRC son mecanismos para detectar errores en la transmisión de datos que nos ayudan a determinar la integridad de los datos transmitidos por la red. Para ello el emisor realiza una función hash de los datos a transmitir, y el valor hash lo transmite junto con los datos, de esta manera el receptor realiza la misma operación una vez recibido los datos, y compara el valor hash recibido con el valor hash calculado, si los hash son iguales, los datos no han sufrido ninguna alteración en el camino, en cambio si los hash son distintos no se puede asegurar la integridad de los datos recibidos y por tanto son descartados.

Este tipo de comprobaciones las podemos ver en varias capas del modelo TCP/IP e incluso algunas veces podemos llegar a pensar que se realiza demasiadas comprobaciones de manera redundante, entonces ¿por qué existe un checksum en cada una de las capas?

Capa 4 – Nivel de Transporte – TCP/UDP


Tanto en la cabecera de TCP como en la de UDP disponemos de un checksum de dos bytes para la detección de errores. Para calcular este checksum se utiliza el segmento completo, es decir, la cabecera TCP o UDP y los datos de la capa de aplicación. Si se detecta un error en la transmisión de los datos, el protocolo TCP puede solicitar la retransmisión del segmento.

Capa 3 – Nivel de Red – IP


En el protocolo IPv4 nos encontramos dos bytes para la detección de errores en la capa de red. Para calcular este checksum tan solo se utiliza la cabecera del paquete IP, por tanto a diferencia de las comprobaciones de la capa 4, en la capa de red no se tienen en cuenta los datos para la detección de errores. Sin embargo, en el protocolo IPv6 se prescinde del checksum y la protección de integridad se realiza en la capa superior de transporte y en la capa inferior de enlace.

Capa 2 – Nivel de enlace – Ethernet


El estándar más utilizado en redes LAN dispone de cuatro bytes al final de la trama para la detección de errores. El FCS tiene en cuenta toda la trama para realizar el cálculo del checksum, es decir, realizará el cálculo con la cabecera de la trama y los datos de las capas superiores. Si se detecta un error en la transmisión de los datos se descartará la trama sin comunicárselo al emisor.

Como hemos podido ver, cada una de las capas dispone de un checksum para la detección de errores. Sin embargo, aunque pueda parecer redundante cada una de ellas tiene sus funciones:
  • IP no siempre funciona sobre Ethernet, imagina IP sobre RS-232. Por tanto es necesario realizar la detección de errores en capas superiores a la capa de nivel de enlace.
  • TCP/UDP realiza la comprobación de la cabecera TCP/UDP y de los datos de la capa de aplicación pero no de las cabeceras de las capas inferiores.
  • IP no realiza el checksum de los datos, tan solo de la cabecera IP. Por tanto, es necesario que esta comprobación la realice otras capas.
  • Ethernet realiza la comprobación de la trama completa.
  • Cada vez que una nueva cabecera es introducida hay más que comprobar y las capas superiores no ven los bits de las cabeceras de las capas inferiores.
  • Ethernet realiza el checksum cada vez que la trama da un salto, es decir, se recalcula el checksum cada vez que la cabecera Ethernet cambia. Sin embargo, el checksum TCP/UDP se realiza de extremo a extremo, por tanto tan solo se recalcula en el emisor y el receptor del segmento.
  • Si se detecta un error en TCP se solicitará la retransmisión del segmento, sin embargo si se detecta un error en Ethernet se descarta la trama sin comunicárselo al emisor.
Para finalizar, podemos ver que para asegurar la integridad de los datos y tener redes eficientes es necesario realizar una serie de comprobaciones en cada una de las capas del modelo TCP/IP, sin embargo estos cálculos requieren recursos de cómputo que pueden disminuir la eficiencia de la red y que normalmente son calculados por software mediante el driver de la tarjeta de red. No obstante en escenarios de alta capacidad y exigencias siempre se recomienda utilizar tarjetas de red con procesadores de red Asics dedicados para este tipo de operaciones, y estas características son las que marcan la diferencia en cuanto a precio y rendimiento en el mercado de tarjetas de red.

Un saludo amigos.

Commentaires

Enregistrer un commentaire