Datos codificados y descodificados
Para enviar datos a través de un medio de comunicación, como una línea telefónica, los datos deben ser serializados, es decir, convertidos en una cadena de uno y ceros que se transmiten en serie a través de la línea. La serialización debe realizarse de tal forma 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 hardware de transmisión de datos y software. 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.
En la ilustración anterior se muestra la capa de aplicación en el 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 codifica o descodifica 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 uno y ceros que se transmite a través de la línea al equipo n.º 2. La capa de hardware del equipo n.º 2 convierte los ceros y los ceros en bytes del equipo y los 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 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 axiomes sobre el objeto que se puede demostrar cuando se implementa el objeto. A continuación, se pueden asumir estos axiomas cuando el objeto se emplea en otro objeto de nivel superior. La abstracción es el distintivo de la mayoría de las especificaciones de software contemporáneas.
La mayoría de 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 diseñados para transmitirse en serie se denomina Notación de sintaxis abstracta Uno (ASN.1). ASN.1 se define en la recomendación CCITT X.208. Un conjunto de reglas ASN.1 para representar objetos como cadenas de uno y ceros se denomina reglas de codificación distintivo(DER)y se define en la recomendación CCITT X.509, 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.