Tải bản đầy đủ (.pdf) (73 trang)

Nghiên cứu xây dựng hệ thống truyền tải trao đổi dữ liệu kèm mã hóa bảo mật ứng dụng trong ngành khí tượng thủy văn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.11 MB, 73 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VƯƠNG MINH PHƯƠNG

NGHIÊN CỨU XÂY DỰNG HỆ THỐNG TRUYỀN TẢI TRAO ĐỔI
DỮ LIỆU KÈM MÃ HÓA BẢO MẬT ỨNG DỤNG TRONG NGÀNH
KHÍ TƯỢNG THỦY VĂN

LUẬN VĂN THẠC SỸ KỸ THUẬT
CHUYÊN NGÀNH KỸ THUẬT VIỄN THÔNG

Hà Nội – 2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VƯƠNG MINH PHƯƠNG

NGHIÊN CỨU XÂY DỰNG HỆ THỐNG TRUYỀN TẢI TRAO ĐỔI
DỮ LIỆU KÈM MÃ HÓA BẢO MẬT ỨNG DỤNG TRONG NGÀNH
KHÍ TƯỢNG THỦY VĂN

LUẬN VĂN THẠC SỸ KỸ THUẬT
CHUYÊN NGÀNH KỸ THUẬT VIỄN THÔNG

NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS. TS. PHẠM NGỌC NAM

Hà Nội – 2017




MỤC LỤC
CHƯƠNG 1. TÍNH CẤP THIẾT CỦA HỆ THỐNG ĐỒNG BỘ DỮ LIỆU KTTV.1
1.1. Đặt vấn đề ........................................................................................................1
1.1.1. Bối cảnh ....................................................................................................1
1.1.2. Thực trạng nhu cầu truyền tin và đồng bộ số liệu khí tượng thủy văn .....3
1.2. Thực trạng các phần mềm truyền tin và đồng bộ dữ liệu trên thế giới hiện
nay ...........................................................................................................................9
1.3. Sự cần thiết phải xây dựng phần mềm đồng bộ dữ liệu KTTV .....................12
1.3.1. Mục tiêu của đề tài ..................................................................................13
1.3.2. Nội dung nghiên cứu ...............................................................................13
1.4. Kết luật chương ..............................................................................................13
CHƯƠNG 2. CÁC GIẢI PHÁP KHOA HỌC VÀ KỸ THUẬT PHÙ HỢP CHO HỆ
THỐNG ĐỒNG BỘ KTTV ......................................................................................14
2.1. Socket .............................................................................................................14
2.2. Các mơ hình lập trình mạng ...........................................................................15
2.2.1. Mơ hình client/server ..............................................................................15
2.2.2. Mơ hình peer-to-peer ..............................................................................20
2.2.3. So sánh mơ hình P2P và client-server.....................................................21
2.3. Windows services...........................................................................................22
2.3.1. Windows service là gì .............................................................................22
2.3.2. Tại sao lại cần phải sử dụng windows services ......................................22
2.4. Kết luân chương .............................................................................................22
CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG ĐỒNG BỘ DỮ LIỆU
KTTV ........................................................................................................................23
3.1. Thiết kế mơ hình phân tán cân bằng tải Client-Server...................................23
3.1.1. Lớp thứ nhất (lớp core) ...........................................................................24
3.1.2. Lớp thứ 2 (lớp chia tải) ...........................................................................24
3.1.3. Lớp thứ 3 (lớp người dùng).....................................................................24

3.1.4. Ưu nhược điểm của mơ hình ...................................................................25
3.2. Sơ đồ Usecase ................................................................................................25


3.2.1. Số lượng usercase....................................................................................25
3.2.2. Mô tả use-case .........................................................................................26
3.2.3. Mô tả chi tiết ...........................................................................................30
3.3. Thiết kế xây dựng cơ sở dữ liệu .....................................................................31
3.3.1. Nội dung cơ sở dữ liệu bao gồm: ............................................................31
3.3.2. Một số bảng quan trọng : ........................................................................31
3.4. Xây dựng phần mềm ......................................................................................35
3.4.1. Sơ đồ khối của phầm mềm ......................................................................35
3.4.2. Kết quả đạt được .....................................................................................36
3.5. Kết luận chương .............................................................................................38
CHƯƠNG 4. TRIỂN KHAI PHẦN MỀM VÀ CHẠY KIỂM THỬ .......................39
4.1. Quy trình kiểm thử .........................................................................................39
4.1.1. Cài đặt .....................................................................................................39
4.1.2. Kịch bản test 1.........................................................................................41
4.1.3. Kịch bản test 2.........................................................................................41
4.1.4. Kịch bản test 3.........................................................................................42
4.2. Kết quả kiểm thử ............................................................................................42
4.3. Kết luận chương .............................................................................................45
CHƯƠNG 5. KẾT LUẬN VÀ KIẾN NGHỊ ............................................................46
5.1. Các điểm đạt được của phần mềm .................................................................46
5.2. Các điểm chưa được và hướng nâng cấp sắp tới............................................46
5.3. Kết luận chương .............................................................................................47
TÀI LIỆU THAM KHẢO .........................................................................................48
PHỤ LỤC I: CHI TIẾT USE-CASE .....................................................................49
PHỤ LỤC II : CODE MỘT SỐ HÀM QUAN TRỌNG ..........................................60



DANH SÁCH HÌNH VẼ
Hình 1-1:Mơ hình chia sẻ dữ liệu tại trung tâm TTDL .........................................8
Hình 1-2: Mơ hình hoạt động của dropbox ...........................................................9
Hình 2-1: Các kiểu socket ...................................................................................14
Hình 2-2: Mơ hình client-server..........................................................................15
Hình 2-3: Quá trình trao đổi dữ liệu giữa client và server .................................17
Hình 2-4: Bảy thao tác để truyền nhận dữ liệu giữa client và server .................18
Hình 2-5: Mơ hình Peer-2-Peer ..........................................................................20
Hình 3-1: Mơ hình chia tải ..................................................................................23
Hình 3-2 Use-Case Kiểm tra kết nối ...................................................................27
Hình 3-3 User-Case Quản lý phiên làm việc ......................................................27
Hình 3-4 User-Case Quản lý hệ thống (bằng file luật) .......................................28
Hình 3-5 Use Case Đồng bộ dữ liệu ...................................................................28
Hình 3-6 Use Case Phát hiện dữ liệu .................................................................29
Hình 3-7 Use-Case Ghi lịch sử ...........................................................................29
Hình 3-8 Use-Case xác thực dữ liệu cịn thiếu ...................................................30
Hình 3-9. Use-Case Xóa dữ liệu cũ định kỳ .......................................................30
Hình 3-10: Sơ đồ khối của phần mềm ................................................................35
Hình 3-11: Giao diện khi cài đặt phần mềm .......................................................37
Hình 3-12: Phần mềm dưới dạng windows services...........................................37
Hình 3-13: Thư mục làm việc của hệ thống đồng bộ .........................................37
Hình 4-1: Mơ hình sẽ áp dụng kiểm thử .............................................................40

DANH SÁCH BẢNG BIỂU
Bảng 2-1:So sánh giữa mơ hình client-server và P2P.........................................21
Bảng 3-1: Liệt kê use-case ..................................................................................25
Bảng 3-2: một số bảng cơ sở dữ liệu quan trọng của hệ thống đồng bộ.............31
Bảng 4-1: Thơng số đường truyền internet trong mơ hình kiểm thử ..................40
Bảng 4-2:Kết quả kịch bản test 1 trong một phiên .............................................44

Bảng 4-3:Kết quả kịch bản test 2 ........................................................................45


DANH SÁCH TỪ VIẾT TẮT

KTTV
ĐKV
TTDB
TTDL
TU
CNTT

Khí tượng thủy văn
Đài Khu Vực
Trung tâm dự báo trung ương
Trung tâm thông tin và dữ liệu
Trung ương
Công nghệ thông tin

P2P

Peer to peer


LỜI NÓI ĐẦU
Hiện nay việc truyền tải, đồng bộ dữ liệu, thông tin là một phần thiết yếu của
cuộc sống nhất là trong thời đại bùng nổ thơng tin địi hỏi việc truyền dữ liệu nhanh,
chính xác và đảm bảo an tồn bảo mật. Đặc biệt Thơng tin trong lĩnh vực khí tượng
thủy văn được coi là vấn đề sống cịn trong bối cảnh các diễn biến về khí hậu xảy ra
bất thường và ngày càng nhiều hơn, việc có thơng tin dự báo kịp thời chính xác để

có phương hướng xử lý là rất quan trọng. Quan trọng cũng khơng kém là có các dữ
liệu thơ phục vụ cơng tác dự báo từ khắp các đài trạm quan trắc trên cả nước gửi về
cũng phải đảm bảo chính xác và nhanh chóng.
Bản thân người viết cũng đang cơng tác tại ngành Khí tượng thủy văn, nhận
thấy tầm quan trọng của thơng tin, dữ liệu đóng vai trị quan trọng và hiện trạng
trong ngành đang dùng nhiều phương thức truyền số liệu khác nhau đều chưa đáp
ứng được hầu hết các yêu cầu cần thiết, nên người viết đã đề xuất thực hiện đề tài:
Nhiên cứu xây dựng hệ thống truyền tải trao đổi dữ liệu kèm mã hóa bảo mật
ứng dụng trong ngành khí tượng thủy văn.
Mục tiêu đề tài là xây dựng được hệ thống đồng bộ số liệu giữa các đơn vị trong
ngành Khí tượng thủy văn, từ các đài trạm quan trắc trên khắp cả nước để phục vụ
cơng tác dự báo và phịng chống thiên tai. Hệ thống phải đảm bảo hoạt động một
cách tự động, chạy ổn định liên tục 24/24, hiếm khi xảy ra lỗi, dữ liệu được đảm
bảo đầy đủ, độ trễ đường truyền và trễ hệ thống thấp, phục vụ được nhiều đài trạm
trong cả nước và quốc tế.
Người viết xin chân thành cảm ơn Trung tâm Khí Tượng Thủy Văn Quốc Gia,
Trung Tâm Thông Tin và Dữ Liệu đã tạo điều kiện hỗ trợ đồng thời chân thành cám
ơn PGS TS Phạm Ngọc Nam đã hướng dẫn và hỗ trợ người viết thực hiện đề tài
này.
Học viên
Vương Minh Phương


TÓM TẮT LUẬN VĂN
Đề tài tập trung vào xây dựng hệ thống truyền tải đồng bộ thông tin dữ liệu áp
dụng trong ngành khí tượng thủy văn. Hệ thống bao gồm phần thiết kế hệ thống, và
xây dựng phần mềm hoạt động trong hệ thống đó.
Hệ thống bao gồm việc thiết kế mơ hình đồng bộ dữ liệu khí tượng thủy văn
phục vụ công tác dự báo và cảnh báo. Đồng thời thiết kế xây dựng phần mềm đồng
bộ dữ liệu hoạt động trong hệ thống đó.Hệ thống phải đảm bảo số liệu được đồng

bộ đầy đủ chính xác, nhanh chóng, thực hiện trên những tài nguyên sẵn có. Phần
mềm phải đảm bảo ít lỗi, hoạt động ổn định liên tục 24/24. Phần mềm phải có khả
năng tự khơi phục hoạt động khi gặp một số các sự cố hay gặp phải như lỗi khơng
có kết nối internet, mất điện…
Luận văn gồm 5 chương
 Chương 1: Tính cấp thiết của hệ thống đồng bộ dữ liệu KTTV. Chương này
sẽ tập trung vào phân tích tầm quan trọng của hệ thống truyền tin KTTV,
hiện trạng hạ tần kỹ thuật và phương thức truyền số liệu KTTV hiện đang sử
dụng.
 Chương 2: Các giải pháp khoa học kỹ thuật phù hợp cho hệ thống đồng bộ
dữ liệu KTTV. Chương này sẽ tập trung vào đưa ra các giải pháp mơ hình kỹ
thuật có thể áp dụng để xây dựng hệ thống đồng bộ dữ liệu KTTV
 Chương 3: Thiết kế và xây dựng hệ thống đồng bộ dữ liệu KTTV. Chương
này sẽ tập trung vào xây dựng hệ thống, và phần mềm trên các giải pháp đã
đưa ra.
 Chương 4: Triển khai phần mềm và kiểm thử hệ thống. Chương này sẽ mơ tả
qui trình kiểm thử hệ thống, đưa ra một số kết quả kiểm thử nhất định.
 Chương 5: Kế luận và kiến nghị. Chương này sẽ đưa ra các đánh giá về phần
mềm sau khi kiểm thử và chạy thực tế một thời gian. Các điểm đạt và chưa


đạt của phần mềm đồng thời đưa ra định hướng nâng cấp sắp tới của hệ
thống cho phù hợp với nhu cầu và hạ tầng kỹ thuật


CHƯƠNG 1. TÍNH CẤP THIẾT CỦA HỆ THỐNG ĐỒNG BỘ
DỮ LIỆU KTTV
Chương này sẽ nêu ra tính cấp thiết của đề tài và khảo sát hiện trạng phương
thức truyền tin KTTV.


1.1. Đặt vấn đề
1.1.1. Bối cảnh
Thiên tai trên thế giới ngày càng có những diễn biến phức tạp trong những năm
gần đây làm số người chết lên đến hàng nghìn người gây thiệt hại hàng trăm tỷ
USD. Trong những năm qua, thiên tai đã làm cả nước thiệt hại rất lớn về người và
tài sản. Theo báo cáo của Trung tâm khí tượng thủy văn quốc gia, từ năm 2008 đến
cuối 2012 thiên tai làm cả nước chết, mất tích gần 1,9 nghìn người, bị thương gần 3
nghìn người, gây thiệt hại 74 nghìn tỷ đồng. Như vậy tỷ lệ thiệt hại về tài sản chiếm
1,48% GDP hàng năm. Trong năm 2014, có 5 cơn bão và 3 cơn áp thấp nhiệt đới
hoạt động trong Biển Đông, mưa bão và các trận lũ quét đã gây sạt lở đất, làm 133
người chết và mất tích, 145 người bị thương, về tài sản, thống kế của các cơ quan
chức năng cho thấy gần 2000 nhà bị đổ sập 43.000 nhà bị ngập và hư hại, 230.000
ha hoa màu bị thiệt hại. Tổng thiệt hại lên đén 2.830 tỷ đồng. Trong năm 2015 ở
nước ta thiên tai xuất hiện với tần suất dầy đặc. Nắng nóng gay gắt với nền nhiệt độ
cao kỷ lục trong 60 năm qua diễn ra trên diện rộng khiến hàng nghìn người dân khu
vực miền Trung lâm vào cảnh thiếu lương thực nước uống.Theo ban chỉ đạo phòng
chống lụt bão trung ương (PCLB) cho biết, do ảnh hưởng của biến đổi khí hậu nên
5 năm trở lại đây, thiệt hại về tài sản do thiên tai gây ra ngày càng lớn.Dự báo cho
đến những năm tiếp theo thời tiết việt nam vẫn có những diễn biến bất thường theo
xu thế chung của thế giới do hiệu ứng nhà kính cũng như tốc độ tàn phá tự nhiên
của con người.
Với tình hình thời tiết ngày càng biến đổi phức tạp và nhanh chóng, việc dự báo,
cảnh bảo để sớm có biện pháp phịng chống kịp thời là vơ cùng quan trọng. Nhận
thấy tầm quan trong đó, trong rất nhiều năm qua, Việt Nam đã liên tục không ngừng
đầu tư trang thiết bị phục vụ việc dự báo cảnh báo thời tiết. Đã có rất nhiều các trạm
1


đo các thiết bị phục vụ công tác dự báo nhằm đưa ra được các số liệu để người dự
báo viên có thể dựa vào đó tăng được độ chính xác của bản tin dự báo của mình. Do

có rất nhiều loại dữ liệu từ các điểm quan trắc trên khắp cả nước được đưa về để
phục vụ công tác dự báo khí tượng thủy văn. Dữ liệu từ các trạm khí tượng bề mặt,
thám khơng vơ tuyến, đo gió trên cao, thủy văn, hải văn… sau khi quan trắc được
các quan trắc viên chuyển thành mã điện chuyển về. Ngồi ra cịn có các dữ liệu
radar thời tiết, ảnh mây vệ tinh, số liệu mưa tự động, được truyền về với tần suất
liên tục để phục vụ công tác dự báo được kịp thời, và còn rất nhiều loại số liệu khác.
Đó là các loại số liệu trong nước, chúng ta cũng thu dữ liệu từ quốc tế thông qua hệ
thống GTS với trên 500 trạm khí tượng mặt đất và 250 trạm thám không vô tuyến
truyền về liên tục. Ngồi ra cịn có các số liệu và sản phẩm dự báo của các nước
trên thế giới để tham khảo trong quá trình tác nghiệp dự báo. Việc tiếp nhận các loại
số liệu này đảm bảo liên tục chính xác là rất quan trọng, việc gây thất lạc thông tin,
truyền thông tin dữ liệu chậm, sai lệch thông tin về trung tâm dự báo làm ảnh hưởng
đến công tác dự báo thời tiết là vô cùng nghiêm trọng nhất là khi có diễn biến thời
tiết nguy hiểm.
Sau khi trung tâm dự báo đưa ra được sản phẩm dự báo, việc truyền tải các sản
phẩm dự báo, các bản tin khí tượng, bản tin cảnh báo tới các đơn vị chức năng, các
đối tác, để xử lý cũng quan trọng khơng kém.Có rất nhiều đơn vị quan tâm tới các
sản phẩm dự báo để phục vụ nhu cầu, trong nước có thể kể đến như các cơ quan khí
tượng tại hơn 63 tỉnh thành trong cả nước, các đơn vị như không quân, hải quân,
hàng không Gia Lâm, ủy ban tìm kiếm cứu nạn…ngồi nước có thể kể đến Nhật
Bản, Thái Lan, Trung Quốc cũng rất cần số liệu dự báo để làm tư liệu đối chiếu.Sản
phẩm dự báo sau khi được làm ra phải được truyền ngay tới các đơn vị chức năng
không được chậm trễ, việc chậm trễ hay thất lạc sẽ gây thiệt hại lớn nhất là trong
tình hình thiên tai, thời tiết thất thường. Bạn thử tưởng tượng nếu bản tin cảnh báo
mưa dông sấm sét được truyền đi chậm 4-5 phút là coi như bản tin đó khơng cịn giá
trị, bởi vì diễn biến thời tiết nguy hiểm đó xảy ra rất nhanh. Nếu khơng có cảnh báo
kịp thời để thơng báo đến các đơn vị chức năng thì sẽ gây hậu quả khó lường. Qua
đó thấy được tầm quan trong của cơng tác dự báo cũng như việc truyền nhận thông
2



tin khí tượng thủy văn. Đã có hẳn một trung tâm chuyên trách việc thông tin, truyền
tin các sản phẩm KTTV là trung tâm Thông Tin Và Dữ Liệu KTTV. Đảng và chính
phủ cũng rất quan tâm đến vấn đề truyền tin này nên năm 2014 đã ban hành quyết
định 46/2014/QĐ-TTg [1] “Qui định về dự báo cảnh báo và truyền tin thiên tai” và
quan trọng hơn luật KTTV đã chính thức có hiệu lực từ ngày 01/7/2016. Trong
quyết định 46/2014/QĐ-TTg đã quy định việc phải cung cấp liên tục thông tin của
thiên tai xảy ra, trong Điều 4 của Luật KTTV quy định thông tin dự báo, cảnh báo
KTTV phải được truyền phát kịp thời, chính xác đầy đủ. Việc xây dựng hệ thống
truyền tin khí tượng thủy văn tin cậy ổn định nhanh chóng tỏ ra hết sức cần
thiết mang tính sống cịn để đảm bảo phục vụ cơng tác dự báo phịng chống
thiên tai.
Trong thời đại bùng nổ công nghệ thông tin như hiện nay việc áp dụng các cải
tiến sáng chế mới sẽ góp phần tự động hóa cũng như nâng cao hiệu suất và năng lực
thông tin đặc biệt trong công tác truyền tin cảnh báo thiên tai, đồng thời cũng nâng
cao tính bảo mật và chính xác của các thơng tin cảnh báo. Nhận thấy việc có một
phần mềm đồng bộ số liệu giữa các đơn vị trong ngành KTTV và các đơn vị
cộng tác là cần thiết và quan trọng để đảm bảo tính liên tục và kịp thời của dữ
liệu.
1.1.2. Thực trạng nhu cầu truyền tin và đồng bộ số liệu khí tượng thủy văn
Như đã trình bày ở trên, nhu cầu truyền tin và đồng bộ số liệu khí tượng thủy
văn giữa các đơn vị các đài, trạm quan trắc, và trung tâm dự báo khí tượng thủy văn
là rất lớn, số liệu phải đảm bảo tính liên tục và được đồng bộ tới tất cả các đơn vị
tức thì để phục vụ công tác dự báo thời tiết, cảnh báo và phịng chống thiên tai.
Ngồi ra u c ầu bảo mật dữ liệu cũng là vấn đề cấp thiết vì nó liên quan tới bí mật
quốc gia.

a) Hiện trạng dịng dữ liệu KTTV và nhu cầu
Dữ liệu đầu vào phục vụ công tác dự báo
Theo quyết định điện báo [2] mô tả các số liệu phục vụ công tác dự báo


3


 Dữ liệu quan trắc nội địa từ các điểm quan trắc trên khắp cả nước được quan
trắc viên chuyển thành mã điện được tập trung về các Đài Khu Vực (ĐKV)
quản lý, rồi từ các Đài Khu Vực được tập trung về trung tâm Thông Tin Và
Dữ Liệu (TTDL) rồi chuyển qua Trung Tâm Dự Báo (TTDB) để tác nghiệp
dự báo.
 Radar thời tiết từ các trạm radar được Đài Khí Tượng Cao Khơng với tần
suất liên tục được chuyển qua TTDL rồi chuyển qua TTDB phục vụ công
tác.
 Dữ liệu mưa tự động liên tục từ các trạm đo tự động được các ĐKV chuyển
về TTDL rồi chuyển qua TTDB.
 Dữ liệu quốc tế được TTDL thu qua mạng viễn thông GTS với trên 500 trạm
mặt đất 250 trạm thám khơng vơ tuyến và dữ liệu tính tốn từ mơ hình tồn
cầu sản phẩm của các trung tâm dự báo quốc tế làm số liệu đầu vào cho mơ
hình dự báo khu vực, sau đó được truyền qua DB. Số liệu này cũng đ theo yêu cầu của client
Có mạng internet, client đã đăng nhập thành cơng bằng username
password cố định, phiên làm việc vẫn được duy trì
50


Normal flow

Exception
flow
Kết quả
Thay thế


ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

Điều kiện
Normal flow

Exception
flow
Kết quả
Thay thế

ID
Tên usecase
Tác nhân

Client tạo kết nối tạm thời với server
Client gửi username+ mã tạm thời + mã lệnh lên server
Server xác nhận username+ mã tạm thời và đọc mã lệnh
Server xác định lệnh của client và thực hiện phục vụ client
Server trả kết quả cho client
Client đọc kết quả trả về của server
Client tiến hành ngắt kết nối tạm thời
Server đóng kết nối tạm thời
Client khơng kết nối được đến server, server không gửi được kết
quả về client, mã cố định và tạm thời sai
Client nhận được kết quả của yêu cầu server trả về
Client sẽ tự động kết nối trở lại tới server, client lưu lại thông tin

lỗi

7
Kiểm tra trạng thái của client và server
Client-Server
Client và server sẽ nắm được trạng thái kết nối của mình (bị lỗi
hay không)
Khi client kết nối tới server và bắt đầu trao đổi dữ liệu cả client
và server cần phải biết được trạng thái kết nối của cả 2 phía để
đưa ra được hành động phù hợp.
Có mạng internet vẫn được duy trì, thơng tin xác thực hợp lệ,
Client tạo phiên làm việc với server
Client kiểm tra kết nối tới server định kỳ gửi gói tin kiểm tra
Server kiểm tra kết nối tới client định kỳ nhận gói tin
Client khơng kết nối được đến server, mã cố định và tạm thời sai
Server khơn nhận được gói tin sau 1 khoảng thời gian
Kết nối được duy trì, client và server có được thơng tin về trạng
thái kết nối của mình.
Client sẽ tự động kết nối trở lại tới server, client và server lưu lại
thông tin lỗi

6
Tự động kết nối trở lại
Client
51


Mô tả
Bối cảnh


Điều kiện
Normal flow

Exception
flow
Kết quả

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

Điều kiện
Normal flow

Exception
flow
Kết quả
Thay thế

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

Client tự động kết nối trở lại với server
Khi client và server mất kết nối (được xác thực bởi usecase id 7)
Client sẽ tự động thử kết nối lại với server sau một khoảng thời

gian nhất định
Client đang mất kết nối tới server
Client xác định trạng thái mất kết nối của mình
Client nghỉ một khoảng thời gian
Client thử kết nối trở lại với server
Nếu khơng được Client lặp lại qui trình
Client khơng kết nối được đến server,

5
Chuyển kết nối
Client
Client chuyển kết nối tới 1 server khác
Sau khi tự động kết nối tới server hiện thời không đạt kết quả
(sau 2 lần thử) Client sẽ chuyển kết nối tới 1 server khác (nằm
trong luật kết nối của Client do server cntt qui định)
Client không có khả năng kết nối với server hiện thời, Client đã
thử kết nối lại với server hiện thời 2 lần
Client xác định khả năng kết nối với server hiện thời của mình
Client nghỉ một khoảng thời gian
Client kết nối với server khác (địa chỉ IP khác)
Client không kết nối được đến server,
Client kết nối được với server ưu tiên khác
Lặp lại usecase 6

20
Ngắt kết nối
Server/Client
Client/Server chủ động ngắt kết nối của phiên làm việc
Trong các trường hợp sau client/server sẽ chủ động ngắt kết nối
của phiên làm việc

52


Điều kiện
Normal flow
Exception flow
Kết quả

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

Điều kiện
Normal flow

Exception flow

Server/Client nhận được yêu cầu gửi dữ liệu nhưng khơng có
dữ liệu mới
Client/Server gửi đi dữ liệu khơng hợp lệ
Client gửi username/password không hợp lệ
Client/Server kết thúc phiên làm việc
Username password client kết nối lên đã tồn tại trong hệ thống.
Client đang kết nối với server
Client/Server đóng socket kết nối
Client/Server sẽ hủy được kết nối của phiên làm việc

8

Lấy luật từ database
Server CNTT
Chức năng này dùng để quản trị hệ thống, cấp quyền, quản lý
kết nối….
Khi server cntt khởi động hoặc
Client kết nối với server cntt để yêu cầu tham gia hệ thống, sau
khi server cntt xác thực sẽ lấy từ trong database ra các luật làm
việc của client bao gồm:
Luật kết nối: server sẽ phải kết nối tới để trao đổi dữ liệu theo
các mức ưu tiên.
Luật đồng bộ file dữ liệu: thư mục, loại số liệu truyền-nhận,
thời gian cho phép lấy file cũ.
Luật về quyền hạn: là server chia tải hay đơn vị khai thác.
Luật giám sát, phục vụ công tác giám sát số liệu
Client gửi đúng username password và yêu cầu lấy luật tới
server cntt, bản thân server cntt khi khởi động
Client gửi username+ password và mã lệnh yêu cầu lấy file luật
tới server cntt _ server cntt khi khởi động phần mềm tự động
lấy file luật của chính mình
Server cntt xác thực client và lấy luật của client đó trong
database_ server cntt tự xác thực và lấy luật của mình trong
csdl
Client khơng kết nối được đến server, thông tin client lên
53


Kết quả

ID
Tên usecase

Tác nhân
Mô tả
Bối cảnh

Điều kiện
Normal flow

Exception
flow
Kết quả
Thay thế

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh
Điều kiện
Normal flow

Exception

không đúng, server cntt không kết nối được với database
Server có được luật của client yêu cầu từ csdl

9
Tạo mới và mã hóa file luật
Server CNTT
Chức năng này dùng để quản trị hệ thống, cấp quyền, quản lý kết
nối….

Khi server được yêu cầu lấy luật từ database sau đó sẽ tạo luật
chứa các thơng tin về các thư mục truyền-nhận, các loại file được
tham gia trao đổi, luật giám sát… và mã hóa chúng thành dạng
file để truyền đi được
Có yêu cầu tạo luật gửi tới server cntt
Server nhận yêu cầu tạo luật
Server tạo và mã hóa file luật
Server lưu file luật vừa tạo vào thư mục định trước
Server không thể kết nối tới csdl
File luật của đối tượng yêu cầu được sinh ra ở thư mục server
cntt định trước.
Server cntt sẽ đưa ra thông báo không thể tạo file luật

10
Đồng bộ file luật
Server CNTT- Client
Server CNTT sẽ tiến hành gửi file luật đó cho đối tượng yêu cầu
Sau khi mã hóa và tạo thành file luật của đối tượng yêu cầu,
Có kết nối internet, client kết nối được với server cntt
Client gửi yêu cầu tạo luật
Server tạo file luật
Server gửi file luật cho client
Client nhận file luật
Client không kết nối được đến server cntt,
54


flow
Kết quả
Đặc biệt

Thay thế

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh
Điều kiện
Normal flow
Exception
flow
Kết quả

ID
Tên usecase
Tác nhân
Mơ tả
Bối cảnh
Điều kiện
Normal flow
Exception
flow
Kết quả

Client có được file luật ở thư mục được qui định sẵn
Trừ server cntt sẽ tự tạo file luật của chính mình (nếu tham gia
truyền nhận dữ liệu)
Client sẽ sử dụng file luật trước đó (nếu có) hoặc sẽ đưa ra thơng
báo khơng thể lấy được file luật.


11
Giải mã file luật
Các phần tử tham gia trao đổi dữ liệu
Giải mã file luật trong thư mục qui định trước để có thơng tin về
thư mục, loại số liệu được tham gia, client hay server…
Sau khi có được file luật, sẽ tiến hành giải mã file luật
Có được file luật
Đọc file luật
Giải mã file luật đưa vào các class của phần mềm.
File luật không khớp với các class được tạo để chứa nội dung file
luật.
Dữ liệu của file luật sẽ được “nạp” vào các class của phần mềm
để sử dụng

14
Theo dõi thư mục
Client-Server
Client và Server tạo watcher để theo dõi thư mục để gửi đi
Sau khi có file luật, các client và server tham gia trao đổi dữ liệu
sẽ tiến hành theo dõi thư mục mà mình quản lý trao đổi dữ liệu
Client hoặc server tham gia trao đổi dữ liệu và đã lấy và giải mã
thành cơng file luật của mình
Client/Server sẽ watcher thư mục trao đổi dữ liệu được qui định
trong file luật.
Quá nhiều biến động xảy ra cùng một thời điểm sẽ bị tràn bộ nhớ
đệm
Client/Server có được danh sách các file mới/được cập nhật trong
55



Thay thế

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

Điều kiện
Normal flow

Exception
flow
Kết quả

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh
Điều kiện
Normal flow

thư mục
Client/Server thử watcher lại thư mục đó sau 1 khoảng thời gian

15
Xử lý dữ liệu mới
Client-Server
Client- server xử lý dữ liệu mới phát sinh

Sau khi watcher thư mục mà mình phải theo dõi được qui định
trong file luật, nếu có sự kiện file mới/cập nhật file thì
server/client sẽ xử lý sự kiện đó
Client hoặc server tham gia trao đổi dữ liệu và đã lấy và giải mã
thành cơng file luật của mình
Client/server sẽ nhanh chóng thêm tồn bộ thơng tin về file vào 1
hàng đợi
Định kỳ sẽ có 1 luồng riêng xử lý hàng đợi đó, nếu là client
File sẽ được xác thực (thư mục gửi file, file ẩn, phần mở rộng
của file) nếu hợp lệ sẽ chờ gửi đi
Nếu là server: File sẽ được xác thực (thư mục gửi file, file ẩn,
phần mở rộng của file) nếu hợp lệ file sẽ được thêm vào đúng
hàng đợi tương ứng của client mà sẽ lấy file đó và chờ xử lý.

Client/ server có được danh sách các file chuẩn chờ gửi đi đến
đúng địa chỉ.

12
Gửi yêu cầu truyền-nhận file
Client-Server
Client sẽ gửi yêu cầu trao đổi dữ liệu với server định kỳ
Sau khi kết nối tới server qua số IP và port đọc từ file luật
Client định kỳ sẽ gửi mã lệnh yêu cầu trao đổi dữ liệu với server
Client kết nối với server mà nó sẽ trao đổi dữ liệu
Client gửi yêu cầu tạo phiên làm việc truyền nhận file
Server xử lý
56


Exception flow Client không kết nối được với server, mã tạm và username

khơng đúng.
Kết quả
Server có được u cầu truyền nhận file
Thay thế
Client tự động kết nối tới server, client-server ghi lại lỗi

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

13
Xử lý yêu cầu truyền nhận file
Client-Server
Server xử lý yêu cầu truyền nhận file từ client
Sau khi client gửi yêu cầu truyền nhận file lên server, server xử
lý yêu cầu truyền hoặc nhận file tương ứng.

Điều kiện
Normal flow

Client kết nối tới server, username và mã tạm thời đúng
Client gửi yêu cầu truyền nhận file
Nếu là yêu cầu truyền file: server sẽ lấy từ hàng đợi với client
tương ứng file mà client đó sẽ được nhận, gửi thông tin file và
nội dung cho client. Client build file từ nội dung server gửi.
Nếu là yêu cầu nhận file: server sẽ đọc thông tin về file và nội
dung file client lấy từ hàng đợi ra gửi lên sau đó build file từ nội
dung đó.

Exception flow Client khơng kết nối được tới server, username và mã tạm thời
không đúng.
Kết quả
Server và client có được file mình cần, hoặc sẽ trả về file kích
thước là 0 bytes nếu hàng đợi rỗng.
Thay thế
Client-server sẽ ghi lại lỗi, và file lỗi sẽ được đưa ngược vào
hàng đợi, nếu là lỗi kết nối client sẽ tự kết nối trở lại với server.

ID
Tên usecase
Tác nhân
Mô tả

16
Ghi lịch sử các sự kiện
Client-Server
Log connection (log kết nối) dùng ghi lại thông tin về
client/server ngắt kết nối khi vào và có kết nối trở lại khi nào
Log transmission (log truyền nhận) dùng để ghi lại thông tin về
client/server truyền/nhận file nào, vào lúc nào, mất bao lâu,
dung lượng file bao nhiêu.
Log error (log lỗi) dùng để ghi lại các lỗi xảy ra trong quá trình
57


Bối cảnh
Điều kiện
Normal flow


truyền nhận (chủ yếu phục vụ công tác sửa lỗi phần mềm)
Khi client và server bắt đầu tham gia vào trao đổi dữ liệu, tất cả
mọi hoạt động đều được ghi vào log dạng text
Client và server tham gia vào trao đổi dữ liệu.
Mỗi một sự kiễn diễn ra sẽ được ghi vào 1 trong 3 file log
connection/transmission/error tương ứng với sự kiện đó

Exception flow
Kết quả
File log được sinh ra ở đúng thư mục được qui định
Thay thế
Client kết nối trở lại tới server

ID
Tên usecase
Tác nhân
Mô tả

17
Đồng bộ file log
Client-Server-Server CNTT
File log sau khi được sinh ra sẽ được định kỳ gửi lên server
CNTT
Bối cảnh
Sau khi file log được sinh ra tại thư mục qui định sẽ được định
kỳ gửi tập trung tại server cntt để phục vụ công tác giám sát và
đánh giá
Điều kiện
Client và server có tham gia trao đổi dữ liệu, có kết nối internet
Normal flow

Client và server sẽ gửi file log lên cấp mà nó kết nối tới từ đó
file log dần dần sẽ được đẩy lên cấp cao nhất (server cntt)
Exception flow Khơng có kết nối internet
Kết quả
File log được tập trung ở server cntt

ID
Tên usecase
Tác nhân
Mô tả
Bối cảnh

Điều kiện
Normal flow

18
Xác thực dữ liệu còn thiếu
Client-Server
Server và client phải xác thực để biết thông tin những dữ liệu
nào mà client/server chưa được nhận
Khi client/server kết nối với nhau để trao đổi dữ liệu (lần đầu
hoặc kết nối trở lại) server/client phải có được thông tin để biết
đối phương thiếu những dữ liệu mới nào để cho vào hàng đợi
tương ứng.
Client và server vừa mới kết nối để trao đổi dữ liệu
Client tạo phiên làm việc với server yêu cầu xác thực dữ liệu
Client khởi tạo chuỗi thông tin chứa tên file + mã md5 của file
58



tương ứng gửi lên server
Client khởi tạo chuỗi thông tin chứa tên file + mã md5 của file
tương ứng gửi lên server
Client-Server so sánh với nhau lọc ra nhưng file chưa được gửi
đi và cho chúng vào hàng đợi chờ xử lý
Exception flow Không gửi được chuỗi lên server
Kết quả
Client/server có được danh sách file mà đối phương thiếu
Thay thế
Client kết nối trở lại với server, client-server ghi lại lỗi

ID
Tên usecase
Tác nhân
Mơ tả
Bối cảnh

19
Xóa dữ liệu định kỳ
Client-Server
dữ liệu cũ được xóa bớt
Sau một khoảng thời gian qui định dữ liệu cũ sau khi được lưu
backup sẽ được xóa bớt

Điều kiện
Normal flow
Định kỳ client-server sẽ duyệt file trong thư mục và xóa file cũ
Exception flow
Kết quả
Các file cũ bị xóa đi giải phóng dung lượng lưu trữ


59


PHỤ LỤC II : CODE MỘT SỐ HÀM QUAN TRỌNG
Client kết nối
var endPoint = new IPEndPoint(IpAddress, Port);
var

socket

=

new

Socket(AddressFamily.InterNetwork,

SocketType.Stream,ProtocolType.Tcp);
try{
socket.Connect(endPoint);
}
Cath{}

Server xử lý kết nôi
var serverEndpoint = new IPEndPoint(IPAddress.Any, Port);
var

serverSocket

=


new

Socket(AddressFamily.InterNetwork,

SocketType.Stream,ProtocolType.Tcp);
try{

serverSocket.Bind(serverEndpoint);

}catch (Exception)
return;
}
serverSocket.Listen(100);
try
{
while (true)
{
var socket = serverSocket.Accept();
var t1 = new Thread(ServeOne) { IsBackground = true };
t1.Start(socket); }
}
Catch{}

Client gửi username và password
using (var ns = new NetworkStream(socket)){
byte[] value = new byte[1];
value[0] = 0;
ns.Write(value, 0, value.Length);
byte[] userNameBytes = Encoding.UTF8.GetBytes(Username);

byte[] userNameLength = BitConverter.GetBytes(userNameBytes.Length);
byte[] passwordBytes = Encoding.UTF8.GetBytes(Password);
byte[]

passwordLength

=

BitConverter.GetBytes(Password.Length);

ns.Write(userNameLength,

0,

userNameLength.Length)

ns.Write(userNameBytes,

0,

userNameBytes.Length);

60


ns.Write(passwordLength,

0,

passwordLength.Length);


ns.Write(passwordBytes, 0, passwordBytes.Length);

server nhận username và password client gửi lên
using (var socket = (Socket)obj){
using (var ns = new NetworkStream(socket))
byte[] value = new byte[1];
ns.Read(value, 0, 1);
byte[] usernamelengthdata = new byte[4];
ns.Read(usernamelengthdata, 0, 4);
int

usernamelength

=

BitConverter.ToInt32(usernamelengthdata,

0);
byte[] usernamedata = new byte[usernamelength];
ns.Read(usernamedata, 0, usernamelength);
string

username

=

Encoding.UTF8.GetString(usernamedata,

0,


usernamelength);
byte[] passwordlengthdata = new byte[4];
ns.Read(passwordlengthdata, 0, 4);
int

passwordlength

=

BitConverter.ToInt32(passwordlengthdata,

0);
byte[] passworddata = new byte[passwordlength];
ns.Read(passworddata, 0, passwordlength);
string

password

=

Encoding.UTF8.GetString(passworddata,

passwordlength);

server gửi trả client mã tạm thời token thay cho password
var letter = "abcdefghijklmnop123456789".ToCharArray();
Random r = new Random();
var token = "";
for (var i = 0; i < 5; i++){

token += letter[r.Next(0, 25)].ToString();}
ValDictionary[username] = token;
Listclients.Add(username, socket);
var Token = ValDictionary[username];
var tokenLength = BitConverter.GetBytes(Token.Length);
ns.Write(tokenLength, 0, tokenLength.Length);
var tokenBytes = Encoding.UTF8.GetBytes(Token);
ns.Write(tokenBytes, 0, tokenBytes.Length);

61

0,


Client nhận mã tạm thời token thay cho password
byte[] tokenlengthdata = new byte[4];
ns.Read(tokenlengthdata, 0, 4);
int tokenlength = BitConverter.ToInt32(tokenlengthdata, 0);
byte[] tokendata = new byte[tokenlength];
ns.Read(tokendata, 0, tokenlength);
token = Encoding.ASCII.GetString(tokendata, 0, tokenlength);

Xử lý check kết nối của server với client
byte[] data = { 0 };
socket.ReceiveTimeout = 6000;
while (true)
{
socket.Receive(data);
}


Xử lý check kết nối của client với server
byte[] data = { 0 };
while (true){
fixSocket.Send(data);
Thread.Sleep(4000);}

Xử lý gửi file từ server xuống client
byte[] filebytes = Encoding.UTF8.GetBytes(filePath);
byte[] filebytesLength = BitConverter.GetBytes(filebytes.Length);
byte[] fileLength = BitConverter.GetBytes(fileInfo.Length);
try{
ns.Write(filebytesLength, 0, filebytesLength.Length);
ns.Write(filebytes, 0, filebytes.Length);
ns.Write(fileLength, 0, fileLength.Length)
var t1 = Server.getDateTimeNow(DateTime.Now);
using (var fs = fileInfo.OpenRead()){
var buffer = new byte[16000];
int count;
while ((count = fs.Read(buffer, 0, buffer.Length)) > 0){
ns.Write(buffer, 0, count); }}
catch (Exception ex){}

62


×