Báo cáo tiểu luận môn
học: Lập trình mạng
Võ Thanh Thịnh
18/5/2012
Báo cáo tiểu luận môn học: Lập trình mạng
LỜI MỞ ĐẦU
Với sự tiến bộ không ngừng của khoa học và kỹ thuật nói chung, đặc biệt trong
lĩnh vực công nghệ thông tin, ngày nay mạng máy tính đã phát triển nhanh chóng và
đa dạng cả về cấu hình mạng lưới, thiết bị mạng, hệ điều hành và ứng dụng Vì vậy,
những chương trình ứng dụng chạy trên các máy tính đơn lẻ trước đây dần dần được
thế chỗ bới những chương trình ứng dụng chạy trên mạng.
Khi thông tin được sử dụng chung thì nó nảy sinh nhiều vấn đề cần phải giải
quyết như:
• Đồng bộ dữ liệu trên các nút mạng khác nhau (các Servers, dữ liệu các thiết bị
mạng …).
• Định tuyến và phân luồng truy cập vào các Servers một cách hợp lý và hiệu
quả.
• Chống truy cập bất hợp pháp.
• …
Một trong những vấn đề chính cần phải giải quyết là làm sao phải đảm bảo dữ
liệu trên mạng phải thống nhất. Đây cũng là một trong những yêu cầu chính của lĩnh
vực lập trình mạng.
Nội dung chủ yếu trình bày trong tiểu luận này là giải quyết một vấn đề về lập
trình mạng, cụ thể như sau:
• Sử dụng giải thuật Le Lann để lập trình cho các hệ phân tán gắn bó yếu.
• Xây dựng hệ thống phân tán với một số server có khả năng phát/nhận thông
điệp.
• Xây dựng giải pháp gắn bó yếu trên CSDL.
• Lập chương trình bằng Java.
Tôi xin chân thành cảm ơn PGS.TS Lê Văn Sơn đã trực tiếp giảng dạy và giúp
đỡ tôi hoàn thành tiểu luận này.
Học viên thực hiện: Võ Thanh Thịnh Trang 3
Báo cáo tiểu luận môn học: Lập trình mạng
Ví dụ: việc cập nhật bảng định tuyến của các Routers trong một hệ thống viễn
thông có một số trường hợp cũng không cần thiết phải gắn bó mạnh mà nó chỉ được
cập nhật bảng định tuyến với nhau theo một chu kỳ thời gian.
1.2 Giải thuật LeLann
1.2.1 Giới thiệu giải thuật LeLann
1.2.1.1 Giới thiệu bài toán:
Cho tập hợp gốm các nút phần tử mạng được kết nối với nhau theo vòng Ring.
Độ ưu tiên của các phần tử mạng ban đầu là chưa có và không có phần tử nào đảm
nhận chức năng là bộ điều khiển trung tâm. Vấn đề đặt ra là tìm phần tử trên vòng
Ring có độ ưu tiên là cao nhất (hoặc thấp nhất). Không mất tính tổng quát, bài toán
yêu cầu tìm phần tử có độ ưu tiên cao nhất.
1.2.1.2 Giải thuật LeLann
1.2.1.2.1 Nội dung giải thuật
Giải thuật LeLann yêu cầu tất cả các nút mạng đều gửi thông điệp, thông điệp
này mang một số ưu tiên (priority) của riêng mình. Như vậy, tất cả các nút mạng trên
vòng Ring đều nhận được thông điệp của các nút khác, sau khi thực hiện việc sắp xếp
và nút mạng nào có số hiệu ưu tiên cao nhất sẽ được bầu.
Giả sử rằng, mỗi một nút mạng đều biết độ ưu tiên của mình, sau đó bắt đầu
khởi tạo và gán độ ưu tiên vào thông điệp và gửi đi, việc thực hiện chuyển thông điệp
theo chiều kim đồng hồ (chiều bên trái của nút mạng):
Học viên thực hiện: Võ Thanh Thịnh Trang 4
Server 1
Server 2
Server 3Server 4
Server 5
Báo cáo tiểu luận môn học: Lập trình mạng
Nếu độ ưu tiên của thông điệp nhận được cao hơn độ ưu tiên của chính
nó, thông điệp này sẽ được chuyển tiếp trên vòng Ring.
2 Xây dựng hệ thống phân tán với một số Server có khả năng phát/nhận
thông điệp
2.1 Bài toán:
Xây dựng hệ thống đa server có khả năng phát/nhận thông điệp theo hình vẽ
dưới đây.
Nội dung thông điệp ở đây giả sử mang thông tin về độ ưu tiên của các Server,
thông điệp sẽ được phát/nhận theo chiều kim đồng hồ như giải thuật LeLann.
2.2 Thuật toán:
2.2.1 Xây dựng bảng định tuyến:
• Trước tiên ta xây dựng bảng định tuyến để căn cứ vào bảng này, server sẽ
chuyển các thông điệp trên mạng đi theo chiều kim đồng hồ.
Ví dụ:
Server 01 -> Server 02
Server 02 -> Server 03
Server 03 -> Server 04
…
Server N-1 -> Server N
Server N -> Server 01
• Như vậy, các thông điệp phát đi trên mạng từ Server(i) đến Server(i+1). Ngược
lại, Server(i) chỉ nhận được gói tin từ Server(i-1) gửi đến.
Học viên thực hiện: Võ Thanh Thịnh Trang 9
Báo cáo tiểu luận môn học: Lập trình mạng
2.2.2 Xây dựng thủ tục cho các Servers:
• Điều kiện ban đầu: mỗi Server đã biết độ ưu tiên của mình trên mạng lưới
• Các Server phát thông tin về độ ưu tiên của mình, khi nhận được bản tin từ
Server khác gửi đến sẽ thực hiện so sánh, nếu độ ưu tiên của mình lớn hơn thì
không chuyển tiếp thông điệp nữa, ngược lại sẽ chuyển đến Server kế tiếp.
2.2.3 Xây dựng thủ tục phát/nhận thông điệp
• Cấu trúc thông điệp:
Học viên thực hiện: Võ Thanh Thịnh Trang 10
Router 1
Router 2
Router 3
Router 4
Router 5
Báo cáo tiểu luận môn học: Lập trình mạng
đi cho tập hợp các trạm. Trên mỗi trạm, tồn tại một tiến trình server được đảm nhận
nhiệm vụ tiếp nhận các yêu cầu theo trật tự của dấu. Điều đó cho phép có được một sự
gắn bó yếu giữa các bản sao khác nhau.
Các giao dịch cần là các khả năng đọc, ghi hay cập nhật. Cập nhật được xác
định như là một dãy các thao tác đọc rồi ghi, thao tác kiểm tra đọc tức thì trạng thái
hiện hành của một bản sao.
Mỗi một server tiếp nhận các yêu cầu ghi đến từ trạm cục bộ ở thời điểm cho
trước. Nó tiếp nhận các yêu cầu và tính toán trên cơ sở dấu theo tiêu chí lâu nhất. Việc
xác định yêu cầu không được tiến hành ngay tức khắc vì nguyên do ta không thể biết
chắc chắn yêu cầu nào là lâu nhất. Yêu cầu lâu nhất có thể đang truyền trên đường.
Tính không chắc chắn này xuất hiện có điều kiện với giả thiết về hệ viễn thông. Khi
trạm i truyền qua các thông điệp cho trạm j, trật tự nhận các thông điệp tại j là hoàn
toàn giống với trật tự nhận các thông điệp phát đi. Giả thiết này được kiểm tra trong
các mạng thông thường. Việc xác định yêu cầu cần xử lý trên một trạm là hoàn toàn có
thể. Có hai trường hợp cần xem xét:
• Tập hợp các yêu cầu ghi khi chờ chứa các yêu cầu từ tất cả các trạm khác.
Trong trường hợp này, các yêu cầu đi qua, nếu chúng tồn tại, là mới hơn so với
các yêu cầu đã đi qua. Nói cách khác, yêu cầu lâu nhất chính là yêu cầu đang
chờ.
• Tồn tại các trạm mà không có bất kỳ yêu cầu nào được truyền đến. Ta được đưa
đến trường hợp trước đây bằng cách truyền cho tất cả các trạm một thông điệp
yêu cầu và bắt buộc phải xác nhận. Do vậy, sau một khoảng thời gian, theo giả
thiết về độ ổn định, ta sẽ nhận hoặc là các yêu cầu đi qua, hoặc là các trả lời cho
thông điệp yêu cầu. Lúc này, ta có được các thông điệp đến từ tất cả các trạm.
Để tất cả các phần tử trên mạng có thể liên lạc được với nhau, các bảng định
tuyến trên các router phải được cập nhật liên tục. Bài toán đặt ra là xây dựng chương
trình mô phỏng việc cập nhật dữ liệu của các bảng định tuyến trên các router, cụ thể
như sau:
Dữ liệu đầu vào: thông tin các bảng định tuyến của các router được lưu ở file
connected routerX.txt
Trên router 1 có các mạng như sau: 192.168.1.0/30, 192.168.1.4/30,
192.168.1.8/30
Trên router 2 có các mạng như sau: 192.168.1.24/30, 192.168.1.28/30
Trên router 3 có các mạng như sau: 192.168.1.12/30, 192.168.1.16/30,
192.168.1.18/30
Dữ liệu đầu ra: thông tin định tuyến sau khi các router đã trao đổi thông tin với
nhau và được lưu ở file: routing table.txt
Học viên thực hiện: Võ Thanh Thịnh Trang 15
Báo cáo tiểu luận môn học: Lập trình mạng
3.3.2 Giải quyết bài toán
3.3.2.1 Thuật toán:
Áp dụng giải thuật LeLann, các thủ tục xây dựng ở trên cho các Server
gửi/nhận thông điệp đã xây dựng ở phần 1 và 2.
• Một router sẽ gửi thông tin định tuyến đang có gửi cho router kế nó trên vòng
Ring. Thông tin định tuyến được đọc từ các file connected routerX.txt và
routing table.txt
• Sau khi nhận được thông tin định tuyến, router nhận sẽ ghi kết quả lên file
routing table.txt và tiếp tục chuyển (forward) đến router kế tiếp theo thứ tự.
3.3.2.2 Kết quả:
• Sau một số bước gửi/nhận thông tin, toàn bộ các router trên hệ thống mạng sẽ
có thông tin định tuyến hoàn chỉnh.
•
Học viên thực hiện: Võ Thanh Thịnh Trang 16
Báo cáo tiểu luận môn học: Lập trình mạng