SET
Một tập hợp các giá trị thuộc một hoặc nhiều kiểu
SET OF
Một tập hợp các giá trị thuộc một kiểu dữ liệu duy nhất
SEQUENCE
Một tập hợp có thứ tự các giá trị thuộc một hoặc nhiều kiểu
SEQUENCE OF
Một tập hợp có thứ tự các giá trị thuộc một kiểu dữ liệu duy nhất
CHOICE
Các giá trị mỗi khi gán giá trị có thể chọn tùy ý trong các giá trị
vd : EthernetAdapterNumber ::= CHOICE {NULL, OCTET STRING }
ANY
Chưa xác định giá trị mà khi thực hiện trao đổi thông tin mới gán giá trị cụ thể, thường qua lệnh
ANY DEFINED BY <tên kiểu>
Kiểu cấu trúc trong ASN.1
Kiểu cấu trúc trong ASN.1
SET
Tập hợp các phần tử không phân biệt thứ tự (kiểu bất kỳ)
Khai báo: UserAccount ::= SET { username [0] VisibleString, password [1] VisibleString, accountNr [2] INTEGER } Gán giá trị: myAccount UserAccount ::= { accountNr 4711, username “John”, password “john123” } 27
Kiểu cấu trúc trong ASN.1
SET OF
Tập hợp các phần tử cùng kiểu và không phân biệt thứ tự
Khai báo:
Keywords ::= SET OF VisibleString
Gán giá trị:
someASN1Keywords Keywords ::= { “INTEGER”, “BOOLEAN”, “REAL” }
Kiểu cấu trúc trong ASN.1
SEQUENCE
Tập hợp các phần tử có phân biệt thứ tự (kiểu bất kỳ)
Khai báo: UserAccount ::= SEQUENCE { username VisibleString, password VisibleString, accountNr INTEGER } Gán giá trị: myAccount UserAccount ::= { username “John”, password “john123”, accountNr 4711 } 29
Kiểu cấu trúc trong ASN.1
SEQUENCE OF
Tập hợp các phần tử có cùng kiểu và có phân biệt thứ tự
Khai báo:
MemberCountries ::= SEQUENCE OF VisibleString AccountRegistry ::= SEQUENCE OF UserAccount
Gán giá trị:
euMembers MemberCountries ::= {
"Austria", "Belgium", "Denmark", "Finland", "France", "Germany", "Greece", "Ireland", "Italy", "Luxembourg", "The Netherlands",
"Portugal", "Spain", "Sweden", "United Kingdom" }
Thẻ (tag)
Dùng để bổ sung vào kiểu dữ liệu để tránh nhầm lẫn về dữ liệu bên nhận
Cặp thẻ : IMPLICIT và EXPLICIT viết trước kiểu dữ liệu
IMPLICIT : ngầm định
EXPLICIT : kiểu dữ liệu kèm theo
Thẻ quy định kiểu dữ liệu
UNIVERSAL n : chấp nhận mọi nơi, chuẩn chung
APPLICATION n : cho ứng dụng như SNMPv1
PRIVATE n : dùng cho 1 phạm vi quốc gia, tổ chức
vd : counter = [UNIVERSAL 2] IMPLICIT INTEGER
Để tránh nhầm lẫn thứ tự dữ liệu, có thể bổ sung thẻ phụ ngữ cảnh trong ngoặc vuông trước kiểu dữ liệu
vd : counter ::=SET
{counterName [0] IMPLICIT visibleString counterNumber [1] IMPLICIT INTEGER }