Mô hình phân lớp và các sơ đồ chức năng a. Chương trình trên máy trạm (Client application)

Một phần của tài liệu XÂY DỰNG PHẦN mềm PHÁT HIỆN và QUẢN lý tài NGUYÊN MẠNG PHỤC vụ CHO VIỆC QUẢN TRỊ tại cục e15 TỔNG cục VI bộ CÔNG AN (Trang 47 - 56)

XÂY DỰNG PHẦN MỀM HỖ TRỢ PHÁT HIỆN VÀ QUẢN LÝ TÀI NGUYÊN MẠNG MÁY TÍNH BỘ CÔNG AN

4.2. Mô hình phân lớp và các sơ đồ chức năng a. Chương trình trên máy trạm (Client application)

Mô hình phân lớp của Client application và các chức năng cụ thể như sau:

Chương trình trên các máy trạm gồm 2 phần chính: Khi chạy lần đầu tiên, bộ phận Register được kích hoạt để thực hiện việc đăng ký license lên máy

Client Application Application

SysInfor

Winsock control Machine

Components

Component Agent

Register

Register winsock

chủ. Sau đó cập nhật lại tham số FirstRun lên registry. Trong những lần chạy sau, phần này không được kích hoạt mà sẽ kích hoạt ngay phần Agent thực hiện các công việc của hệ thống.

Lớp Machine thực hiện việc lấy thông tin hệ thống và truy cập registry lấy thông tin về phần cứng và phần mềm được cài đặt trên máy trạm để lưu trữ vào trong thành phần Components của mình.

Components là một tập (collection) các đối tượng Component, mỗi Component bao gồm nhiều thuộc tính khác nhau.

Lớp SysInfor thực hiện việc theo dừi hệ thống mỏy trạm, phỏt hiện cỏc thay đổi về cấu hình máy trạm để thông báo về máy chủ.

Winsock control thực hiện việc trao đổi thông tin với máy chủ, các thông tin này có thể là một đối tượng Machine chứa đầy đủ thông tin hệ thống, các thông báo sự kiện gửi về máy chủ hay để nhận các lệnh từ máy chủ gửi tới. Một Winsock control khi kết nối đến máy chủ có thể có lỗi trên đường truyền hay từ phía máy chủ, khi đó nó sẽ ở trong trạng thái bận và không thực hiện được kết nối khác khi đường truyền đã thông. Để khắc phục điều này, ta dùng một đối tượng timer sau mỗi khoảng thời gian nhất định sẽ kiểm tra trạng thái của Winsock control, nếu Winsock control ở trạng thái lỗi, không kết nối được thì đóng nó lại và đặt ở chế độ lắng nghe (listern).

Các sơ đồ hoạt động chính của client application:

*36 Sơ đồ thực hiện đăng ký license lên máy chủ:

Yes

No No

No

Yes Yes Start

Kiểm tra tham số FirstRun trong registry

Lần đầu?

Nhập License

Gửi license về máy chủ

Chờ máy chủ xác nhận

Hợp

lệ? L m à

lại?

Cập nhật lại tham số FirstRun

Kích hoạt NMS Agent End

*37 Sơ đồ thực hiện lấy thông tin hệ thống gửi về máy chủ

Lớp Machine xác đinh loại hệ điều hành dùng trên máy trạm và thực hiện lấy thông tin về CPU và RAM bằng các hàm API (xem mã nguồn); thực hiện lấy thông tin về các phần cứng, phần mềm cài đặt trên máy trạm trong Registry của Windows. Tuỳ các hệ điều hành khác nhau mà các thông tin này nằm ở các vị trí khác nhau ở HKEY_LOCAL_MACHINE trong Registry, cụ thể như sau:

Lấy thông tin CPU

Lấy thông tin RAM Truy nhập Registry

Xác định loại hệ điều h nh trên máy à trạm

Đọc thông tin phần cứng trong registry

Đọc thông tin phần mềm trong registry

Đọc thông tin chi tiết về hệ điều h nh trong registryà

Gửi thông tin thu thập được về Server

Application

- Với Windows 9x

+ Các lớp phần cứng lưu trữ trong

System\CurrentControlSet\ Services\Class + Các thuộc tính cụ thể lưu trữ trong

Enum

+ Các thông tin về hệ điều hành lưu trữ trong

SOFTWARE\Microsoft\Windows\CurrentVersion - Với Windows NT, Windows XP

+ Các lớp phần cứng lưu trữ trong

SYSTEM\CurrentControlSet\Control\Class + Các thuộc tính cụ thể lưu trữ trong

SYSTEM\CurrentControlSet\Enum + Thông tin về hệ điều hành lưu trữ trong

SOFTWARE\Microsoft\Windows NT\CurrentVersion - Với Windows 2000

+ Các lớp phần cứng lưu trữ trong

SYSTEM\CurrentControlSet\Control\Class + Các thuộc tính cụ thể lưu trữ trong

SYSTEM\CurrentControlSet\Enum + Thông tin về hệ điều hành lưu trữ trong

SOFTWARE\Microsoft\Windows NT\CurrentVersion

Thông tin về các phần mềm đã được cài đặt trên máy trạm trên tất cả các hệ điều hành windows có thể lấy ở địa chỉ sau:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current Version\Uninstall

Đây là các thông tin mà các phần mềm đăng ký trên windows phục vụ việc uninstall, các thông tin này nói chung là không đầy đủ và có thể có nhiều phần mềm không đăng ký vào đây, tuy nhiên ta có thể lấy một danh sách cơ bản các phần mềm lớn đã được cài đặt, trong thời gian có hạn, tôi chưa tìm

được tài liệu chi tiết về thông tin của các phần mềm cài đặt trên máy tính, đồng thời qua tham khảo các phần mềm lớn như SMS (Microsoft), LanDesk (Intel) thì việc lấy thông tin phần mềm trên máy trạm cũng không được đầy đủ.

Việc tìm kiếm trên cấu trúc cây của registry được tiến hành theo thuật toán tìm kiếm theo chiều sâu (Deep First Search) một cách đệ quy.

b. Chương trình trên máy chủ (Server application)

Mô hình phân lớp và các sơ đồ chức năng của chương trình trên máy chủ như hình sau:

Server application

Threading

Winsock control Machines

Machine

Components Commands

Command

Component

Network

NMSDB

Chức năng cụ thể của các lớp:

Lớp Commands là một tập (Collection) các Command, khi người quản trị ra một yêu cầu đến máy trạm thì sẽ tạo ra một đối tượng Command và đưa vào hàng đợi lệnh Commands, lệnh này được thực hiện bằng cách gửi lệnh đến máy trạm qua Winsock và nhận kết quả từ máy trạm gửi về, sau đó giải phóng khỏi hàng đợi. Một Command đối với một trạm sẽ không được tạo ra khi đang có một Command khác đang chờ kết quả từ trạm đó (đang thực hiện), điều này đảm bảo không bị tranh chấp giữa các yêu cầu.

Trong trường hợp yêu cầu gửi đến máy trạm là lệnh Process thì kết quả Command nhận về là các thông tin hệ thống trên máy trạm, khi đó một đối tượng Machine được tạo ra để lấy thông tin cụ thể và chuyển đối tượng này cho lớp NMSDB cập nhật vào cơ sở dữ liệu.

Lớp Machines là một collection các Machine, dùng để đọc danh sách các máy hiện có trên mạng.

Lớp Network thực hiện việc tìm kiếm các máy trạm đang hoạt động trên mạng, kiểm tra trạng thái các máy trạm biết trước. Việc xác định các máy đang hoạt động trên mạng được tiến hành theo hai cơ chế: quét trong một khoảng địa chỉ IP nhất định và tự động dò tìm bằng các hàm API của Windows (cách này hiệu quả hơn đối với Windows trên nền NT), đồng thời có thể thực hiện quét cổng ở một địa chỉ IP nào đó. Việc kiểm tra trạng thái ở đây, do thời gian có hạn nên tôi chỉ tiến hành theo phương pháp gửi một gói tin ICMP_ECHO đến máy trạm và nhận về gói tin ICMP_ECHO_REPLY để xác định trạng thái máy trạm, theo cách này thì với một số thiết bị như Firewall có thể không xác định được, khi đó ta có thể dùng chức năng quét cổng để xác định trạng thái của trạm. Khi xác định được tên hay địa chỉ IP của một trạm hoạt động trên mạng thì tiến hành lấy các thông tin còn lại như MAC address, Computername, Group,...

Lớp Threading kiểm soát các luồng. Chương trình trên server thực hiện các chức năng quét mạng và kiểm tra trạng thái các trạm mất khá nhiều thời gian, hơn nữa việc thường xuyên kiểm tra trạng thái các trạm phải là trong suốt đối với người sử dụng vì vậy những công việc đó đòi hỏi phải tiến hành trên một luồng riêng. Threading cho phép việc khởi tạo, dừng và huỷ bỏ các luồng một cách thuận tiện, đảm bảo các luồng không bị gọi lặp nhiều lần và mỗi luồng được tạo ra sẽ được đóng lại. Nếu các luồng được tạo ra mà không được đóng lại thích hợp thì rất nguy hiểm vì khi đó các luồng vẫn chiếm thời gian thực của máy.

Lớp NMSDB thực hiện việc giao tiếp với cơ sở dữ liệu bao gồm các công việc chính sau: lấy danh sách các máy hiện có trên mạng, đọc cấu hình một máy bất kỳ ở một thời điểm nào đó, cập nhật một Machine vào cơ sở dữ liệu, cập nhật một sự kiện nào đó xảy ra vào cơ sở dữ liệu, kiểm tra tính hợp lệ và cập nhật các license.

Một số sơ đồ hoạt động chính của Server application:

Sơ đồ thực hiện đăng ký license

License đăng ký

No No

Yes Yes

Kiểm tra tính hợp lệ của License

Hợp lệ?

Thông báo yêu cầu đăng ký

Chờ Server Application xác nhận

Đồng ý?

Gửi thông báo license valid

Cập nhật v o cà ơ sở dữ liệu (trường HaveAgent)

Gửi thông báo ServerReject

Sơ đồ thực hiện dò tìm các máy trạm trên mạng

No

Yes Yes

No

Yes Còn?

ResTemp:=NetRes.Children(next)

No NetRes l à

Domain hoặc Group?

ResTemp l à Server?

Kiểm tra ResTemp l trà ạm mới hay có thay đổi

Đưa v o danh sáchà

Tìm kiếm với ResTemp Kiểm tra NetRes còn t i nguyên con khôngà

NetRes = Root

Việc dò tìm trên mạng thực hiện theo hai cách, cách thứ nhất là quét một khoảng địa chỉ IP, cách thứ hai là sử dụng các hàm API: WNetOpenEnum, WNetEnumResource, WNetCloseEnum để lấy danh sách các trạm, các hàm này đã được viết trong lớp NetResource và NetResources là một collection của NetResource, mỗi instance của NetResource là một tài nguyên mạng (thuật toán dò tìm theo chiều sâu đối với NetResource trình bày ở hình trên).

Ở đây ta quan niệm một máy là mới xuất hiện trên mạng khi trong cơ sở dữ liệu ta không tìm được trạm nào hiện hành có trùng với trạm tìm được cả MAC address, IP address, Computer name và Host name. Ngược lại, nếu tồn tại một trạm có trùng ít nhất một trong các thuộc tính trên và khác nhau ít nhất một thuộc tính thì không coi là máy mới mà là máy cũ đã thay đổi thuộc tính khác nhau đó.

Một phần của tài liệu XÂY DỰNG PHẦN mềm PHÁT HIỆN và QUẢN lý tài NGUYÊN MẠNG PHỤC vụ CHO VIỆC QUẢN TRỊ tại cục e15 TỔNG cục VI bộ CÔNG AN (Trang 47 - 56)

Tải bản đầy đủ (DOC)

(66 trang)
w