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