Закодированные и декодированные данные
Для отправки данных через коммуникационный носитель, например телефонную линию, данные должны быть сериализованы, то есть преобразованы в строку единиц и нулей, которые передаются последовательно по линии. Сериализация должна выполняться таким образом, чтобы компьютер, получающий данные, смог преобразовать данные обратно в исходный формат. Процесс сериализации называется протоколом связи и управляется программным обеспечением и оборудованием для передачи данных. Существует несколько уровней, на которых преобразуются данные. На следующем рисунке показано значительно упрощенное представление уровней протокола связи.
На приведенном выше рисунке показан уровень приложений на компьютере 1, отправляющий данные для передачи (который обычно состоит из некоторой комбинации текстовых символов и чисел) на слой кодирования и декодирования. Уровень кодирования и декодирования кодирует данные в поток байтов компьютера. На самом низком уровне, аппаратном уровне, оборудование преобразует байты данных в последовательный поток единиц и нулей, который передается по линии на компьютер 2. Аппаратный уровень компьютера 2 преобразует единицы и нули обратно в байты компьютера и передает их на уровень кодирования и декодирования для декодирования. Слой кодирования и декодирования декодирует байты обратно в исходный формат и передает данные на уровень приложения.
Принятый принцип проектирования программного обеспечения заключается в использовании абстракции, то есть процесса описания задачи или объекта с точки зрения его общих параметров, а не описания всех деталей, необходимых для решения задачи, или описания всех деталей объекта. Используя абстракцию, конструктор может указать программный объект, который имеет определенные качества, не заботясь о том, как объект фактически реализован в программном коде. Такая практика оставляет реализацию открытой. Это также упрощает спецификацию и позволяет задавать аксиомы объекта, которые можно доказать при реализации объекта. Затем эти аксиомы можно предположить, если объект используется в другом объекте более высокого уровня. Абстракция является отличительной чертой большинства современных спецификаций программного обеспечения.
Большинство протоколов связи связаны с большой абстракцией. Объекты на более высоких уровнях определяются абстрактно и предназначены для реализации с помощью объектов на более низких уровнях. Например, службе на одном уровне может потребоваться передача определенных абстрактных объектов между компьютерами. Уровень более низкого уровня может использовать правила кодирования для преобразования абстрактных объектов в строки единиц и нулей.
Один из распространенных методов указания абстрактных объектов, предназначенных для последовательной передачи, называется абстрактной синтаксической нотацией 1 (ASN.1). ASN.1 определен в рекомендации CCITT X.208. Один набор правил ASN.1 для представления таких объектов, как строки единиц и нулей, называется Distinguished Encoding Rules (DER) и определен в рекомендации CCITT X.509, раздел 8.7. Это методы кодирования, используемые в настоящее время CryptoAPI.
Дополнительные сведения о функциях кодирования и декодирования см. в разделе Функции кодирования и декодирования объектов.