다음을 통해 공유


인코딩 및 디코딩된 데이터

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

통신 프로토콜 계층

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

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

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

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

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