다음을 통해 공유


인코딩 및 디코딩된 데이터

전화선과 같은 통신 매체를 통해 데이터를 보내려면 데이터를 직렬화된합니다. 즉, 선을 통해 직렬로 전송되는 0과 0의 문자열로 변환되어야 합니다. 데이터를 받는 컴퓨터가 데이터를 원래 형식으로 다시 변환할 수 있도록 Serialization을 수행해야 합니다. serialization을 수행하는 방법은 통신 프로토콜호출되며 소프트웨어 및 데이터 전송 하드웨어 모두에서 제어됩니다. 데이터가 변환되는 몇 가지 수준이 있습니다. 다음 그림에서는 통신 프로토콜 계층의 매우 간소화된 보기를 보여 줍니다.

통신 프로토콜 계층

앞의 그림에서는 컴퓨터 #1의 애플리케이션 계층이 인코딩/디코딩 계층으로 전송할 데이터(일반적으로 텍스트 문자와 숫자의 일부 조합으로 구성됨)를 보내는 방법을 보여 줍니다. 인코딩/디코딩 계층은 데이터를 컴퓨터 바이트 스트림으로 인코딩합니다. 하드웨어 계층이 가장 낮은 수준에서 하드웨어는 데이터의 바이트를 선을 통해 컴퓨터 #2로 전송되는 0의 직렬 스트림으로 변환합니다. 컴퓨터 #2의 하드웨어 계층은 1과 0을 다시 컴퓨터 바이트로 변환하고 디코딩을 위해 인코딩/디코딩 계층으로 전달합니다. 인코딩/디코딩 계층은 바이트를 원래 형식으로 다시 디코딩하고 애플리케이션 계층에 데이터를 전달합니다.

허용되는 소프트웨어 디자인 원칙은 추상화사용하는 것입니다. 즉, 문제를 해결하는 데 필요한 모든 세부 정보를 설명하거나 개체의 모든 세부 정보를 설명하는 대신 일반적인 매개 변수로 문제 또는 개체를 설명하는 프로세스입니다. 디자이너는 추상화 기능을 사용하여 소프트웨어 코드에서 개체가 실제로 구현되는 방식에 대한 우려 없이 특정 품질이 있는 소프트웨어 개체를 지정할 수 있습니다. 이러한 연습은 구현을 열어 둡니다. 또한 사양을 간소화하고 개체를 구현할 때 입증할 수 있는 개체에 대한 공리를 지정할 수 있습니다. 그런 다음 개체가 다른 상위 수준 개체에 사용될 때 이러한 공리를 가정할 수 있습니다. 추상화는 대부분의 최신 소프트웨어 사양의 특징입니다.

대부분의 통신 프로토콜에는 많은 추상화가 있습니다. 상위 계층의 개체는 추상적으로 정의되며 하위 계층의 개체를 사용하여 구현됩니다. 예를 들어 한 계층의 서비스는 컴퓨터 간에 특정 추상 개체를 전송해야 할 수 있습니다. 하위 수준 계층은 인코딩 규칙을 사용하여 추상 개체를 0과 0의 문자열로 변환할 수 있습니다.

직렬로 전송할 추상 개체를 지정하는 일반적인 방법 중 하나는 ASN.1(Abstract Syntax Notation One)호출됩니다. ASN.1은 X.208CCITT 권장 사항에 정의되어 있습니다. 1과 0의 문자열과 같은 개체를 나타내는 ASN.1 규칙 집합을 DER(고유 인코딩 규칙)이라고 하며, CCITT 권장 사항 X.509섹션 8.7에 정의됩니다. 다음은 현재 CryptoAPI에서 사용하는 인코딩 메서드입니다.

함수 인코딩/디코딩에 대한 자세한 내용은 개체 인코딩 및 디코딩 함수참조하세요.