La suma de verificación de Internet , [ 1 ] [ 2 ] también llamada suma de verificación de encabezado IPv4 es una suma de verificación utilizada en la versión 4 del Protocolo de Internet (IPv4) para detectar corrupción en el encabezado de los paquetes IPv4. Se transporta en el encabezado del paquete IPv4 y representa el resultado de 16 bits de la suma de las palabras del encabezado. [ 3 ]
El protocolo IPv6 no utiliza sumas de verificación en la cabecera. Sus diseñadores consideraron que la suma de verificación de la capa de enlace de todo el paquete , presente en protocolos como PPP y Ethernet , combinada con el uso de sumas de verificación en protocolos de capa superior como TCP y UDP , es suficiente. [ 4 ] De este modo, los enrutadores IPv6 se liberan de la tarea de recalcular la suma de verificación cada vez que el paquete cambia, por ejemplo, al disminuir el contador de límite de saltos en cada salto.
La suma de comprobación de Internet es obligatoria para detectar errores en los paquetes UDP IPv6 (incluida la carga útil de datos).
La suma de verificación de Internet se utiliza para detectar errores en los paquetes ICMP (incluida la carga útil de datos).
Cálculo
El cálculo de la suma de verificación se define de la siguiente manera: [ 5 ]
El campo de suma de verificación es el complemento a uno de 16 bits de la suma en complemento a uno de todas las palabras de 16 bits en la cabecera. Para efectos del cálculo de la suma de verificación, el valor de este campo es cero.
Si no hay corrupción, el resultado de sumar todo el encabezado IP, incluyendo la suma de verificación, y luego calcular su complemento a uno debería ser cero. En cada salto, se verifica la suma de verificación. Los paquetes con una suma de verificación incorrecta se descartan. El enrutador debe ajustar la suma de verificación si cambia el encabezado IP (por ejemplo, al disminuir el TTL). [ 6 ]
El procedimiento se explica en detalle en el RFC 1071 "Cálculo de la suma de verificación de Internet". [ 1 ] En el RFC 1624 "Cálculo de la suma de verificación de Internet mediante actualización incremental" [ 2 ] se presentan optimizaciones para cubrir el caso de los enrutadores que necesitan recalcular la suma de verificación del encabezado durante el reenvío de paquetes cuando solo ha cambiado un único campo.
Algoritmo
El algoritmo de suma de verificación de Internet según la RFC es: [ 7 ]
int checksum ( int count , void * addr ){/* Calcula la suma de verificación de Internet para "count" bytes * comenzando en la ubicación "addr". */ long sum = 0 ; while ( count > 1 ){ sum += * ( unsigned short ) addr ++ ; count -= 2 ; } /* Agrega el byte sobrante, si lo hay */ if ( count > 0 ){ sum += * ( unsigned char * ) addr ; } /* Pliega la suma de 32 bits a 16 bits */ while ( sum >> 16 ){ sum = ( sum & 0xffff ) + ( sum >> 16 ); } long checksum = ~ sum ; }Ejemplos
Cálculo de la suma de comprobación del encabezado IPv4
A continuación se muestra un fragmento truncado de un paquete IPv4. El encabezado se muestra en negrita y la suma de verificación está subrayada.
4500 0073 0000 4000 4011 b861 c0a8 0001c0a8 00c7 0035 e97c 005f 279f 1e4b 8180
Para la suma en complemento a uno, cada vez que se produce un acarreo, debemos sumar 1 a la suma. [ 8 ] Se puede realizar una verificación y corrección de acarreo con cada suma o como un proceso posterior a todas las sumas. Si se genera otro acarreo por la corrección, se suma otro 1 a la suma.
Para calcular la suma de verificación, primero podemos sumar cada valor de 16 bits dentro del encabezado, omitiendo únicamente el campo de suma de verificación. Tenga en cuenta que estos valores están en notación hexadecimal .
Adición inicial:4500 + 0073 + 0000 + 4000 + 4011 + 0000[a] + c0a8 + 0001 + c0a8 + 00c7 = 2479c
La suma con acarreo se realiza sumando el quinto dígito hexadecimal a los primeros 4 dígitos:2 + 479c = 479e
La suma de verificación es entonces el complemento a uno ( NOT bit a bit ) de este resultado:NOT 479e = b861
Este valor de suma de comprobación aparece subrayado en el encabezado del paquete IP original que se muestra arriba.
Verificación de la suma de comprobación del encabezado IPv4
Al verificar una suma de comprobación, se utiliza el mismo procedimiento descrito anteriormente, excepto que no se omite la suma de comprobación del encabezado original. 4500 + 0073 + 0000 + 4000 + 4011 + b861 + c0a8 + 0001 + c0a8 + 00c7 = 2fffd Se suman los bits de acarreo: fffd + 2 = ffff al tomar el complemento a uno (invirtiendo cada bit) se obtiene 0000, lo que indica que no se detecta ningún error. La suma de comprobación del encabezado IP no verifica el orden correcto de los valores de 16 bits dentro del encabezado.
Véase también
Notas
- ↑
0000es el valor de suma de verificación inicial antes del cálculo y también se incluye en los pasos del cálculo.
Referencias
- 1 2 R. Braden ; D. Borman; C. Partridge (septiembre de 1988). Cálculo de la suma de verificación de Internet . Grupo de trabajo de redes. doi : 10.17487/RFC1071 . RFC 1071 .Informativo. Actualizado por RFC 1141 .
- 1 2 A. Rijsinghani, ed. (mayo de 1994). Cálculo de la suma de verificación de Internet mediante actualización incremental . Grupo de trabajo de redes. doi : 10.17487/RFC1624 . RFC 1624 .Informativo. Actualizaciones RFC 1141 .
- ↑ Formato general de datagramas IP
- ↑ Iljitsch van Beijnum (septiembre de 2006). "Partes internas de IPv6" . Cisco.
- ↑ J. Postel , ed. ( septiembre de 1981). PROTOCOLO DE INTERNET - ESPECIFICACIÓN DEL PROTOCOLO DEL PROGRAMA DE INTERNET DE DARPA . IETF . doi : 10.17487/RFC0791 . STD 5. RFC 791. IEN 128, 123, 111, 80, 54, 44, 41, 28, 26.Estándar de Internet 5. pág. 14. Deja obsoleto el RFC 760. Actualizado por los RFC 1349 , 2474 y 6864 .
- ↑ F. Baker , ed. (junio de 1995). Requisitos para enrutadores IP versión 4. Grupo de trabajo de redes. doi : 10.17487/RFC1812 . RFC 1812 .Norma propuesta. Sustituye a las RFC 1716 y 1009. Actualizada por las RFC 2644 y 6633 .
- ↑ Cálculo de la suma de verificación de Internet (Informe). Grupo de Trabajo de Ingeniería de Internet. Septiembre de 1988.
- ↑ "Calcular la suma en complemento a uno de 16 bits" . Archivado del original el 17 de noviembre de 2020.
Enlaces externos
- Suma de verificación del encabezado
- Detección y corrección de errores
- IPv4