Chương 2 CễNG NGHỆ IP
3.2.1.3 Thiết kế lớp đối tượng[5]
Hỡnh 3.14 Lớp đối tượng
1. Đối tượng Oid (Object Indentifier Class): Lớp nhận biết đối tượng Oid cú chức năng phõn tớch và thực hiện những tương tỏc xử lý đối với cấu trỳc thụng tin quản lý SMI. Bao gồm:
Khởi tạo đối tượng từ 1 xõu chuỗi đầu vào (VD: 1.3.6.1.2.1.4.20) theo cấu trỳc quy định của hệ thống bảng MIB.
Thực hiện cỏc tương tỏc đối với cỏc đối tượng Oid theo quy định của cấu trỳc thụng tin quản lý SMI. Như đĩ trỡnh bày ở trờn, cấu trỳc thụng tin quản lý SMI cú những đặc thự riờng biệt, vỡ vậy việc tương tỏc giữa cỏc kiểu cấu trỳc này phục vụ quỏ trỡnh phõn tớch và tớnh toỏn là cần thiết và là 1 phần trong nhiệm vụ của đối tượng Oid.
Thực hiện cỏc chức năng tiện ớch hỗ trợ việc phõn tớch cỳ phỏp của đối tượng Oid. 2. Đối tượng Vb (Variable Binding): Thể hiện lớp đối tượng Object Value, danh sỏch trường Variable Binding trong giao thức SNMP được thể hiện như 1 mảng của những đối tượng Object
được. Như vậy Vb Object thể hiện đầy đủ 1 cấu trỳc địa chỉ đi kốm với thụng số giỏ trị của địa chỉ đú trờn 1 thiết bị cụ thể. Bao gồm cỏc thuộc tớnh và tương tỏc sau:
Thuộc tớnh:
Oid: Thuộc lớp Oid Value: Con trỏ đối tượng
Tương tỏc:
Vb() và ~Vb(): Khởi tạo và hủy lớp đối tượng Cỏc tương tỏc cập nhật giỏ trị thuộc tớnh
3. Đối tượng Pdu: Thể hiện lớp đối tượng PDU trong gúi giao thức SNMP. Chịu trỏch nhiệm quản lý cỏc thụng số cấu hỡnh phần PDU của giao thức SNMP trong quỏ trỡnh tương tỏc yờu cầu và phỳc đỏp thụng tin.
Thuộc tớnh:
Pdu_Type: Thể hiện trường PduType trong cấu trỳc. Request_ID: Thể hiện trường RequestID trong cấu trỳc. Error_Index: Thể hiện trường ErrorIndex trong cấu trỳc. Error_Status: Thể hiện trường ErrorStatus trong cấu trỳc. Vbs: Con trỏ trỏ tời địa chỉ của mảng Vb (Variable Binding) Vb_Count: Số lượng đơn vị Variable Object trong mảng Vb. Vbs_Size: Kớch cỡ của mảng Vb.
Tương tỏc:
Pdu() và ~Pdu(): Khởi tạo và hủy lớp đối tượng Cỏc tương tỏc cập nhật giỏ trị thuộc tớnh
4. Đối tượng Udp: Thiết lập cỏc thụng số cho giao thức UDP chuẩn bị thực hiện quỏ trỡnh gửi nhận dữ liệu. Bao gồm:
Thuộc tớnh:
IP: Địa chỉ IP của thiết bị tiếp nhận yờu cầu
Port: Thụng số cổng gửi, nhận gúi dữ liệu. Giao thức UDP sử dụng 2 cổng 161 và 162.
Tương tỏc:
Udp() và ~Udp(): Khởi tạo và hủy lớp đối tượng Cỏc tương tỏc cập nhật giỏ trị thuộc tớnh
5. Đối tượng Target: Thể hiện lớp đối tượng Header của giao thức SNMP. Chịu trỏch nhiệm quản lý cỏc thụng số cấu hỡnh phần Header của giao thức SNMP trong quỏ trỡnh tương tỏc yờu cầu và phỳc đỏp thụng tin.
Read_Community: Thiết lập tờn cộng đồng cho giao tiếp đọc dữ liệu Write_Community: Thiết lập tờn cộng đồng cho giao tiếp ghi dữ liệu
TimeOut: Xỏc định khoảng thời gian ngừng thiết lập kết nối khi kết nối khụng thành cụng.
Retries: Xỏc định số lần thử thiết lập kết nối
Version: Xỏc định Version của giao thức SNMP (version1 hoặc 2 hoặc 3) UDP: Lớp đối tượng xỏc định địa chỉ theo giao thức UDP.
Tương tỏc:
Target() và ~Target(): Khởi tạo và hủy lớp đối tượng Cỏc tương tỏc cập nhật giỏ trị thuộc tớnh
6. Đối tượng Snmp: Đối tượng quản trị giao thức, thực hiện cỏc tương tỏc dựa trờn cỏc lớp đối tượng PDU và Target để trao đổi thụng tin giữa cỏc thiết bị. Bao gồm cỏc tương tỏc sau:
Thuộc tớnh:
PDU: Trường PDU trong cấu trỳc giao thức SNMP thuộc lớp đối tượng PDU.
Target: Trường Header trong cấu trỳc giao thức SNMP kốm theo cấu trỳc địa chỉ UDP thuộc lớp đối tượng Target.
Như vậy Cấu trỳc của giao thức SNMP được kết hợp từ đối tượng PDU và phần Header thuộc đối tượng Target, phần UDP của đối tượng Target mang thụng số địa chỉ phục vụ quỏ trỡnh vận chuyển gúi dữ liệu của giao thức UDP.
Tương tỏc:
Snmp() và ~Snmp(): Khởi tạo và hủy lớp đối tượng.
Invoke(): Hàm thực hiện chức năng chớnh trong việc gửi và nhận gúi dữ liệu của giao thức SNMP. Với 2 đối tượng PDU và Target được thiết lập ở trờn, hàm Invoke() sẽ sử dụng cỏc thụng số của 2 đối tượng này gắn trong 1 buffer kết hợp cựng hàm socket SendTo(....) và
RecvFrom(...) trong thư viện Winsock.h của NetFrameWork để thực hiện gửi và nhận gúi tin theo giao thức UDP.
Get(): Thực hiện tương tỏc Get trong giao thức SNMP để nhận thụng số cấu hỡnh của địa chỉ thụng tin kốm theo. Điều chỉnh trường PDU_Type trong đối tượng PDU (PDU_Type=Get), sau đú gọi hàm snmp_engine().
Get_Next(): Thực hiện tương tỏc Get_Next trong giao thức SNMP để nhận thụng số cấu hỡnh của địa chỉ thụng tin kốm theo. Điều chỉnh trường PDU_Type trong đối tượng PDU (PDU_Type=Get_Next), sau đú gọi hàm snmp_engine().
Set(): Thực hiện tương tỏc Set trong giao thức SNMP để nhận thụng số cấu hỡnh của địa chỉ thụng tin kốm theo. Điều chỉnh trường PDU_Type trong đối tượng PDU (PDU_Type=Set), sau đú gọi hàm snmp_engine().
Response(): Thực hiện tương tỏc Response trong giao thức SNMP để phỳc đỏp yờu cầu. Điều chỉnh trường PDU_Type trong đối tượng PDU (PDU_Type=Response), sau đú gọi hàm snmp_engine().
Trap(): Thực hiện tương tỏc Trap trong giao thức SNMP để thụng bỏo điều chỉnh đặc biệt cho thiết bị quản lý. Lệnh Trap trong chương trỡnh này về bản chất khụng giống lệnh Trap thực tế khi thiết bị Agent muốn gửi thụng bỏo đến thiết bị Manager, vỡ phương thức Trap với cỏc vấn đề phõn tớch thụng số khi thiết bị Manager nhận được dữ liệu là đặc thự theo từng thiết bị, nhà sản xuất đưa ra cỏc quy định cho việc phõn tớch đú vỡ vậy chỳng ta sẽ khụng nghiờn cứu chức năng đú trong chương trỡnh này. Lệnh Trap trong chương trỡnh này hiện tại mang tớnh gửi thụng tin thụng bỏo của thiết bị Agent đến thiết bị Manager. Điều chỉnh trường PDU_Type trong đối tượng PDU (PDU_Type=Trap), sau đú gọi hàm snmp_engine().