Các file ựược chia sẻ trong mạng eMule ựược xác ựịnh duy nhất bởi hash codẹ Các file ựược chia nhỏ ra thành các mẩu có ựộ lớn là 2. 98 MB, mẩu cuối cùng của file có thể có kắch thước nhỏ hơn.
Mạng eMule bao gồm hàng trăm Server eMule và hàng triệu eMule Client. Mỗi một eMule Client ựược kết nối với một danh sách các Server và một danh sách các file chia sẻ trên hệ thống riêng (local) của nó. Một Client sử dụng kết nối TCP hoặc UDP với Server ựể tham gia vào mạng. Hình 1.11 cho ta thấy mô hình mạng eMulẹ
Hình 1.11. Mô hình mạng eMulẹ
Mỗi trình Client cũng dùng hàng trăm kết nối TCP ựể kết nối với các Client khác mà ựang upload và download. Mỗi eMule duy trì một hàng ựợi chứa các file upload ựể mà các trình Client download có thể download filẹ Mỗi trình Client có thể download cùng một file từ nhiều Client khác nhau, mỗi Client sẽ download ở ựó một phần của file dữ liệụ Mỗi Client cũng có thể upload các phần ựã download ựược mặc dù file ựó chưa thực sự ựược download toàn bộ. Mỗi Server chứa bên trong cơ sở dữ liệu của nó thông tin về các Client cũng như thông tin về các file, nó hoàn toàn không chứa file trên nó. eMule cũng sử dụng UDP làm tăng khả năng của Client ựối với cả Server và các trình Client khác.
1.3.3.3. Mô tả cách thức hoạt ựộng của mạng eMule
Khi Client sử dụng giao thức TCP ựể kết nối với Server, Server sẽ cấp cho Client một ID xác ựịnh, ID này có giá trị trong suốt quá trình kết nối Client Ờ Server. Client ID là một ựịnh danh (identifier) 4 byte ựược cung cấp bởi Server khi bắt ựầu quá trình kết nốị Client ID ựược phân thành low ID và high ID. Khi một Client có low ID thì nó vẫn kết nối ựến Server nhưng sẽ không thực hiện ựược quá trình download và upload, còn khi nó có high ID sẽ ựược download và upload bình thường. Sau khi kết nối thành công, Client sẽ gửi cho Server một danh sách các file ựược chia sẻ trên Client ựó, Server sẽ ựưa danh sách ựó vào trong cơ sở dữ liệu, nơi chứa danh sách nhiều file của các Client khác. Client cũng sẽ gửi lên cho Server một danh sách các file cần download. Sau ựó Server sẽ gửi lại cho Client một danh sách các Client có file dữ liệu mà Client này yêu cầụ Tiếp ựó Client này sẽ trực tiếp kết nối ựến các Client trong danh sách.
Một Client có thể kết nối trực tiếp ựến trình Client khác ựể download file, một file thì lại có thể chia thành nhiều phần. Bởi vậy mà một Client có thể kết nối tới nhiều Client khác ựể có thể download các phần khác nhau của cùng một filẹ Mỗi Client sẽ có một danh sách hàng ựợi các trình Client khác nhau ựang chờ ựể download file trên Client ựó. Nếu hàng ựợi download là rỗng thì khi nhận ựược một request download, request này sẽ ngay lập tức ựược thực hiện, trong trường hợp ngược lại thì request sẽ ựược thêm vào cuối của hàng ựợị Khi một yêu cầu download ở trên cùng của hàng ựợi thì Client có hàng ựợi ựó sẽ tự ựộng tạo ra kết nối và gửi file ựến Client yêu cầụ Một yêu cầu download file có thể nằm trong nhiều hàng ựợi download của các Client khác nhau ựể chờ download cùng một filẹ Khi hoàn thành ở một Client thì nó sẽ không còn ựể ý ựến các Client khác nữạ
1.3.4.Mạng Torrent 1.3.4.1. Giới thiệu
Mạng Torrent thực sự là một phát kiến mới về cách tiếp cận mới trong mạng P2P. Mạng Torrent ựược thiết kế và phát triển bởi Bram Cohen vào ựầu năm 2001, Bram là người ựã hình dung ra mạng cho phép việc truyền file mà không cần ựến dung lượng ựường truyền caọ
1.3.4.2. Mô hình mạng Torrent
Mạng Torrent là một mạng tập trung (Centralized) Peer to Peer. Tương tự như mạng Napster, Torrent cho phép kết nối ựến các Peer ựể chia sẻ filẹ Tuy nhiên thay vì kết nối ựến hai Peer ựể chia sẻ duy nhất một file thì nó kết nối rất nhiều các Peer có cùng yêu cầu ựể chia sẻ các phần của cùng một filẹ Server trung tâm này ựược coi như là tracker bởi vì nó nắm thông tin về các Peer kết nối ựến nó.
Hình 1.12. Mô hình mạng Torrent.
1.3.4.3. Mô tả cách thức hoạt ựộng của mạng Torrent
điều bắ ẩn ựằng sau mạng Torrent thực ra chỉ là một ựiều nhỏ mà thôị Một trang Web ựược thiết ựặt như một tracker, nơi chứa thông tin chắnh xác về các file dữ liệu ựược up lên mạng. Khi một người dùng (User) quyết ựịnh chia sẻ một file dữ liệu, người dùng sẽ tạo ra file torrent Ờ nơi chứa ựịa chỉ (URL) của tracker. File torrent này sẽ ựược up lên trang Web sau ựó người sử dụng sẽ download file torrent này về rồi dùng một số chương trình Client của Torrent ựể ựầu tiên là mở file torrent ra, kết nối với tracker ựể nhận ựược một danh sách các Peer chia sẻ file ựó. Nó sẽ download từng phần trên các Peer khác nhau, và ngay khi download thành công nó sẽ tự ựộng trở thành một Peer ựể share phần download ựược.
Torrent file: Trước khi ựược kết nối với tracker, một torrent file phải ựược tạo ra bởi một trình Torrent Client. File torrent giống như một chiếc chìa khóa ựể các
trình Client có thể xác ựịnh các file ựể download. Thông tin bên trong của một file torrent ựã ựược băm ( sử dụng thuật toán SHA1 - Secure Hash Algorithm ), sau khi ựược băm sẽ tạo ra một giá trị duy nhất theo nội dung của file torrent ựó. Nội dung của file torrent cũng chứa ựầy ựủ URL của tracker mà tracker ựó cũng tham gia vào kết nốị
Tracker: Trong mạng Torrent, tracker ựóng vai trò quyết ựịnh. Tracker có vai trò tương tự như một Server trung tâm như trong mạng Napster. Các tracker chấp nhận kết nối của các Client và liên kết chúng ựến các nơi chia sẻ dữ liệụ Khi một file torrent ựược download và ựược ựọc bởi trình Client Torrent, phần mềm Client sẽ tạo ra một kết nối ựến site tracker Ờ ựã ựược xác ựịnh trong file torrent và sẽ gửi yêu cầu file có hash code sẵn trong file torrent. Tracker sẽ xem xét trong cơ sở dữ liệu tìm các Peer chia sẻ file yêu cầu, rồi gửi danh sách các Peer ựến Client yêu cầụ Client này sẽ tạo kết nối IP ựến Peer ựó và download trực tiếp dữ liệụ
Trong quá trình download diễn ra, Client vẫn tiếp tục gửi các request một cách ựều ựặn ựến tracker ựể tìm kiếm nhiều Peer hơn nữạ Những request này chứa các thông tin như các dữ liệu nó ựã download và upload là bao nhiêụ Bởi vì các tracker biết ựược tất cả các quá trình download và upload chắnh vì vậy mà nó sẽ duy trì một tỷ lệ download Ờ upload nào ựó, vắ dụ một Client download 2 MB, upload là 1 MB, như vậy tỉ lệ chia sẻ dữ liệu sẽ là 0.5:1. Nếu Client upload là 100MB, download là 50M, vậy tỷ lệ chia sẻ dữ liệu sẽ là 2:1. Tỷ lệ này có một vai trò rất quan trọng, dựa vào ựó thì tracker sẽ quyết ựịnh gửi bao nhiêu Peer trong danh sách chia sẻ file cho Client ựó.
1.3.5.Một số nhược ựiểm chung của các mạng nói trên
Các mạng nói trên có một số nhược ựiểm chung có thể kể ra như sau:
Ớ để có thể chia sẻ ựược dữ liệu thì máy có dữ liệu phải luôn ở trạng thái hoạt ựộng, nếu máy có dữ liệu mà ựột ngột bị tắt ựi thì máy nhận sẽ phải tiếp tục tìm kiếm các nguồn khác, gây ngắt quãng quá trình truyền dữ liệụ
Ớ Chưa thực sự tận dụng ựược tài nguyên Ộmiễn phắ Ộ trên Internet, như hiện nay ựó là khả năng lưu trữ dữ liệu trên e mail, khả năng tắnh toán của các máy Server trên mạng.
Ớ Gây Ộtốn kémỢ cho người dùng, khi người dùng muốn chia sẻ một dữ liệu nào ựó sẽ phải ựể trên ổ cứng của máy, gây lãng phắ.
Chương 2
JXTA NỀN TẢNG đỂ XÂY DỰNG CÁC ỨNG DỤNG MẠNG NGANG HÀNG
Cho ựến nay, nhiều dịch vụ thông dụng như Skype, BitTorren và các ứng dụng ở các lĩnh vực ựiện toán lưới, Video Streaming... ựược phát triển và xây dựng dựa trên kiến trúc mạng ngang hàng. Mặc dù các hệ thống dịch vụ và ứng dụng nêu trên là rất hay ựể chúng ta có thể ựi theo khi xây dựng các ứng dụng P2P, nhưng bởi vì nhiều lý do bao gồm tắnh không tương thắch giữa các mạng P2P, mỗi mạng chỉ giải quyết một phần khả năng thực tế của công nghệ P2P nên Sun Microsystems ựã xây dựng dự án JXTA với hy vọng nó sẽ là chuẩn công nghệ cho P2P. Mục tiêu của JXTA là cung cấp một nền tảng (platform) mà qua ựó các nhà phát triển ứng dụng có thể dễ dàng phát triển các ứng dụng P2P một cách nhanh chóng, tiện lợị Thật ra, JXTA là dự án xây dựng một tập hợp các giao thức cơ bản cần thiết trong một mạng P2P. Do mục tiêu chắnh của ựề tài này là nghiên cứu về giao thức Chord và ựánh giá hiệu năng của Chord trên mạng ngang hàng nên chương này chỉ trình bày một cái nhìn tổng quan về JXTA ựể chúng ta có thể hình dung ựược phần nào về các ứng dụng trên mạng ngang hàng và sự quan tâm của các tập ựoàn lớn như Sun Microsystems trong dự án JXTA nhằm nghiên cứu và phát triển về kiến trúc mạng P2P.
2.1. Giới thiệu về JXTA
Do sự hạn chế của mạng P2P là tắnh không tương thắch giữa các mạng P2P và mỗi mạng chỉ giải quyết ựược một phần khả năng thực tế của công nghệ P2P nhất là chưa có một chuẩn công nghệ chung cho P2P. Trong khi ựó Microsoft ựang nghiên cứu và phát triển các công nghệ cho P2P thông qua dự án .NET. Vì thế hãng Sun Microsystems thành lập nhóm nghiên cứu do Bill Joy và Mike Clary chỉ ựạo với mong muốn thiết kế một giải pháp phục vụ cho tất cả các ứng dụng P2P, lấy tên là dự án JXTẠ
JXTA là tập các giao thức, thủ tục làm nền tảng cho việc xây dựng các ứng dụng P2P. JXTA cũng bao gồm các tiêu chuẩn về cách các thiết bị trong mạng P2P làm việc với nhaụ JXTA cho phép bất kì các thiết bị có kết nối với nhau trên mạng
(connected device) giao tiếp và cộng tác với nhaụ Hình 2.1 thể hiện mô hình mạng P2P ựược xây dựng trên nền JXTẠ
Hình 2.1. Mạng P2P ựược xây dựng trên JXTẠ
2.2. Các khái niệm trong JXTA
Peer: Bất kỳ thực thể tham gia ựộc lập nào với khả năng sử dụng giao thức JXTA, và có khả năng giao tiếp với các peer khác. Mỗi peer có thể là ựiện thoại, PDA, hay bất kỳ thiết bị số nàọ
Peer group: Một khái niệm ảo khi một tập các peer kết hợp lại ựể cung cấp một vài dịch vụ chung.
Message: Các peer trong JXTA sử dụng message ựể giao tiếp với các peer khác. Mặt khác, message là chìa khóa cho việc hoạt ựộng cùng nhau của JXTẠ
Pipe: Các pipe thiết lập kênh truyền thông ảo trong môi trường JXTẠ Các peer sử dụng chúng cho việc gửi và nhận các message của JXTẠ Các pipe ựược xem như là ảo bởi vì các peer không cần biết ựịa chỉ thực sự của bên giao tiếp khác ựể sử dụng các pipẹ Các pipe sử dụng hai loại giao tiếp ựó là: Kết nối pipe ựiểm - ựiểm và kết nối pipe ựiểm - ựa ựiểm.
Service: Các peer và các nhóm peer cung cấp các dịch vụ. Một dịch vụ cá nhân ựược ựưa ra bởi peer là dịch vụ peer (peer service) và nó sẽ không tồn tại hay không thể truy cập khi peer ựó không tồn tại nữạ Nhưng một loại dịch vụ khác là dịch vụ nhóm peer (peer group service) mà ựược cung cấp bởi một nhóm peer, vì thế dịch
vụ này vẫn tồn tại nếu như group vẫn sống, bởi nếu một peer không tồn tại nữa thì các peer khác vẫn có thể cung cấp dịch vụ ựó.
Advertisement: Các thành phần của JXTA như peer, peer group sử dụng advertisement ựể thông báo về chúng tới các ựối tượng khác và ựể phát hiện ra các thành viên khác.
Identifier: Một ID duy nhất cho mỗi node trong mạng ảo JXTẠ Dấu hiệu nhận dạng này không phải là ựịa chỉ mạng vật lý, nó giống như một URI (Uniform Resource Identifier).
Rendezvous Peer: Rendezvous Peer hoạt ựộng như một router ựể forward các quảng bá khám phá (discovery advertisement) tới những peer khác và chúng có thể ựược sử dụng như một bảng ựịnh tuyến (routing table). Rendezvous Peer bắt các bản tin quảng bá và sử dụng thông tin lưu trữ ựể giúp các peer khám phá các peer khác, ựặc biệt là khi một peer ựang cố gắng xác ựịnh vị trắ của một peer khác thuộc mạng con.
Endpoint: đắch ựến logic ựược biểu diễn bằng ựịa chỉ mạng là endpoint. Peer không sử dụng endpoint một cách trực tiếp, thay vì ựó chúng sử dụng các pipe hoạt ựộng trên các endpoint.
Router hay relay Peer: Một peer ựóng vai trò ựịnh tuyến ựể gửi các gói tin trên mạng. Về cơ bản, mỗi node không phải là một router nhưng các peer phải tìm thấy một router ựể ựịnh tuyến các gói của chúng.
World Peer group: Nhóm peer là một nhóm mặc ựịnh mà mỗi peer ựều thuộc về nó. Khi một peer không tìm thấy bất kỳ một peer nào khác trên mạng thì nó có thể tham gia vào nhóm nàỵ Tất cả các peer JXTA mặc ựịnh là thành viên của world peer group.
2.3. Kiến trúc JXTA
Hình 2.2. Mô hình kiến trúc JXTẠ
Theo mô hình kiến trúc này thì JXTA gồm 3 lớp là:
Ớ Lớp lõi (JXTA core): Phụ trách việc tạo peer, xóa peer, quảng bá peerẦ đồng thời lớp này cũng có nhiệm vụ quản lý truyền thông giữa các peer với nhau trong mạng như:
- định tuyến (routing). - Thăm dò (plumbing).
Ớ Lớp dịch vụ (JXTA Services): Cung cấp dịch vụ cho các ứng dụng P2P như:
- Tìm kiếm (Search). - Chỉ mục (Indexing). - Chia sẻ file (file sharing). - Discoverỵ
- Membership.
Ớ Lớp ứng dụng (JXTA Applications): Ứng dụng P2P hoạt ựộng ở lớp nàỵ Lớp ứng dụng quản lý các ứng dụng P2P do người dùng xây dựng và tắch
hợp các ứng dụng P2P, có thể phối hợp các ứng dụng P2P khác nhaụ Lớp ứng dụng ựáp ứng các ứng dụng tắch hợp như chia sẻ file, lưu trữ phân tán và nhiều hơn nữạ
2.4. Các giao thức trong JXTA
Trong JXTA có rất nhiều giao thức. Chúng ta có thể phân cấp cho các giao thức JXTA như hình 2.3 dưới ựâỵ
Hình 2.3. Các giao thức trong JXTẠ
Ớ Giao thức phát hiện peer (peer discovery protocol): Cho phép một peer tìm thấy thông báo quảng bá (advertisement) trên các peer khác hoặc dùng ựể tìm bất cứ peer, nhóm peer hay thông báo quảng bá nàọ
Ớ Giao thức phân tắch ựịa chỉ peer(peer resolver protocol): Cho phép một peer gửi và nhận các truy vấn (queries) ựể tìm peer, nhóm peer, ống và các thông tin khác.
Ớ Giao thức thông tin peer (peer information protocol): Cho phép một peer tìm hiểu ựược khả năng và trạng thái của peer khác. Vắ dụ: Lệnh ping.
Ớ Giao thức hội nhóm (Rendezvous Protocol): Cho phép một peer phát tán thông ựiệp trong phạm vi của một nhóm peer.
Ớ Giao thức nối ống (Pipe Binding protocol): Cho phép các peer thiết lập kênh truyền thông ảo như một ựường ống (pipe) giữa chúng và các peer khác. Các peer gửi thông ựiệp qua ống.
Ớ Giao thức ựịnh tuyến ựiểm cuối (Endpoint routing protocol): Cho phép một peer hỏi một peer ựịnh tuyến về các ựường chuyển thông ựiệp tới một peer ựắch. Peer ựịnh tuyến (router peer) là peer thực hiện các thủ tục ựịnh tuyến ựiểm cuối (Endpoint routing protocol).
2.5. Tổng quan mô hình mạng JXTA
Hình 2.4 mô tả mạng JXTA ảo hoạt ựộng ở lớp trên cùng của bất kỳ mạng nào như Internet hoặc non-IP và cho phép các peer tương tác trực tiếp và tổ chức một cách ựộc lập.
Hình 2.4. Mô hình mạng JXTẠ
Theo mô hình mạng JXTA ta có thể thấy JXTA có các ựặc tắnh như:
Ớ Khả năng phối hợp hoạt ựộng (Interoperability): đây là một ựặc tắnh quan trọng của JXTA, tức là các peer dễ dàng ựịnh vị lẫn nhau và dễ dàng