Udostępnij za pośrednictwem


Zakodowane i dekodowane dane

Aby wysyłać dane za pośrednictwem nośnika komunikacyjnego, takiego jak linia telefoniczna, dane muszą być serializowane— czyli konwertowane na ciągi i zera, które są przesyłane szeregowo przez linię. Serializacja musi być wykonywana w taki sposób, aby komputer odbierający dane mógł przekonwertować dane z powrotem na oryginalny format. Sposób wykonywania serializacji jest nazywany protokołem komunikacyjnymi jest kontrolowany przez zarówno oprogramowanie, jak i sprzęt transmisji danych. Istnieje kilka poziomów, na których dane są konwertowane. Poniższa ilustracja przedstawia znacznie uproszczony widok warstw protokołu komunikacyjnego.

warstwy protokołu komunikacyjnego

Na powyższej ilustracji przedstawiono warstwę aplikacji na komputerze #1 wysyłającą dane do przesyłania (zwykle składa się z pewnej kombinacji znaków tekstowych i liczb) do warstwy kodowania/dekodowania. Warstwa kodowania/dekodowania koduje dane do strumienia bajtów komputerów. Na najniższym poziomie warstwa sprzętowa sprzętu konwertuje bajty danych na strumień szeregowy tych i zer przesyłanych przez linię do komputera nr 2. Warstwa sprzętowa komputera #2 konwertuje te i zera z powrotem na bajty komputerów i przekazuje je do warstwy kodowania/dekodowania na potrzeby dekodowania. Warstwa kodowania/dekodowania dekoduje bajty z powrotem do ich oryginalnego formatu i przekazuje dane do warstwy aplikacji.

Akceptowana zasada projektowania oprogramowania polega na użyciu abstrakcji, czyli procesu opisywania problemu lub obiektu pod względem jego ogólnych parametrów, a nie opisywania wszystkich szczegółów niezbędnych do rozwiązania problemu lub opisywania wszystkich szczegółów obiektu. Korzystając z abstrakcji, projektant może określić obiekt oprogramowania, który ma określone cechy bez obawy, w jaki sposób obiekt jest rzeczywiście implementowany w kodzie oprogramowania. Taka praktyka pozostawia otwartą implementację. Upraszcza również specyfikację i umożliwia określenie aksjomów dotyczących obiektu, który można udowodnić podczas implementowania obiektu. Te aksjomy można następnie przyjąć, gdy obiekt jest używany w innym obiekcie wyższego poziomu. Abstrakcja jest znakiem rozpoznawczym większości współczesnych specyfikacji oprogramowania.

Większość protokołów komunikacyjnych obejmuje wiele abstrakcji. Obiekty w wyższych warstwach są definiowane abstrakcyjnie i mają być implementowane przy użyciu obiektów w niższych warstwach. Na przykład usługa w jednej warstwie może wymagać transferu niektórych abstrakcyjnych obiektów między komputerami. Warstwa niższego poziomu może używać reguł kodowania do przekształcania abstrakcyjnych obiektów w ciągi tych i zer.

Jedną z typowych metod określania obiektów abstrakcyjnych przeznaczonych do przesyłania seryjnego jest notacja składni abstrakcyjnej jeden (ASN.1). Usługa ASN.1 jest zdefiniowana w rekomendacji CCITT X.208. Jeden zestaw reguł ASN.1 do reprezentowania takich obiektów jak ciągi i zer jest nazywany reguły kodowania wyróżniającego (DER) i jest zdefiniowany w rekomendacji CCITT X.509, Sekcja 8.7. Są to metody kodowania używane obecnie przez cryptoAPI.

Aby uzyskać więcej informacji na temat funkcji kodowania/dekodowania, zobacz kodowanie obiektów i dekodowanie funkcji.