Asn là viết tắt của từ gì
Mình thấy ASN.1 khá quan trọng nhất là trong thiết kế giao thức trao đổi dữ liệu giữa các thiết bị tính toán, đặc biệt là các thiết bị tài nguyên nhỏ. Google tiếng Việt thấy khá ít thông tin về ASN.1. Nội dung bài này sẽ giới thiệu sơ qua về ASN.1.
1. ASN.1 là gì?Tìm kiếm trên google sẽ thấy bài viết từ 2013 của tác giả Mr.datnh trên diền đàn http://laptrinh.vn. Trên wikipedia viết:
Mình sẽ dịch lại như sau:
Từ giờ ta sẽ gọi là kí pháp ASN.1. Một ví dụ đơn giản của kí pháp ASN.1: TestModule DEFINITIONS ::= BEGIN -- Định nghĩa một module HinhChuNhat ::= SEQUENCE { -- Tên của kiểu mô tả đối tượng Hình chữ nhật chieuRong INTEGER, -- Chiều rộng chieuDai INTEGER, -- Chiều dài } -- Kết thúc HinhChuNhat END -- Kết thúc TestModule Ta thấy nó trông giống định nghĩa một cấu trúc trong ngôn
ngữ C thôi. Nhưng thực sự không hoàn toàn giống. Ví dụ: đối tượng hinhA có kiểu là HinhChuNhat với chieuRong = 20, chieuDai = 30 ta cũng chưa thể biết được đối tượng hinhA đó được biểu diễn trên bộ nhớ ra sao, chieuRong, chieuDai sẽ được biểu diễn bằng mấy byte khi cả đối tượng hinhA được biểu diễn. Còn trong ngôn ngữ C chẳng hạn, khi ta định nghĩa một cấu trúc. Ngay từ lúc biên dịch, ta đã biết được mỗi biến kiểu cấu trúc đó, mỗi trường được biểu diễn như thế nào trên bộ nhớ rồi. Tham khảo thêm ở bài về Data Structure Aligment 2. Một số ứng dụng của ASN.1Là ngôn ngữ để định nghĩa các giao thức truyền thông. 3. Làm sao để sử dụng ASN.1ASN.1 definitions + | | +-----------v-----------+ | | | ASN.1 Compiler | | | +-----------+-----------+ | v Encoder/Decoder Như ta đã nó ở trên ASN.1 chia làm 2: phần định nghĩa và phần đinh dạng dữ liệu thực tế. Để có thể sử dụng ASN.1 trong ứng dụng, a. ASN.1 definitionsChứa định nghĩa của toàn bộ các đối tượng sẽ sử dụng ASN.1 trong ứng dụng. b. Encoder/DecoderĐây là source code hoặc binary (ở dạng thư viện.a hoặc .so kèm them các file header) chứa các hàm Encode/Decode dữ liệu. Encode: lấy input là một biến cấu trúc (Structure của ngôn ngữ C chẳng hạn), sinh ra output là một mảng byte. Decode: lấy đầu vào là một mảng byte, sinh ra output là một biến cấu trúc, cái đã dùng để Encode ở bước trên. Bên gửi dữ liệu sẽ Encode và quẳng vào đường truyền. c. ASN.1 CompilerLà phần mềm sẽ đọc file định
nghĩa ASN.1 (file text) rồi sinh ra bộ Encoder/Decoder (các hàm sử dụng để Encoding/Decoding) cho tất cả các kiểu được định trong file đầu vào. |