Compartir a través de


Datos codificados y descodificados

Para enviar datos a través de un medio de comunicación, como una línea de teléfono, los datos deben serializarse, es decir, convertirse en una cadena de unos y ceros que se transmiten serialmente a través de la línea. La serialización debe realizarse de tal manera que el equipo que recibe los datos pueda convertir los datos en su formato original. Cómo se logra la serialización se denomina protocolo de comunicación y se controla mediante software y hardware de transmisión de datos. Hay varios niveles en los que se convierten los datos. En la ilustración siguiente se muestra una vista muy simplificada de las capas de protocolo de comunicación.

capas de protocolo de comunicación

En la ilustración anterior se muestra la capa de aplicación del equipo n.º 1 que envía los datos que se van a transmitir (que normalmente constan de alguna combinación de caracteres textuales y números) a la capa de codificación y descodificación. La capa de codificación y descodificación codifica los datos en un flujo de bytes de equipo. En el nivel más bajo, la capa de hardware, el hardware convierte los bytes de datos en una secuencia serie de unos y ceros que se transmiten a través de la línea a Equipo n.º 2. La capa de hardware de Equipo n.º 2 convierte las que y ceros vuelven a bytes del equipo y las pasa hasta la capa de codificación y descodificación para la descodificación. La capa de codificación y descodificación descodifica los bytes en su formato original y pasa los datos hasta la capa de aplicación.

Un principio de diseño de software aceptado es usar abstracción, es decir, el proceso de describir un problema o un objeto en términos de sus parámetros generales en lugar de describir todos los detalles necesarios para resolver el problema o describir todos los detalles de un objeto. Mediante la abstracción, un diseñador puede especificar un objeto de software que tenga cualidades específicas sin preocuparse de cómo se implementa realmente el objeto en el código de software. Esta práctica deja abierta la implementación. También simplifica la especificación y permite indicar axioms sobre el objeto que se puede probar cuando se implementa el objeto. Estos axioms se pueden asumir cuando el objeto se emplea en otro objeto de nivel superior. La abstracción es el sello distintivo de la mayoría de las especificaciones de software contemporáneas.

La mayoría de los protocolos de comunicación implican una buena abstracción. Los objetos de capas superiores se definen de forma abstracta y están diseñados para implementarse mediante objetos en capas inferiores. Por ejemplo, un servicio en una capa podría requerir la transferencia de determinados objetos abstractos entre equipos. Una capa de nivel inferior puede usar reglas de codificación para transformar los objetos abstractos en cadenas de uno y ceros.

Un método común de especificar objetos abstractos destinados a transmitirse en serie se denomina Notación de sintaxis abstracta Uno (ASN.1). ASN.1 se define en la recomendación X.208 de CCITT. Un conjunto de reglas asn.1 para representar objetos como cadenas de uno y ceros se denomina reglas de codificación distinguida (DER) y se define en la recomendación X.509 de CCITT, sección 8.7. Estos son los métodos de codificación usados actualmente por CryptoAPI.

Para obtener más información sobre las funciones de codificación y descodificación, vea Funciones de codificación y descodificación de objetos.