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.
Buen aporte, gracias!
RépondreSupprimerExcelente explicación¡
RépondreSupprimerGracias por compartir, buen aporte!!
RépondreSupprimerSaludos
Gracias!
RépondreSupprimer