Giao thức sử dụng trong hệ thống chia sẻ tệp tin theo yêu cầu áp dụng mô hình Client- Server .... Mô hình Client Server là mô hình nổi tiếng trong mạng máy tính, được áp dụng rộng rãi và
Trang 1LỜI CAM ĐOAN
Tôi xin cam đoan nội dung luận văn này do tôi thực hiện dưới sự hướng dẫn của Thầy giáo PGS.TS Hà Quốc Trung Để hoàn thành luận văn này tôi chỉ áp dụng trên những tài liệu tham khảo không sao chép toàn văn luận văn nào, những mô phỏng giải thích cũng như phần xây dựng giải pháp ứng dụng trong luận văn hoàn toàn trung thực
và là công trình nghiên cứu của riêng tôi
Học viên thực hiện
Nguyễn Thị Thu Hằng
Trang 2ii
LỜI CẢM ƠN
Trước hết, em xin được chân thành gửi lời cảm ơn tới các thầy cô giáo trong trường Đại học Bách khoa Hà Nội nói chung và các thầy cô giáo trong Viện Công nghệ thông tin và Truyền thông nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức và kinh nghiệm quý báu trong suốt quá trình học tập
Em cũng xin được gửi lời cảm ơn sâu sắc đến thầy giáo PGS.TS Hà Quốc Trung đã
hết lòng giúp đỡ, hướng dẫn và chỉ bảo tận tình trong quá trình em thực hiện luận văn tốt nghiệp
Xin được gửi lời cảm ơn chân thành tới Cơ quan Huyện ủy Tiên Lữ đã tạo điều kiện thuận lợi nhất cho em về thời gian và công việc trong quá trình thực hiện luận văn
Cuối cùng em xin cảm ơn gia đình, bạn bè đã quan tâm, động viên, đóng góp ý kiến và giúp đỡ em trong suốt quá trình học tập, nghiên cứu để hoàn thành luận văn tốt nghiệp này
Hà Nội, ngày 20 tháng 4 năm 2015
Học viên thực hiện
Nguyễn Thị Thu Hằng
Trang 3MỤC LỤC
MỞ ĐẦU viii
Lý do chọn đề tài viii
Mục tiêu nghiên cứu ix
Phạm vi nghiên cứu ix
Tóm tắt kết quả ix
Cấu trúc luận văn ix
CHƯƠNG 1 TỔNG QUAN VỀ MÔ HÌNH C-S, MÔ HÌNH P2P VÀ MỘT SỐ GIẢI PHÁP KẾT HỢP GIỮA HAI MÔ HÌNH C-S VÀ P2P 1
1.1 Tổng quan về mô hình C-S 1
1.1.1 Khái niệm về mô hình C-S 1
1.1.2 Cấu trúc vật lý 2
1.1.3 Nguyên tắc hoạt động 3
1.1.4 Phân loại mô hình C-S 5
1.2 Tổng quan về mô hình P2P 7
1.2.1 Khái niệm về mô hình P2P 7
1.2.2 Cấu trúc vật lý 8
1.2.3 Nguyên tắc hoạt động của mạng P2P 9
1.2.4 Phân loại mạng ngang hàng 9
1.2.5 Các lĩnh vực ứng dụng của P2P 10
1.2.6 Một số ứng dụng sử dụng mô hình P2P 12
1.2.7 So sánh mô hình C-S và mô hình P2P 14
1.3 Một số giải pháp kết hợp giữa mô hình C-S và mô hình P2P 17
1.3.1 Mô hình Local Proxy 17
1.3.2 Mô hình Chia sẻ Cache (Shared Cache folder) 18
CHƯƠNG 2 DỊCH VỤ CHIA SẺ TỆP THEO YÊU CẦU 22
2.1 Giới thiệu chung 22
2.2 Dịch vụ theo yêu cầu (ondemand) 23
2.2.1 Khái niệm về dịch vụ theo yêu cầu 23
Trang 4iv
2.2.2 Chia sẻ tệp tin theo yêu cầu 23
2.3 Phân loại hệ thống chia sẻ tệp tin 24
2.3.1 Chia sẻ tệp theo mô hình C-S 24
2.3.2 Chia sẻ tệp theo mô hình P2P 25
2.4 Giao thức sử dụng trong hệ thống chia sẻ tệp tin theo yêu cầu áp dụng mô hình Client- Server 26
2.4.1.Mô hình kiến trúc xử lý trong giao thức FTP 26
2.42 Các tiến trình trong FTP 27
2.4.3 Thiết lập kênh điều khiển và chứng thực người dùng trong FTP 28
2.4.4 Quản lý kênh dữ liệu FTP 30
2.4.5 Các phương thức truyền dữ liệu trong FTP 33
2.4.6 Các mã thông điệp đáp trả trong mô hình FTP 34
CHƯƠNG 3 DỰ KIẾN XÂY DỰNG ỨNG DỤNG CHIA SẺ TỆP 36
THEO MÔ HÌNH SHARED CACHE FOLDER 36
3.1 Các chức năng của ứng dụng chia sẻ tệp theo mô hình C-S 36
3.2 Phân tích hệ thống chia sẻ tệp theo mô hình Shared Cache Folder 37
3.2.1 Lựa chọn giao thức sử dụng trong hệ thống P2P 37
3.2.2 Giải pháp xây dựng ứng dụng chia sẻ tệp tin dựa trên giao thức Chord 42 3.3 Thiết kế các module trong ứng dụng 44
3.3.1 Module client 44
3.3.2 Module Cache 44
3.3.3 Module P2P 44
3.3.4 Module Server 44
3.4 Thiết kế chi tiết một số chức năng của ứng dụng chia sẻ tệp tin theo mô hình Shared Cache Folder 45
3.4.1 Chức năng đăng ký tài khoản 45
3.4.2 Chức năng đăng nhập 46
3.4.3 Chức năng tìm kiếm tệp tin 47
3.4.4 Chức năng quản lý tệp cá nhân 49
Trang 53.4.5 Chức năng đưa tệp lên hệ thống (Upload file) 49
3.4.6 Tải tệp từ hệ thống (Download file) 50
3.5 Dự kiến thử nghiệm và đánh giá 51
KẾT LUẬN 52
TÀI LIỆU THAM KHẢO 54
Trang 6vi
DANH MỤC HÌNH
Hình 1.1 Mô hình Client- Server 2
Hình 1.2 Giao tiếp giữa client và server 4
Hình 1.3 Mô hình C-S hai tầng 5
Hình 1.4 Mô hình C-S 3 tầng 6
Hình 1.5 Mô hình C-S n tầng 7
Hình 1.6 Mô hình peer to peer 8
Hình 1.7 Nguyên tắc hoạt động của mô hình P2P 9
Hình 1.8 Kiến trúc Napster 12
Hình 1.9 Kiến trúc của Gnutella 13
Hình 1.10 So sánh mô hình Client- Server và mô mình P2P 14
Hình 1.11 Mô hình Local Proxy 17
Hình 1.12 Truy cập tệp tin trong mô hình Local Proxy 18
Hình 1.13 Cơ chế hoạt động của bộ nhớ Cache 19
Hình 1.14 Mô hình Chia sẻ Cache 19
Hình 1.15 Truy cập tệp tin trong mô hình Shared Cache 21
Hình 2.1 Hoạt động của hệ thống chia sẻ tệp tin 25
Hình 2.2 Mô hình hoạt động của giao thức FTP 27
Hình 2.3 Kết nối kênh dữ liệu dạng chủ động 31
Bảng 3.1 Mô tả chức năng của hệ thống chia sẻ tệp 37
Hình 3.2 Mô hình vòng Chord với khóa có chiều dài 6 bit 39
Hình 3.3 Quá trình tìm kiếm đơn giản trên Chord 40
Hình 3.4 Bảng finger của nút 8 41
Hình 3.5 Mô hình shared cache folder 43
Hình 3.6 Đăng ký tài khoản 45
Hình 3.7 Chức năng đăng nhập 47
Hình 3.8 Chức năng tìm kiếm tệp 48
Hình 3.9 Chức năng quản lý tệp cá nhân 49
Hình 3.10 Chức năng Upload file lên hệ thống 49
Hình 3.11 Chức năng tải tệp từ hệ thống 50
Trang 7DANH MỤC TỪ VIẾT TẮT
CPU Central Processor Unit Bộ xử lý trung tâm
DOS Disk Operating System Hệ điều hành đĩa
DTP Data Tranfer Process Tiến trình truyền dữ liệu
FTP File Trafer Protocol Giao thức truyền tập tin
HTTP HyperText Transfer Protocol Giao thức truyền tải siêu văn bản
IPC Inter-Process Communication Tiêu chuẩn giao tiếp giữa các ứng
dụng và máy tính trên mạng
NOS Network Operating System Hệ điều hành mạng
PI Protocol Interpreter Thông dịch giao thức
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên
TCP Transmission Control Protocol Giao thức điều khiển truyền vận
TCP/IP Transmission Control Protocol /
Trang 8Mô hình Client Server là mô hình nổi tiếng trong mạng máy tính, được áp dụng rộng rãi và là mô hình của hầu hết các ứng dụng phân tán Trong mô hình này, mọi xử
lý đều được thực hiện ở phía server nên dễ xảy ra vấn đề nút cổ chai khi có quá nhiều yêu cầu cần được server xử lý, tuy nhiên ưu điểm của mô hình này là dễ thiết kế giao thức
Với mô hình peer to peer thì khác, mọi peer trong mạng đều có vai trò như nhau, vừa là client, vừa là server So với các mô hình khác, mạng p2p có nhiều ưu điểm như khả năng mở rộng, không tồn tại điểm chết, khả năng của hệ thống tỉ lệ thuận với số lượng máy tham gia vào mạng…Nhiều ứng dụng đã được xây dựng trên mạng ngang hàng như FreeNet, BitTorent, Emula…Tuy nhiên, nhược điểm của mô hình này là tính bảo mật và tính tin cậy không cao
Cùng với sự phát triển ngày càng tăng của các ứng dụng mạng và số lượng các thiết bị tham gia vào mạng đòi hỏi việc tìm kiếm thông tin cần thiết phải được thực hiện một cách nhanh chóng, chính xác, an toàn và độ tin cậy cao Yêu cầu này đòi hỏi
mô hình ngày càng được mở rộng và hiệu năng hoạt động của hệ thống ngày càng tăng Để xây dựng được một ứng dụng như mong muốn, chúng ta phải tận dụng được những ưu điểm của các mô hình, đồng thời hạn chế được những hạn chế của chúng Trên cơ sở những yêu cầu đó, việc nghiên cứu các phương pháp để kết hợp những ưu điểm của các mô hình truyền thống vào mô hình mới là việc làm rất cần thiết
Từ những lý do trên, em đã chọn đề tài: “Kết hợp mô hình C-S và mô hình P2P
trong phát triển các ứng dụng phân tán” với mục đích nghiên cứu về cách thức kết
hợp mô hình C-S mà mô hình P2P để làm tăng hiệu năng hoạt động của các ứng dụng phân tán
Trang 9 Mục tiêu nghiên cứu
- Tìm hiểu các khái niệm, thành phần, kiến trúc và cách thức hoạt động của mô hình CS và mô hình P2P và một số giải pháp kết hợp giữa C-S và P2P
- Tìm hiểu về cache và chia sẻ bộ nhớ cache trong các mô hình
- Tìm hiểu về dạng dịch vụ theo yêu cầu ondemand, cụ thể hơn là bài toán chia
sẻ tệp theo yêu cầu dựa trên mô hình shared cache folder
- Dự kiến cài đặt ứng dụng kết hợp mô hình C-S và P2P trong phát triển ứng dụng phân tán: dựa trên mô hình shared cache folder áp dụng cho tệp tin văn bản với dạng dịch vụ theo yêu cầu
- Tìm hiểu được khái niệm cơ bản về cache, shared cache
- Tìm hiểu các khái niệm cơ bản liên quan về dạng dịch vụ theo yêu cầu
- Trình bày được sự kết hợp mô hình CS và mô hình P2P trong phát triển ứng dụng phân tán, cụ thể là mô hình chia sẻ cache
- Dự kiến cài đặt dựa trên phân tích
Cấu trúc luận văn
Nội dung của luận văn dự kiến sẽ được chia thành 3 chương với những nội dung tổng quát như sau:
Chương 1: Tổng quan về mô hình C-S, mô hình P2P và một số giải pháp kết hợp giữa mô hình C-S và P2P Trong chương này trình bày các khái niệm
cơ bản, nguyên tắc hoạt động và kiến trúc của 2 mô hình CS và P2P Đồng thời, trình bày về một số mô hình kết hợp giữa C-S và P2P như: mô hình lai, mô hình Local Proxy và mô hình Shared Cache Folder
Trang 10x
Chương 2 Dịch vụ chia sẻ tệp tin theo yêu cầu Trong chương này, trình bày khái niệm cơ bản về tệp tin, chia sẻ tệp tin, dịch vụ theo yêu cầu và giao thức chia sẻ tệp tin trong mô hình C-S
Chương 3 Dự kiến xây dựng ứng dụng chia sẻ tệp tin theo mô hình Shared Cache Folder Trong chương này trình bày việc phân tích thiết kế module và một số chức năng cơ bản của ứng dụng chia sẻ tệp dựa trên mô hình Shared Cache Folder
Cuối cùng là kết luận và hướng phát triển của luận văn
Trang 11CHƯƠNG 1 TỔNG QUAN VỀ MÔ HÌNH C-S, MÔ HÌNH P2P
VÀ MỘT SỐ GIẢI PHÁP KẾT HỢP GIỮA HAI MÔ HÌNH C-S VÀ P2P 1.1 Tổng quan về mô hình C-S
1.1.1 Khái niệm về mô hình C-S
Mô hình C-S là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web hiện có Ý tưởng của mô hình này là client (đóng vài trò là người yêu cầu dịch vụ) gửi một yêu cầu (request) đến server (đóng vai trò là đối tượng phục vụ các yêu cầu), server sẽ xử lý và trả kết quả về cho client
Trên thực tế thì một server có thể được nối tới nhiều server khác nhằm làm việc hiệu quả và nhanh hơn Khi nhận được yêu cầu từ client, server này có thể gửi tiếp yêu cầu vừa nhận được cho server khác ví dụ như database server vì bản thân nó không thể xử lý được yêu cầu này Máy server có thể thi hành các nhiệm vụ đơn giản hoặc phức tạp Ví dụ như một server trả lời thời gian hiện tại trong ngày, khi một máy client yêu cầu lấy thông tin về thời gian nó sẽ phải gửi một yêu cầu theo một tiêu chuẩn do server định ra, nếu yêu cầu được chấp nhận thì máy server sẽ trả về thông tin
mà client yêu cầu
Thông thường chương trình server và client được thi hành trên hai máy khác nhau Cho dù lúc nào server cũng ở trạng thái sẵn sàng chờ nhận yêu cầu từ client nhưng trên thực tế một tiến trình liên tác qua lại (interaction) giữa client và server lại bắt đầu ở phía client, khi client gửi tín hiệu yêu cầu tới server Các chương trình server thường đều thi hành ở mức ứng dụng (tầng ứng dụng của mạng) Sự thuận lợi của phương pháp này là nó có thể làm việc trên bất cứ một mạng máy tính nào có hỗ trợ giao thức truyền thông chuẩn, cụ thể ở đây là giao thức TCP/IP Với các giao thức chuẩn giúp cho các nhà sản xuất tích hợp nhiều sản phẩm khác nhau của họ lên mạng
mà không gặp phải khó khăn gì Với các chuẩn này thì các chương trình server cho
một dịch vụ nào đó có thể thi hành trên một hệ thống chia sẻ thời gian (timesharing
system) với nhiều chương trình và dịch vụ khác hoặc nó có thể chạy trên một máy tính
cá nhân bình thường Với mô hình trên chúng ta nhận thấy rằng mô hình client/server chỉ mang đặc điểm của phần mềm không liên quan gì đến phần cứng mặc dù trên thực
Trang 122
tế yêu cầu cho một máy server cao hơn nhiều so với máy client Lý do bởi vì máy
server phải quản lý rất nhiều các yêu cầu từ nhiều clients khác nhau trên mạng
Hình 1.1 Mô hình Client- Server
Ví dụ về mô hình Client- Server: Dịch vụ Web là một dịch vụ cơ bản trên mạng internet hoạt động theo mô hình client- server Trình duyệt web trên các máy client sử dụng giao thức TCP/IP để đưa ra các yêu cầu HTTP tới máy server Trình duyệt có thể đưa ra yêu cầu về một trang web cụ thể hay yêu cầu thông tin trong cơ sở dữ liệu Máy server sử dụng các phần mềm của nó để phân tích các yêu cầu từ các gói tin nhận được, kiểm tra tính hợp lệ của các client và thực hiện phục vụ các yêu cầu đó Cụ thể
là gửi lại trả lại client một trang web cụ thể hay những thông tin trên cơ sở dữ liệu dưới dạng một trang web Server là nơi lưu trữ nội dung các thông tin, các website, phần mềm trên server giúp server xác định được trang cần yêu cầu và gửi tới Client
Cơ sở dữ liệu và các ứng dụng tương tự khác trên server được khai thác và kết nối qua các chương trình như Common Gateway Interface, khi các máy server nhận yêu cầu về
tra cứu trong Cơ sở dữ liệu, nó chuyển yêu cầu tới server có chứa dữ liệu đó để xử lý
1.1.2 Cấu trúc vật lý
Yếu tố cơ bản trong mô hình khách chủ là trong hệ thống phải có các máy tính kết nối với máy server sử dụng một giao thức bất kỳ nhằm mục đích sử dụng các tài nguyên, dữ liệu của server
Trang 13a Server (Server)
Server: là một hoặc nhiều bộ vi xử lý, bao gồm một tập các tiến trình mà mỗi tiến trình đóng vai trò như là một trình quản lý tài nguyên cho một tập hợp các tài nguyên cho trước Server có vai trò thụ động và đáp ứng cho client bằng cách phục vụ mỗi yêu cầu và trả lại kết quả cho client
Trước những năm 1990, các máy tính lớn (main frame) được sử dụng làm server, hiện nay các máy tính cá nhân vẫn được sử dụng như là một server Vì cùng một lúc sẽ có nhiều người truy xuất về server thông qua máy trạm do đó server phải có
bộ vi xử lý tốc độ cao (CPU), tài nguyên lớn (RAM, Hardisk) để hoạt động tốt Trong
hệ thống mạng, có thể có nhiều server có chức năng độc lập nhau
b Máy trạm (Client)
Client: là máy trạm duy nhất tập hợp các tiến trình trong đó mỗi tiến trình thực hiện một tác vụ nào đó cần truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng chung Client có vai trò chủ động, kết nối đến server để gửi yêu cầu, chờ nhận kết quả trả về và xử lý kết quả Các client chỉ có thể giao tiếp với server mà không thể giao tiếp trực tiếp với các client khác
Các máy trạm truy xuất các tài nguyên đã được chia sẻ trên mạng như các dữ liệu dùng chung trên server và in ấn các tài liệu trên máy in dùng chung
c Dây cáp mạng (Cable)
Hệ thống dây kim loại hoặc quang học nối kết vậy lý các máy tính, máy in lại với nhau
d Dữ liệu chung (Shared data)
Các tập tin, thư mục mà người sử dụng có thể truy xuất trên server thông qua các máy trạm và dây cáp mạng
Trang 144
Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và một dạng đồng bộ hóa cụ thể giữa client và server Tiến trình server phải nhận thức được thông điệp được yêu cầu ở bước một ngay khi nó đến và hành động phát ra yêu cầu trong client phải được tạm dừng (bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tới khi nó nhận được đáp ứng do server gửi về ở bước ba
Mô hình Client-Server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send) và nhận (receive) hay yêu cầu (request) và trả lời (reply)
Hình 1.2 Giao tiếp giữa client và server
Quá trình giao tiếp client và server có thể diễn ra theo một trong hai chế độ: bị phong tỏa (blocked) và không bị phong tỏa (non-blocked)
Khi thiết kế các ứng dụng theo mô hình C-S, người ta chia các xử lý ra làm 2 nhánh: nhánh client và nhánh server
a Nhánh máy trạm (client side)
Các ứng dụng sẽ thực hiện các công việc đọc và hiển thị dữ liệu hiện có bên trong cơ sở dữ liệu, tính toán dữ liệu đang hiển thị trên các màn hình ứng dụng, in dữ
Trang 15liệu Các ứng dụng này còn cho phép người dùng có thể thực hiện các thao tác xóa, thêm, sửa dữ liệu hiện có bên trong cơ sở dữ liệu bên nhánh server
Các ứng dụng khi xây dựng nên tránh việc đọc toàn bộ dữ liệu của bảng (Table) khi truy xuất dữ liệu từ server mà chỉ nên lấy về đúng các thông tin cần thiết cho các
xử lý Việc này làm giảm đi lượng thông tin lưu thông trên mạng
Mỗi khi cần phục vụ, client sẽ tạo một cầu nối tới server và gửi yêu cầu tới nó Sau khi nhận được sự phục vụ nó sẽ ngắt kết nối và trở về trạng thái như một chương trình bình thường
b Nhánh máy chủ (server side)
Các xử lý được thực hiện trực tiếp trên server Để đảm bảo việc bảo mật (security), những người dùng trên mạng phải được cấp phát quyền truy cập thì mới có thể truy xuất được các dữ liệu dùng chung
Việc cập nhật dữ liệu cho phép đồng thời cùng lúc giữa những người dùng hiện hành trên mạng, ví dụ như server cho phép cùng lúc cả hai người dùng có thể cập nhật thông tin của khách hàng trong bảng khách hàng
Việc sao lưu dữ liệu (backup data) được tự động để đảm bảo dữ liệu không bị mất trong các trường hợp xấu xảy ra
1.1.4 Phân loại mô hình C-S
a Mô hình hai tầng (two- tier model)
Hình 1.3 Mô hình C-S hai tầng Chương trình ứng dụng: cung cấp một giao diện để thông qua đó người dùng có thể thực hiện các thao tác trên dữ liệu mà không cần biết về cấu trúc lệnh
Cơ sở dữ liệu phía server: Các cơ sở dữ liệu này thực hiện việc gửi dữ liệu tới cho chương trình ứng dụng thông qua câu lệnh SQL và trả kết quả về cho chương trình
Trang 16c Mô hình n tầng (n- tier model)
Mô hình này còn được gọi là mô hình n lớp Trong đó, lớp client là một chương trình rất nhỏ, chỉ chứa vừa đủ mã để thực hiện giao tiếp với người dùng Mô hình này bao gồm nhiều thành phần và mỗi thành phần có tác dụng riêng để trao đổi với lớp client, lớp server thật
Mô hình n-tầng được chia thành các tầng như sau:
- Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng
- Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và các yêu cầu của người dùng được quản lý như thế nào
Trang 17- Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp
- Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng dụng như các thành phần (truyền thông điệp, hỗ trợ giao tác)
Mô hình n tầng có ưu điểm tăng tính bảo mật, tăng khả năng linh hoạt của ứng dụng tuy nhiên nó cũng làm tăng sự phức tạp trong triển khai và kiểm thử ứng dụng
Hình 1.5 Mô hình C-S n tầng
1.2 Tổng quan về mô hình P2P
1.2.1 Khái niệm về mô hình P2P
Mạng ngang hàng (peer-to-peer network), còn gọi là mạng đồng đẳng, là
một mạng máy tính trong đó hoạt động của mạng chủ yếu dựa vào khả năng tính toán
và băng thông của các máy tham gia chứ không tập trung vào một số nhỏ các server trung tâm như các mạng truyền thống
Mạng ngang hàng thường được sử dụng để kết nối các máy thông qua một
lượng kết nối dạng “ad hoc” Mạng ngang hàng có nhiều ứng dụng Ứng dụng thường
xuyên gặp nhất là chia sẻ tệp tin, tất cả các dạng như âm thanh, hình ảnh, dữ liệu, hoặc để truyền dữ liệu thời gian thực như điện thoại VoIP Một mạng ngang hàng đúng nghĩa không có khái niệm server và client, nói cách khác, tất cả các máy tham gia đều bình đẳng và được gọi là peer, là một nút mạng đóng vai trò đồng thời là client
và server đối với các máy khác trong mạng
Trang 18c Dữ liệu chung (Shared data)
Các tập tin, thư mục mà các nút mạng chia sẻ để các nút mạng khác có thể truy xuất thông qua dây cáp mạng
Ngoài ra, các thiết bị phần cứng của mỗi nút mạng cũng có thể được chia sẻ, dùng chung như CD-Rom, Printer,…
Trang 191.2.3 Nguyên tắc hoạt động của mạng P2P
Hình 1.7 Nguyên tắc hoạt động của mô hình P2P
Sơ đồ này cho thấy hoạt động của mô hình P2P Những đường liền chỉ ra vị trí
có dây cáp mạng là kết nối giữa các thành phần của mạng với nhau Các thành phần của hệ thống mạng được kết nối với nhau thông qua hệ thống dây cáp này Đường chấm chỉ ra rằng mỗi máy tính có thể giao tiếp và chia sẻ file với tất cả các máy tính khác trên mạng Mỗi peer có thể giao tiếp trực tiếp với các peer khác trong mạng Một máy in kết nối với một máy tính có thể được sử dụng bởi các máy tính khác trên mạng, nếu máy tính của máy in đó cho phép
1.2.4 Phân loại mạng ngang hàng
a Hệ thống mạng ngang hàng tập trung
Đây là mạng ngang hàng thế hệ thứ nhất, vẫn còn dựa trên máy chủ tìm kiếm tập trung Mỗi peer trong mạng lưu trữ tệp định chia sẻ với các peer khác trong hệ thống Một bảng lưu trữ thông tin kết nối của người dùng đăng ký vào hệ thống (Ip_Address….) và bảng lưu trữ danh sách các tệp mà mỗi người dùng định chia sẻ (tên_tệp, dung_lượng,….) Mọi máy tính tham gia vào mạng đều kết nối đến máy chủ tìm kiếm tập trung, các yêu cầu tìm kiếm được gửi đến máy chủ trung tâm phân tích, sau đó, máy chủ sẽ gửi cho peer yêu cầu địa chỉ ip của peer có chứa tài nguyên mà nó yêu cầu Quá trình truyền file sẽ thực hiện đúng theo cơ chế truyền file của mạng ngang hàng giữa các peer với nhau, không cần đến vai trò của server
Napster là mạng ngang hàng đặc trưng cho hệ thống mạng ngang hàng tập trung này
Trang 2010
b Mạng ngang hàng thuần túy
Là một dạng khá của thế hệ thứ nhất trong hệ thống các mạng ngang hàng Không có máy chủ tìm kiếm tập trung như trong mạng Napster, nên nó khắc phục vấn
đề nút cổ chai tại server tìm kiếm Vấn đề tìm kiếm trong mạng này thực hiện cơ chế Flooding, yêu cầu tìm kiếm được gửi đến tất cả các node trong mạng là láng giềng với
nó Điều này làm tăng đáng kể lưu lượng trong mạng Vấn đề của mô hình mạng này
là băng thông của mạng
Các phần mềm tiêu biểu cho mạng ngang hàng này là Gnutella 4.0 và FreeNet
c Mạng ngang hàng lai
Là mô hình mạng ngang hàng thế hệ thứ 2 nhằm khắc phục nhược điểm của mô hình mạng ngang hàng thế hệ đầu tiên Trong mô hình mạng này, khái niệm được nhắc đến là các superPeer Các superPeer tạo thành một mạng không có cấu trúc, có sự khác nhau giữa superPeer và clientPeer trong mạng Mỗi superPeer kết nối đến nhiều clientPeer Mỗi superPeer có nhiệm vụ như một máy chủ tập trung tìm kiếm trong một mạng nhỏ của các clientPeer kết nối đến nó Như vậy, vấn đề băng thông mạng cũng được khắc phục vì các yêu cầu tìm kiếm không được truyền đi khắp nơi trong mạng, vấn đề nút cổ chai cũng được khắc phục do trong mạng có nhiều hơn một superPeer
d Mạng ngang hàng có cấu trúc
Điều quan trong đối với những hệ thống có cấu trúc là cung cấp sự liên kết giữa nội dung và vị trí của node Việc này thường dựa trên cấu trúc dữ liệu bảng băm phân tán DHT- Distributed Hash Table Dựa vào cấu trúc bảng băm phân tán, có nhiều mô hình mạng ngang hàng có cấu trúc như Chord, Pastry…
Khả năng mở rộng của mô hình mạng có cấu trúc được nâng cao rõ rệt Tuy nhiên, việc quản lý cấu trúc topo mạng gặp khó khăn, đặc biệt trong trường hợp tỷ lệ vào/ra mạng của các node cao
1.2.5 Các lĩnh vực ứng dụng của P2P
a Giao tiếp
Đóng vai trò quan trọng trong các ứng dụng mạng ngang hàng, nó cung cấp thông tin về các peer và các nguồn tài nguyên nào là sẵn sàng trên mạng Tạo ra khả năng cho các peer kết nối trực tiếp với nhau và trao đổi tài nguyên với nhau
Trang 21Ứng dụng điển hình về ứng dụng mạng ngang hàng trong giao tiếp là ứng dụng gửi tin nhắn
b Chia sẻ file
Ứng dụng được sử dụng nhiều nhất của mạng ngang hàng là chia sẻ file Đặc điểm của của vấn đề chia sẻ file là các peer có các file được download với vai trò là một client làm cho chúng luôn sẵn sàng với các peer khác trong vai trò của một server
Một vấn đề quan trọng khác của vấn đề chia sẻ file trong mạng ngang hàng là việc tìm kiếm Các mô hình khác nhau được phát triển phục vụ cho việc tìm kiếm file trong mạng: Mô hình thư mục trung tâm, mô hình hướng tài liệu…Mỗi mô hình đều được minh họa qua các ứng dụng thực của mạng ngang hàng như Napster, Gnutella, Kazaa…
c Băng thông
Ngày nay khi số lượng lớn các dữ liệu đa phương tiện tăng nhanh, hiệu quả của việc sử dụng băng thông ngày càng trở nên quan trọng Hiện nay, hướng tiếp cận tập trung trong đó các file được lưu trữ trên server trung tâm và được truyền từ đó tới các máy khách yêu cầu đang được sử dụng chủ yếu Trong trường hợp số lượng các yêu cầu tăng nhanh sẽ dẫn đến tình trạng nút cổ chai Và hướng tiếp cận theo mạng ngang hàng và vấn đề cân bằng tải sẽ đạt được sự tối ưu nhất vì nó tận dụng tối đa được các hướng truyền dẫn trong hệ thống mạng
Khác với kiến trúc C-S, các mạng ngang hàng lai có thể có sự cân bằng tải tốt hơn do chì có yêu cầu truy vấn được thực hiện giữa máy tính tham gia vào mạng và máy chủ, còn vấn đề truyền file được thự chiện giữa hai máy tính tham gia mạng với nhau, điều này dẫn đến việc phân bố tải đều trên hệ thống mạng
d Chu trình xử lý
Trong các ứng dụng đòi hỏi cần phải có sức mạnh tính toán, người ta thường tìm cách xây dựng các máy tính cấu hình cao, đắt tiền chứ chưa chú trọng vào việc tận dụng khả năng tính toán của các máy tính nối mạng Ngày nay, do đòi hỏi tính toán hiệu năng cao và nhiều nghiên cứu ứng dụng mạng ngang hàng vào xử lý tính toán được đưa ra Việc sử dụng các ứng dụng mạng ngang hàng để bó cụm các chu trình xử
lý có thể nhận được khả năng tính toán ngang bằng với một siêu máy tính đắt tiền
Trang 22Napster là một ví dụ điển hình của hệ thống chia sẻ file Napster khắc phục được 2 nhược điểm chính của mô hình C-S Nhược điểm thứ nhất là khả năng lưu trữ của server khi lưu trữ hàng tỉ file nhạc mà những người dùng trên thế giới quan tâm nên thay vì lưu trữ trên server thì nó được lưu trữ trên rất nhiều máy tính cá nhân trên khắp thế giới Nhược điểm thứ hai là băng thông mạng, server không thể cùng lúc đáp
Trang 23ứng cho hàng ngàn yêu cầu tải dữ liệu của hàng ngàn người dùng ở khắp nới trên thế giới Và Napster đã khắc phục điều này bằng cách chia sẻ công việc tới tất cả các máy tính cá nhân tham gia vào hệ thống
b Gnutella
Hình 1.9 Kiến trúc của Gnutella
Để tìm kiếm node đang chia sẻ tệp trong mạng, thông điệp được gửi đến một số node lân cận được lựa chọn Tới mỗi node truy vấn sẽ được so sánh với danh sách các tệp đang chia sẻ của nó cùng với một tiêu chí xác định trước Nếu tiêu chí này thỏa mãn, thì danh sách kết quả được gửi về cho node yêu cầu Nếu tiêu chí không thỏa mãn, thì thông điệp truy vấn sẽ được gửi tiếp đến các node lân cận khác Quá trình này
sẽ dừng lại cho đến khi tiêu chí tìm kiếm được thỏa mãn hoặc sau một số lần chuyển tiếp nhất định Khi nhận được danh sách gửi về, kết nối trực tiếp tới node chứa tệp yêu cầu và tải dữ liệu về máy
c So sánh Napster và Gnutella
Là 2 ứng dụng chia sẻ file điển hình sử dụng mô hình P2P Napster có ưu điểm
dễ sử dụng cơ chế tìm kiếm tập trung nhanh và hiệu quả Tuy nhiên, hệ thống cũng bộc lộ những hạn chế nhất định Do việc tìm kiếm diễn ra tập trung trên máy chủ nên khi số lượng lớn người dùng tham gia vào hệ thống có thể dẫn tới việc máy chủ tìm kiếm bị quá tải và nó chỉ có thể chia sẻ file nhạc MP3 và không hỗ trợ bất kỳ định dạng file nào khác
Trang 2414
Gnutella thì khác, nó sử dụng cơ chế phi tập trung, ngoài định dạng MP3, nó còn hỗ trợ được nhiều định dạng file nhạc khác Tuy nhiên, hệ thống cũng có nhiều nhược điểm Do cơ chế hoạt động hoàn toàn phân tán và bình đẳng nên không thực sự tồn tại một nhà cung cấp dịch vụ tập trung nên không có sự hỗ trợ về kỹ thuật khi hệ thống có sự cố Thời gian tìm kiếm file trong Gnutella cũng lâu hơn trong Napster do phải chuyển thông điệp tới nhiều node trong mạng để tìm kiếm Băng thông của mạng cũng bị tiêu tốn do thông điêp được gửi quảng bá tới các node trong mạng Khi một node tham gia vào mạng, nó sẽ liên tục phải xử lý, trả lời các truy vấn và tiêu tốn băng thông cho việc tải file của người dùng khác Và mọi node tham gia vào mạng mà không cần đăng ký tài khoản nên việc xác thực tính hợp lệ và an toàn của các thông điệp cũng như nội dung các file dữ liệu tải về là rất khó
Từ việc phân tích những ưu điểm và nhược điểm của ứng dụng chia sẻ tệp theo
mô hình C-S và mô hình P2P như trên, chúng ta có thể nhận thấy việc kế thừa được những ưu điểm của hai mô hình trên, đồng thời khắc phục được những hạn chế của chúng là việc cần thiết để làm tăng hiệu năng của hệ thống
1.2.7 So sánh mô hình C-S và mô hình P2P
Hình 1.10 So sánh mô hình Client- Server và mô mình P2P Một mục đích quan trọng của mạng ngang hàng là trong mạng tất cả các máy tham gia đều đóng góp tài nguyên, bao gồm băng thông, lưu trữ, và khả năng tính toán
Do đó khi càng có nhiều máy tham gia mạng thì khả năng tổng thể của hệ thống mạng
Trang 25càng lớn Ngược lại, trong cấu trúc server-client, nếu số lượng server là cố định, thì khi
số lượng client tăng lên khả năng chuyển dữ liệu cho mỗi client sẽ giảm xuống
Tính chất phân tán của mạng ngang hàng cũng giúp cho mạng hoạt động tốt khi một số máy gặp sự cố Đối với cấu trúc tập trung, chỉ cần server gặp sự cố thì cả hệ thống sẽ ngưng trệ Trong một mạng lưới tập trung, quản trị hệ thống là lực lượng duy nhất kiểm soát được những tài nguyên được chia sẻ Nếu các quản trị viên quyết định không quảng bá một tập tin, họ chỉ cần loại bỏ nó khỏi server của họ, và nó sẽ không còn có sẵn cho người dùng Và người sử dụng không có vai trò gì trong việc quyết định những nội dung được phân phối trên toàn mạng Trong mô hình mạng C-S có thể giám sát và quản lý được nội dung của các tài nguyên được chia sẻ Clients sẽ không gặp phải bất cứ khó khăn gì khi truy cập một nội dung sẵn có trên server ổn định
Trong mạng P2P việc chia sẻ các tập tin phải cần ít nhất một nút trong mạng có những yêu cầu dữ liệu, và nút đó phải có khả năng kết nối với các nút chứa dữ liệu
đó Yêu cầu này là đôi khi khó có thể đáp ứng bởi vì người dùng có thể xóa hoặc ngừng chia sẻ dữ liệu bất cứ lúc nào và người dùng trong mạng P2P hoàn toàn chịu trách nhiệm về quyết định những nội dung chia sẻ Các tập tin không phổ biến cuối cùng sẽ biến mất và trở thành không có sẵn trên hệ thống khi người dùng không chia
sẻ chúng Tuy nhiên các tập tin phổ biến sẽ được phân phối cao và dễ dàng Các tập tin phổ biến trên mạng P2P thực sự có sự ổn định hơn và sẵn có hơn các tập tin trên các mạng trung tâm
Trong một hệ thống tập trung, các quản trị viên chịu trách nhiệm về việc phục hồi và sao lưu dữ liệu, trong khi ở các hệ thống P2P, mỗi nút yêu cầu hệ thống sao lưu của riêng mình Bảng sau cho thấy ưu điểm cũng như nhược điểm của 2 mô hình P2P
và C-S:
- Một mạng ngang hàng cho phép các
peer đóng góp, chia sẻ nguồn tài nguyên
với nhau Tài nguyên riêng rẽ của mỗi
peer gồm CD- ROM, máy in, ổ
- Dữ liệu được lưu trữ ở một Server trung tâm, tốc độ cao (Tốc
độ truy cập thường lớn hơn so với mạng P2P)
Trang 2616
cứng…các tài nguyên này có thể được
truy cập từ bất cứ các peer nào trong
mạng
- Các peer đóng vai trò như cả Client
(truy vấn thông tin) và Server (cung cấp
thông tin)
- Khi một máy client yêu cầu lấy thông tin, nó sẽ phải gửi một yêu cầu theo tiêu chuẩn do Server định
ra, nếu yêu cầu được chấp nhận thì máy server sẽ trả về thông tin mà client yêu cầu
Ưu điểm
- Không cần server riêng, các node chia
sẻ tài nguyên với nhau Khi mạng càng
được mở rộng thì khả năng hoạt động của
hệ thống
- Hoạt động với bất cứ loại ứng dụng nào
- Sử dụng được với các ứng dụng chia sẻ cơ sở dữ liệu, dễ dàng trong việc quản lý, quản trị
- Đáng tin cậy hơn
- Mức độ an toàn cao nhất
- Việc thiết kế giao thức đơn giản
vì chỉ có giao tiếp giữa Client và Server
- Việc xác định vị trí của các peer và
giao tiếp giữa chúng khá phức tạp
- Cần server riêng, hệ thống không hoạt động khi server bị lỗi
- Chi phí cao
- Phức tạp trong việc bảo trì, duy trì hoạt động của mạng Khả năng nghẽn mạng dễ xảy ra
Bảng 1.1 So sánh giữa mô hình C-S và P2P
Trang 271.3 Một số giải pháp kết hợp giữa mô hình C-S và mô hình P2P
1.3.1 Mô hình Local Proxy
Một cách để cải thiện hiệu năng hệ thống và giải quyết các nhược điểm của mô hình client-server là sử dụng P2P [1] Một trong những mô hình ứng dụng sử dụng P2P để nâng cấp ứng dụng client-server là mô hình Local Proxy Ý tưởng được đưa ra
là tính sẵn có của dữ liệu chứ không phải do cơ chế đáp ứng yêu cầu của client-server, nhưng bằng mô hình phân phối dữ liệu P2P Khi thông tin không có sẵn trên hệ thống P2P, máy khách sẽ nhận được nó từ máy chủ bởi cơ chế đáp ứng yêu cầu Các hệ thống P2P đóng vai trò bộ nhớ cache, chi phí thấp hơn so với dữ liệu lấy về từ máy chủ
Hệ thống bao gồm các thành phần sau:
- Module client: giống như module client trong mô hình C-S truyền thống
- Module local proxy: mỗi client được cài đặt module này Nó có nhiệm vụ tương tác với module client và cập nhật dữ liệu cục bộ cho client đó
- Module P2P: Chấp nhận yêu cầu chia sẻ dữ liệu, cập nhật, và phổ biến nó trên mạng P2P
Hình 1.11 Mô hình Local Proxy
Trang 2818
Trong mô hình này, máy khách không tương tác trực tiếp với máy chủ nhưng tương tác với các module Local Proxy Local Proxy thông qua module P2P Agent để kết nối với hệ thống phụ P2P; nó hoạt động giống như một proxy Vị trí của Local proxy phải giống như vị trí của client, nên nó được gọi là server cục bộ Đây chính là
lý do tại sao server được gọi là proxy cục bộ và mô hình được gọi là mô hình Local Proxy Ưu điểm của mô hình này là giải quyết được vấn đề về khả năng mở rộng yếu của mô hình client-server bằng cách sử dụng hệ thống phụ P2P Đặc biệt, tính thương mại của các ứng dụng không bị ảnh hưởng vì mô hình chỉ thay đổi các giao diện truyền thông của mô hình Client-Server từ Client-Server thành Client –Local Proxy
Hình 1.12 dưới đây cho thấy quá trình truy cập tệp trong mô hình Local Proxy
Hình 1.12 Truy cập tệp tin trong mô hình Local Proxy
1.3.2 Mô hình Chia sẻ Cache (Shared Cache folder)
a Cơ chế hoạt động của bộ nhớ Cache
Bộ nhớ Cache trong mô hình C-S là một loại sao lưu, nhân bản, nhằm cải thiện hiệu suất thực hiện của hệ thống bằng cách cho truy cập dữ liệu từ bộ nhớ cục bộ phía
Trang 29máy khách Các client cập nhật dữ liệu từ bộ nhớ cache cục bộ Nếu dữ liệu không có sẵn, client yêu cầu server gửi dữ liệu Khi nhận được dữ liệu từ server, client lưu trữ
nó trong bộ nhớ cache cục bộ để truy cập sau
Hình 1.13 Cơ chế hoạt động của bộ nhớ Cache Chia sẻ cache nghĩa là bộ nhớ cache có thể được truy nhập từ nhiều thể hiện khác nhau của một ứng dụng trên các máy tính khác nhau
Mô hình Shared Cache folder là mô hình cho phép các client chia sẻ nội dung
bộ nhớ cache với nhau bằng cách sử dụng hệ thống P2P, nhằm cải thiện hiệu suất tổng thể của hệ thống
Tận dụng ưu điểm của kiến trúc C-S và P2P với mục đích:
- Sử dụng thiết kế theo giao thức của kiến trúc C-S để đơn giản
- Triển khai giao thức sử dụng giao tiếp P2P để đạt hiệu suất tốt hơn
Mô hình Shared Cache được thiết kế như hình sau:
Hình 1.14 Mô hình Chia sẻ Cache [7]
Trang 3020
b Các thành phần của mô hình shared cache
Trong mô hình này (hình 1.14), module P2P, module Cache và module Data
instruction suggestor được thêm vào ứng dụng client-server truyền thống Với các thành phần này, nhằm mục đích giải quyết vấn đề nút cổ chai server và vấn đề băng thông của mô hình client-server
Mô hình này có hai thay đổi so với mô hình C-S và mô hình Local Proxy:
Module cache
Module này được thêm vào cho mỗi client để thực hiện chức năng sau:
- Cache content: Bộ nhớ lưu trữ tất cả dữ liệu được chuyển cho client
- Cache Manager: Đưa ra một dịch vụ cho tất cả các node để trả lời câu hỏi về
dữ liệu lưu trữ hiện tại trong cache của client đó
Module Data instruction suggestor
Module này được cài đặt trên server để thực hiện nhiệm vụ:
- Tập hợp thông tin về dữ liệu chia sẻ của mỗi client thông qua kết nối client- server
- Tập hợp những báo cáo về kết nối P2P từ client Từ thông tin về những kết nối
đó để server có những chỉ dẫn cho mỗi client cách hiệu quả để lấy về tệp tin cụ thể
c Nguyên tắc hoạt động
Khi client gửi yêu cầu tìm kiếm tệp tin, trước tiên Cache Manager sẽ kiểm tra
dữ liệu trong cache content, nếu tệp tin cần thiết được tìm thấy, nó đáp ứng cho client, nếu không tìm thấy, client sẽ gửi một yêu cầu vào hệ thống P2P để hỏi về tệp tin nó cần Nếu tìm thấy tệp tin trong hệ thống P2P, nó sẽ kết nối trực tiếp đến client chứa tệp tin và tải về Nếu không tìm thấy trong hệ thống P2P thì yêu cầu sẽ được chuyển tới server Module Data instruction suggestion được cài đặt trên server sẽ chỉ dẫn cho Client phương án tốt nhất để tải về tệp tin nó cần Cache Manager phải thực hiện một
số hoạt động: Tệp lấy về từ server, lưu trữ trên cache cục bộ và chia sẻ tệp trên hệ thống P2P để phục vụ cho việc sử dụng lại khi cần thiết
Trang 31Hình 1.15 Truy cập tệp tin trong mô hình Shared Cache folder
Để chuyển đổi một hệ thống từ mô hình Client-Server sang mô hình Chia sẻ Cache, chúng ta cần thực hiện các bước như sau:
- Xác định các giao thức được thực thi trên hệ thống Client-Server
- Phân tích chức năng, nhiệm vụ của các giao thức trong hệ thống Server
Client Chuyển đổi các chức năng sang mô hình Shared Cache, các máy sẽ yêu cầu dữ liệu từ hệ thống P2P
- Phân tích hệ thống và dự kiến cài đặt
Trang 3222
CHƯƠNG 2 DỊCH VỤ CHIA SẺ TỆP THEO YÊU CẦU 2.1 Giới thiệu chung
Các ứng dụng phân tán được xây dựng chủ yếu theo kiến trúc S Kiến trúc
C-S có ưu điểm là quá trình thiết kế giao thức đơn giản, chỉ có 2 thành phần tham gia là client và server Tuy nhiên, việc chỉ có một server phục vụ cho nhiều client kéo theo các nhược điểm của mô hình này như: cổ chai tại server, quá tải về băng thông, tính
mở rộng kém Có rất nhiều cải tiến của mô hình client-server như bộ nhớ đệm, phân tải, sao lưu Tuy nhiên các cải tiến này đều có giới hạn về hiệu năng khi số lượng tải vượt quá một cận trên nào đó
Mô hình mạng ngang hàng cho phép giải quyết vấn đề này một cách triệt để bằng cách loại bỏ thành phần server và cho phép tất cả các thành phần khác tương tác với nhau một cách bình đẳng Nhược điểm duy nhất của kiến trúc ngang hàng là việc thiết kế ứng dụng trở nên phức tạp, do có sự tham gia của nhiều thành phần vào giao thức
Để có thể tận dụng điểm mạnh của cả 2 mô hình, thiết kế các ứng dụng theo kiến trúc client-server và triển khai các ứng dụng theo kiến trúc P2P Triển khai ứng dụng này, cần có một khung làm việc (framework) cho phép có thể thực hiện biến đổi trực tiếp từ một ứng dụng client-server thành ứng dụng theo kiến trúc P2P mà không cần phải thay đổi giao thức tương tác giữa các thành phần Một số mô hình kết hợp đã được chứng minh về tính đúng đắn, tuy nhiên hiệu quả thực sự về hiệu năng phụ thuộc rất nhiều vào ứng dụng cụ thể Trong đó đã phân lọai các ứng dụng theo:
Lọai thông tin trao đổi
- Thông tin văn bản (chuỗi ký tự)
- Thông tin nhị phân (thông tin thô, chuỗi bit không rõ cấu trúc)
- Thông tin đa phương tiện (audio, video, chuỗi bit có liên hệ về thời gian)
Cách thức trao đổi thông tin
- Theo yêu cầu (on demand)
- Quảng bá (broadcast, push)
- Tương tác (interactive)
Mỗi mô hình phù hợp với một loại thông tin trao đổi và cách thức trao đổi