Tải bản đầy đủ (.doc) (59 trang)

đồ án công nghệ thông tin Tìm hiểu và xây dựng ứng dụng P P theo kién trúc Kademlia

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 (543.42 KB, 59 trang )

Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
MỤC LỤC
Chương 1: TỔNG QUAN VỀ PEER-TO-PEER (P2P) 2
1.1. LỊCH SỬ HÌNH THÀNH 2
1.2. MẠNG MÁY TÍNH P2P 3
1.3. PHÂN LOẠI P2P 5
1.3.1. Phân loại ứng dụng 7
1.3.2. Môi trường P2P hường tới 9
1.4. CÁC THÀNH PHẦN VÀ THUẬT TOÁN TRONG MẠNG P2P 9
1.4.1. Các thành phần cơ sở 9
1.4.2. Các thuật toán 12
1.4.2.1. Mô hình thư mục trung tâm 12
1.4.2.2. Mô hình tràn yêu cầu 13


1.4.2.3. Mô hình định tuyến thư mục 14
1.5. MỘT SỐ TÍNH CHẤT CỦA MẠNG P2P 18
1.5.1 Phân tán quyền 18
1.5.2. Khả năng co giãn 19
1.5.3. Khả năng giấu thông tin 20
1.5.4. Tự tổ chức 23
1.5.5. Chi phí của sở hữu 23
1.5.6. Kết nối không dự tính 24
1.5.7. Tính thực thi 25
1.5.8. Bảo mật 27
Chương 2: Kademlia 28
2.1. GIỚI THIỆU 28

2.1.1. Chord 29
2.1.1.1. Kiến trúc hệ thống Chord 29
2.1.1.2. Điểm yếu của hệ thống Chord 32
2.1.2. Ý tưởng cơ bản của hệ thống Kademlia 34
2.2. MÔ TẢ HỆ THỐNG 35
2.3 TRẠNG THÁI NODE 36
2.4. ĐỊNH TUYẾN 38
2.4.1. Bảng định tuyến 38
2.4.2. Thuật toán tìm kiếm 39
2.5. GIAO THỨC KADEMLIA 41
Chương 3: Xây dựng ứng dụng P2PKad 44
3.1. MỤC ĐÍCH 44

3.2. KIẾN TRÚC P2PKAD 44
3.2.1. Các phiên làm việc giữa các peer 45
3.2.2. Giao thức overnet 47
3.2.3. Xử lý thiết lập 48
3.2.3.1. Tìm kiếm Metadata 48
3.2.3.2. Tìm kiếm nguồn 49
3.2.4. Xử lý tìm kiếm 51
3.2.4.1. Tìm kiếm từ khóa 51
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 1
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
3.2.4.2. Tìm kiếm nguồn 52
3.2.5. Tham số trong OVERNET_SEARCH 54

3.2.6. Opcode OVERNET_PEER_NOTFOUND (33, 0x21) 55
3.2.7. Kiến trúc của các kiểu gói tin trong hệ thống Kademlia 55
Chương 1: TỔNG QUAN VỀ PEER-TO-PEER (P2P)
1.1. Lịch sử hình thành

Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 2
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Mạng Internet được thiết kế ban đầu như một hệ thống peer-to-peer (P2P).
Trải qua thời gian, do nhu cầu sử dụng internet phát triển mạnh mẽ đã khiến cho mô
hình P2P dần chuyển đổi và phát triển thành mô hình client/server. Vào đầu những
năm 1960, Internet ra đời và phát triển một cách nhanh chóng. Số lượng máy client
truy nhập internet gia tăng một cách chóng mặt khiến cho khôn gian địa chỉ IP

không còn đủ để đáp ứng nhu cầu truy cập mạng của người sử dụng. Bên cạnh đó,
sự phát triển của internet kéo theo nó là các yêu cầu về vấn đề bảo mật. Đó là những
ngăn cản khiến cho mô hình P2P khó có thể xây dựng và phát huy được sức mạnh
thực sự của nó. Mô hình client/server ra đời như một giải pháp cho các vấn đề đó.
Dường như mô hình client/server đã thể hiện như một lựa chọn đúng nhưng
sự gia tăng về nhu cầu sử dụng internet một cách mạnh mẽ đã khiến các nhà phát
triển phải xem xét lại vấn đề đó. Số lượng gói tin truyền đi trong mạng quá nhiều
gây ra quá tải băng thông, số lượng thông tin và không gian lưu trữ tài nguyên cũng
là vấn đề gặp phải của các nhà quản lý, cung cấp dịch vụ mạng. Vì vậy, chi phí cho
một hệ thống server là rất cao. Và bài toán cho các vấn đề đó đã đưa những nhà
phát triển mạng quay lại với mô hình mạng P2P nguyên thủy.
1.2. Mạng máy tính P2P

Mạng máy tính P2P được xây dựng dựa trên băng thông và hiệu năng của
các máy tính cá nhân trong mạng chứ không dựa trên là sự tập chung của một số
lượng nhỏ các máy server. Các mạng P2P được sử dụng để kết nối các node theo
các kết nối ad_hoc (không dự tính) và rất hữu dụng cho một số mục đích như: chia
sẻ file nội dung, tìm kiếm tài nguyên, …
Một mạng P2P thuần túy không có khái niệm khách/chủ (clients/servers) mà
các node (peer) ngang bằng nhau thì có các chức năng như cả client và server đối
với các node khác trong mạng. Mô hình này không giống với mô hình client-server,
các kết nối không thường xuyên phải thông qua một server trung tâm. Một ví dụ
tiêu biểu cho chia sẻ file không phải P2P là một server FTP, các chương trình client
và server không giống nhau, trong đó các máy client thiết lập các yêu cầu
download/upload và các máy server gửi trả lời cho các yêu cầu đó.

Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 3
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Hình 1.2.1: Minh họa sự khác nhau giữa P2P và Client/Server
Không có ranh giới rõ ràng giữa một mô hình P2P và một hô hình client-
server. Cả hai mô hình đó có thể được tích hợp trong cùng một mạng với mục đích
sử dụng khác nhau. Một vài mạng như: Napster, OpenNAP và IRC@find sử dụng
cấu trúc client-server cho một vài mục đích như tìm kiếm và sử dụng cấu trúc P2P
cho các mục đích khác. Các mạng khác như Gnutella hay Freenet sử dụng cấu trúc
P2P cho mọi mục đích và đó là những mạng hoàn toàn P2P.
Hình 1.2.1: Hệ thống phân tán
Kiến trúc P2P là một trong những khái niệm quan trọng của Internet, được
đưa ra cùng với sự ra đời của Internet vào khoảng những năm 1960. Ngày nay, khái

niệm đó đã được thừa nhận bởi tích hữu dụng của nó đem lại trong các kiến trúc
trao đổi file đa phương tiện (multimedia).
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 4
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
1.3. Phân loại P2P
Phân loại các hệ thống máy tính được biểu diễn như sau:
Hình 1.3.1: Phân loại của các hệ thống máy tính theo cấu trúc
Tất cả các hệ thống máy tính có thể được phân thành 2 loại: Phân tán và Tập
chung. Hệ thống phân tán có thể được phân ra thành 2 mô hình: client-server và
P2P. Trong mô hình client-server tất cả các máy client chỉ liên lạc với một máy
server đơn, hoăc có thể được phân cấp để phát triển khả năng co giãn. Trong mô
hình phân cấp, server của một cấp sẽ đóng vai trò như một client của cấp cao hơn.

Mô hình P2P được phân ra thành 2 loại: pure P2P (thuần P2P) và hybrid P2P
(lai P2P). Trong mô hình thuần P2P không tồn tại server trung tâm, các peer đóng
vai trò của cả server và client. Gnutella và Freenet là 2 ví dụ điển hình cho mô hình
thuần P2P. Trong mô hình lai P2P, một server được sử dụng để lưu thông tin như
các thông tin nhận dạng của peer hoặc để kiểm tra tính bảo mật ủy quyền
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 5
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Hình 1.3.2: Mô hình lai P2P
Hình 1.3.2 là một ví dụ về mô hình lai P2P. Để kết nối vào mạng P2P, đầu
tiên các peer khởi tạo một liên lạc với server (1) để lưu giữ vị trí hoặc đặc điểm
nhân dạng của peer, sau đó các peer liên lạc trực tiếp với nhau (2). Một vài ví dụ
điển hình cho mô hình lai P2P bao gồm: Napster, Groover, Aimster, Magi, Softwax

và iMesh…
Có một vài hệ thồng mạng kết hợp cả 2 mô hình thuần P2P và lai P2P để
phát triển các dự án cá nhân như: Skype, KaZaa. Giải pháp đưa ra là bên cạnh việc
sử dụng một server trung tâm để xác nhân các thông tin đăng nhập của peer ra còn
sử dụng các peer có public IP làm các SuperPeer (SuperNode). Các SuperPeer này
có thể sẽ lưu trữ một vài thông tin hoặc không, các peer khác sẽ tìm kiếm thông tin
tại các SuperPeer. Tùy thuộc vào mục đích phát triển của dự án mà có thể sử dung
một trong 2 mô hình của P2P hoặc kết hợp cả 2 như một vài sự án đã nêu ở trên.
Ngoài ra ta có thể đưa ra nguyên tắc phân loại các hệ thống P2P như sau:
Hình 1.3.3: Nguyên tắc phân loại của các hệ thống P2P theo chức năng
Các hệ thống P2P được phân thành các loại như sau:
• Tính toán phân tán: SETI@home, Avaki, Entropia.

• Chia sẻ file: Napster, Gnutella, Free Haven, Publius.
• Cộng tác: Magi, Groove, Jabber
• Platform: JXTA, .NET My Services.
Dựa trên nguyên tắc như trên, ta có được một phân loại các hệ thống P2P
như sau:
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 6
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Hình 1.3.3: Phân loại của các hệ thống P2P theo chức năng
Hình 1.3.3 cho thấy các hệ thống P2P rất khác biệt theo chức năng (tính toán,
lưu trữ, liên lac). Trong đó, platform hỗ trợ cho tất cả phân loại chức năng khác.
1.3.1. Phân loại ứng dụng
Có 3 phân loại chính cho các ứng dụng P2P bao gồm: Thực thi song song,

quản lý nội dung và file, và cộng tác.
Hình 1.3.1.1: Phân loại ứng dụng P2P
• Thực thi song song. Các ứng dụng P2P có khả năng thực thi song song bằng
cách chia sẻ công việc có quy mô lớn thành nhiều thành phần nhỏ, các thành
phần này có thể được thực thi song song trên các node(peer) độc lập. Hầu hết
các thực thi của mô hình này hướng vào các ứng dụng có độ tính toán cao,
phức tạp và chuyên sâu. Ý tưởng cơ bản của các ứng dụng P2P loại này là
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 7
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
tận dụng sự nhàn rỗi của bất cứ máy tính nào kết nối vào mạng để có thể giải
quyết các khó khăn về các tính toán đặc biệt phức tạp. Các công việc giống
nhau được thực thi trên mỗi peer thì sử dụng các thiết lập khác nhau cho các

tham số chuyền vào. Ứng dụng của thực thi song song trong các lĩnh vưc bao
gồm: tìm kiếm sự sống ngoài trái đất (SETI@home), code breaking, định giá
đầu tư, tính toán mức độ nguy hiểm, ước lượng thị trường và tài chính, và
phân tích tiếng nói … Các ứng dụng thành phần vẫn chưa được thừa nhận
như P2P. Mặc dù vậy, chúng ta hãy mường tượng các ứng dụng được tích
hợp từ nhiều thành phần mà mỗi thành phần này được thực thi song song
trên nhiều node. Cũng giống như các ứng dụng tính toán phức tạp chạy các
công việc như nhau trên nhiều peer, các ứng dụng thành phần chạy các thành
phần khác nhau trên mỗi peer. Ví dụ như các ứng dụng: Workflow,
JavaBean, Web Services …
• Quản lý nội dung và file. Các ứng dụng P2P về quản lý nội dung và file
hướng vào việc lưu trữ thông tin và gửi trả thông tin từ rất nhiều peer trong

mạng. Mô hình phổ biến cho lớp ứng dụng này là mô hình truyền đổi nội
dung. Các ứng dụng như Napster và Gnutella cho phép các peer tìm kiếm và
tải các file, chủ yếu là các file nhạc, từ các peer khác. Các ứng dụng này
không hướng nhiều vào khả năng cùng cấp cũng như việc phục hồi và trả về
các file khi tải về bị lỗi. Chúng hướng tới việc tận dụng số lượng lớn không
gian lưu trữ không được sử dụng như một server cho người dùng. Các ứng
dụng này đảm bảo độ tin cậy bằng vịệc sử dụng nhiều công nghệ lưu trữ
tryền thống để tái tạo dữ liệu. Một số dự án nghiên cứu khảo sát nền móng
của hệ thống file P2P đã dẫn tới sự ra đời của các ứng dụng sàng lọc và khai
phá như OpenCOLA và JXTA Search. Thay vì hướng vào thông tin chia sẻ,
các ứng dụng này hướng tới công nghệ sàng lọc cộng tác tích hợp khả năng
tìm kiếm chỉ số trên một mạng peer. Công nghệ JXTA Search có thể kết hợp

với một ứng dụng như Gnutella để tăng hiệu quả tìm kiếm trên một diện rộng
hơn, nội dung bị phân tán lớn hơn.
• Cộng tác. Các ứng dụng P2P cộng tác cho phép người dùng có thể cộng tác
với nhau trong thời gian thực mà không cần thông qua một server trung tâm
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 8
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
để thu thập và sắp xếp thông tin. Instant messaging là một dạng của lớp ứng
dụng này. Các dich vụ như Yahoo!, AOL, Jabber instant messaging đã trở
nên rất phổ biến đối với người sử dụng. Tương tự vậy, các ứng dụng chia sẻ
cho phép mọi người (ví dụ: đồng nghiệp,…) tương tác với nhau trong khi
xem và sửa đổi cùng một thông tin. Buzzpad và Distributed Power Point là
những ví dụ tiêu biểu cho lớp ứng dụng này. Game là một dạng khác của lớp

ứng dụng P2P cộng tác. Các game P2P được tổ chức trên tất cả các peer và
cập nhật được phân tán tới tất cả các peer mà không cần gửi yêu cầu tới
server trung tâm. Ví dụ như các game: NetZ1.0, Scour Exchange, Descent,
Cybiko,…
1.3.2. Môi trường P2P hường tới
Những môi trường hướng tới cho P2P gồm có: Internet, Intranets và ad-hoc
networks. Các hệ thống P2P kết nối với mạng Internet bằng đường dial up, băng
thông rộng (DSL), ….Kiến trúc cơ bản dựa trên máy tính cá nhân, máy để bàn, máy
sách tay, các thiết bị cầm tay, …
Môi trường thường xuyên nhất là máy tính cá nhân có kết nối Internet. Do
đó, các hệ thống P2P ngày nay chủ yếu hướng vào lĩnh vực chia sẻ nội dung. Tính
toán phân tán trong kiến trúc P2P cũng đã bắt đầu trên những máy để bàn có kết nối

Internet như dự án SETI@home những cũng đã đạt được thành công nhất định
trong mạng Intranet như dự án DataSynapse.
Đối với các mạng ad-hoc của các thiết bị cầm tay mới chỉ phát triển các ứng
dụng cộng tác
Trong tương lai, môi trường cho hệ thống P2P sẽ có khả năng được mở rộng
hơn và có thể triển khai nhiều loại ứng dụng trên các môi trường khác nhau. Thêm
vào đó, Internet2 được đưa ra sẽ hỗ trợ tốt hơn cho các hệ thống P2P và các ứng
dụng P2P.
1.4. Các thành phần và thuật toán trong mạng P2P
1.4.1. Các thành phần cơ sở.
Hệ thống P2P gồm nhiều thành phần cơ sở được phân theo từng lớp như sau:
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 9

Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Hình 1.4.1.1: Kiến trúc hệ thống P2P không chính thức
• Liên lạc. Mô hình P2P hội tụ nhiều kiểu liên lạc. Từ những máy tính để bàn
kết nối Internet tốc độ cao và ổn định cho tới những thiết bị không dây nhỏ
gọn như các máy PDA hoặc ngay cả những thiết bị cảm biến kết nối kiểu ad-
hoc theo dạng không dây tốc độ trung bình. Khó khăn chủ yếu của liên lạc
trong một cộng đồng P2P là khắc phục những vấn đề về các peer động. Cả
các nhóm peer cố định (ví dụ như người dùng tắt máy) và các nhóm peer
không cố định (ví dụ lỗi ở các đường kết nối mạng, đường dial up) thường
xuyên thay đổi. Và để duy trì kết nối với lớp ứng dụng trong một môi trường
là một trong những khó khăn lớn nhất đối với những nhà phát triển P2P.
• Quản lý nhóm. Quản lý nhóm peer bao gồm phát hiện ra các peer khác

nhau, định vị và định tuyến giữa các peer. Việc phát hiện ra các peer có thể
được quy về tập chung như trong hệ thống Napster hoặc có thể là phân tán
như trong hệ thống Gnutella hoặc kết hợp cả 2 giải pháp. Trong các mạng
P2P có một số thành phần tác động tới việc thiết kế các thuật toán tìm kiếm,
phát hiện. Ví dụ như mobile, các thiết bị không dây có thể phát hiện ra các
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 10
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
peer khác dựa trên tần sóng liên lạc. Còn đối với các máy tính để bàn thì
được tích hợp các giao thức gần giống như các thư mục trung tâm.
Các thuật toán định vị và định tuyến sử dụng nguyên tắc thông thường là cố
gằng đánh giá đường dẫn của một chu trình bản tin từ peer này tới peer khác.
Trong khi các hệ thống đã được triển khai như Napster và Gnutella cố gắng

đánh giá các thành phần cơ bản của mạng thì các nghiên cứu mới đây đã đưa
ra được các thuật toán tối ưu hơn.
• Robustness. Có 3 thành phần chính được mở rộng để duy trì tính mạnh mẽ
của các hệ thống P2P. Đó là:
 Bảo mật.
 Kết hợp tài nguyên
 Độ tin cậy
Bảo mật là một trong những khó khăn lớn nhất cho hạ tầng cơ sở P2P. Lợi
ích của P2P là cho phép các node có chức năng của cả server lẫn client. Tuy
nhiên, việc chuyển đổi một thiết bị client chuẩn thành một server sinh ra một
vài nguy cơ tiềm ẩn cho hệ thống. Chỉ có những ngồn đựoc ủy thác hay được
xác nhận mới được truy cập thông tin và các dịch vụ được cung cấp bởi các

node. Và yêu cầu về bảo mật phải đảm bảo được các yêu cầu rất lớn trực tiếp
từ phía người dùng hoặc từ một trung gian đã được ủy thác.
Mô hình P2P cung cấp nền tảng cho phép các peer tương tác với nhau để kết
hợp tài nguyên có giá trị trên các hệ thống của họ. Phân loại kiến trúc thành
phần kết hợp tài nguyên P2P là điều khó khăn bởi vì có rất nhiều loại tài
nguyên được kết hợp giữa các peer. Một mặt, các tài nguyên bao gồm các
file hoặc thuộc về một nội dung nào đó trên máy tính. Mặt khác, các tài
nguyên có thể được định nghĩa theo các nhóm của thiết bị peer như khả năng
xử lý của CPU, băng thông và không gian đĩa …
Mức độ tin cậy trong các hệ thống P2P là một vấn đề khó. Sự phân tán vốn
dĩ của các mạng peer tạo ra khó khăn cho nó để đảm bảo tính tin cậy. Giải
pháp thông thường nhất cho việc đảm bảo mức độ tin cậy của các hệ thống

P2P là tận dụng những lợi ích của các thông tin lặp. Ví dụ, trong trường hợp
các ứng dụng tính toán phức tạp đang thực hiện một tác vụ thì gặp một lỗi,
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 11
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
tác vụ đó sẽ được khởi động lại trên các máy khác. Trong các ứng dụng chia
sẻ file, dữ liệu có thể được sao chép lại trên nhiều peer. Hoặc đối với các ứng
dụng nhắn tin, các tin nhắn bị mất có thể được gửi lại hoặc có thể được gửi
theo nhiều đường dẫn khác nhau.
• Đặc tả lớp. Trong khi các thành phần đã được đề cập ở trên là có thể áp
dụng được cho bất cứ kiến trúc P2P nào thì các thành phần đặc tả ứng dụng
được đưa ra từ chức năng của mỗi lớp ứng dụng P2P. Bản danh mục được áp
dụng cho các ứng dụng song song hoặc các ứng dụng tính toán phức tạp.

Đánh dấu dữ liệu được áp dụng cho các ứng dụng quản lý file và nội dung.
Bản tin được áp dụng cho các ứng dụng cộng tác
• Đặc tả ứng dụng. Các công cụ, các ứng dụng và các dịch vụ thực hiện các
chức năng đặc tả ứng dụng phù hợp để chạy các ứng dụng P2P trên cơ sở hạ
tầng P2P. Nó phù hợp với các trường hợp đặc tả của bảng danh mục phân
tán, chia sẻ file và nội dung, hoặc các ứng dụng đặc tả chạy trên các hệ thống
cộng tác và liên lạc.
1.4.2. Các thuật toán
Trong các hệ thống P2P có 3 thuật toán thông thường được sử dụng bao
gồm:
• Mô hình thư mục trung tâm.
• Mô hình tràn yêu cầu.

• Mô hình định tuyến thư mục.
1.4.2.1. Mô hình thư mục trung tâm
Mô hình thư mục trung tâm được đưa ra bởi Napster. Trong mô hình này,
các peer kết nối với thư mục trung tâm để thiết lập thông tin về nội dung chia sẻ. Có
thể minh họa như sau:
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 12
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Hình 1.4.2.1.1: Thuật toán thư mục trung tâm
Trên yêu cầu từ một peer, chỉ mục trung tâm sẽ đối sánh yêu cầu đó với peer
phù hợp nhất trong thư mục của nó. Sau đó, file trao đổi sẽ được chuyền trực tiếp
giữa 2 peer.
Mô hình này yêu cầu một vài cơ sở hạ tầng để quản lý (như là server thư

mục) để chuyền và lưu trữ thông tin về tất cả các các nhân trong cộng đồng. Đó là
nguyên nhân làm giảm khả năng co giãn, bởi vì cần phải có một vài server đủ lớn
để đáp ứng số lượng yêu cầu tăng lên và cần không gian lưu trữ đủ lớn để đáp ứng
số lượng người sử dụng tăng lên.
1.4.2.2. Mô hình tràn yêu cầu
Mô hình tràn yêu cầu rất khác so với mô hình thư mục trung tâm. Đây là mô
hình thuần P2P mà trong đó không có thông tin thông báo của các tài nguyên chia
sẻ. Thay vào đó, mỗi yêu cầu từ một peer sẽ được gửi tới các peer kết nối trực tiếp
với nó, và các peer nhận được yêu cầu sẽ tìm kiếm trong dữ liệu của mình, nếu có
sẽ gửi thông tin trực tiếp tới peer yêu cầu, nếu không có thì sẽ tiếp gửi yêu cầu đó
đến các peer khác kết nối trực tiếp với nó. Quá trình gửi yêu cầu cứ tiếp tục cho đến
khi có trả lời hoặc đạt tới số bước gửi tối đa (khoảng từ 5 đến 9 bước).

Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 13
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Hình 1.4.2.2.1: Thuật toán tràn yêu cầu
Mô hình này được phát triển bởi Gnutella. Nó yêu cầu một số lượng lớn
băng thông của mạng và vì vậy mà không chứng tỏ được khả năng co giãn của nó,
tuy nhiên nó rất phù hợp cho việc phát triển các mạng công ty. Một vài công ty đã
phát triển các phần mềm client “super-peer”, tại đó tập chung rất nhiều các yêu cầu.
Mục đích là để điều khiển các yêu cầu từ đó làm giảm yêu cầu về băng thông.
1.4.2.3. Mô hình định tuyến thư mục
Mô hình định tuyến thư mục được sử dụng bởi Freenet là mô hình ra đời sau
cùng. Mỗi peer trong mạng được đánh một ID ngẫu nhiên và mỗi peer có thông tin
về một số ID của peer khác. Xem hình mô tả sau:

Hình 1.4.2.3.1: Thuật toán định tuyến thư mục
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 14
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Khi một thư mục được thiết lập (được chia sẻ) trong hệ thống thì nó sẽ được
đánh một số ID dựa trên một hàm băm của nội dung thư mục và tên thư mục. Mỗi
peer sẽ định tuyến thư mục đó đến peer có ID gần với ID của thư mục đó nhất. Quá
trình đó được lặp đi lặp lại nhiều lần cho đến khi tới được peer phù hợp. Mỗi bộ
điều hành định tuyến sẽ lưu lại một bản sao của thư mục. Khi một peer yêu cầu thư
mục đó từ hệ thống P2P, yêu cầu sẽ tới peer có ID gần với ID của thư mục nhất.
Quá trình đó được lặp đi lặp lại cho tới khi một bản sao của thư mục được tìm thấy.
Sao đó, thư mục được truyền về cho peer yêu cầu, trong khi đó, mỗi peer cá nhân
định tuyến sẽ giữ lại một bản sao của thư mục.

Mặc dù mô hình định tuyến thư mục rất phù hợp cho việc phát triển các liên lạc trên
diện rộng nhưng nó vẫn có vấn đề, đó là các ID của thư mục phải được biết trước
khi đưa ra yêu cầu đối với thư mục. Do đó, mô hình này khó xây dựng tìm kiếm
hơn mô hình tràn yêu cầu. Bên cạnh đó, mô hình này dễ dẫn tới việc phân mảnh
mạng khi mạng bị chia sẻ thành các mạng con độc lập mà không có kiên kết với
nhau.
Có 4 thuật toán chính để xây dựng một mạng P2P theo mô hình định tuyến thư mục
bao gồm: Chord, CAN, Tapestry và Pastry. Mục đích của các thuật toán mày khá
giống nhau.Chúng đều có mục đích làm giảm số lương các bước nhảy P2P và làm
giảm số lượng trạng thái định tuyến. Sự khác nhau giữa các thuật toán này là khá
nhỏ, tuy nhiên chúng được phát triển để phù hợp với mỗi môi trường phát triển P2P.
• Thuật toán Chord xây dựng mô hình không gian nhận dạng như một đơn vị

thứ nguyên, không gian nhận dạng vòng. Các peer được đánh ID dựa trên
một hàm băm địa chỉ IP của peer. Khi một peer tham gia vào mạng, nói liên
hệ với một peer gateway và định tuyến tới vị trí kế thừa của nó. Bảng định
tuyến tại mỗi peer lưu thông tin của logN peer (N là tổng số peer trong
mạng). Để định tuyến tới peer khác, bảng định tuyến tại mỗi bước nhảy được
tra cứu và bản tin được chuyển tới peer được yêu cầu. Khi peer kế thừa của
peer mới được tìm thấy, peer mới gửi trả một thông điệp cho các thư mục có
số xác nhận nhỏ hơn hoặc bằng số xác nhận của peer mới và thiết lập bảng
định tuyến cho nó. Sau đó, nó cập nhật trạng thái định tuyến của tất cả các
peer khác có ảnh hưởng ở trong mạng. Để tăng thêm tích mạnh mẽ cho thuật
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 15
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia

toán, môic thư mục có thể được lưu tại một số peer kế thừa. Do đó, nếu một
peer nào đo lỗi thì mạng có thể được sửa chữa lại và thư mục có thể được tìm
thấy ở peer khác.
Hình 1.4.2.3.2: Thuật toán Chord
• Thuật toán CAN xây dựng mô hình không gian nhận dạng như một đa thứ
nguyên. Mỗi peer lưu vết của các peer xung quanh nó trong từng thứ nguyên.
Khi một peer mới vào mạng, nó lựa chọn ngẫu nhiên một điểm trong không
gian nhận dạng và liên hệ với peer tại vị trí đó. Peer được liên hệ sẽ chia toàn
bộ không gian nó liên hệ thành 2 phần và chuyền một nửa cho peer mới. Peer
mới cũng liên hệ tới tất cả các peer xung quanh nó để cập nhật các lối định
tuyến. Để tăng thêm tính mạnh mẽ cho thuật toán này, không gian xác nhận
có thể được sao chép lại để tạo ra 2 hay nhiều hơn tính xác thực. Trong mỗi

Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 16
A ) Tìm vị trí kế thừa
B) Khởi tạo bảng định tuyến
C) Cập nhật các bảng định tuyến khác
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
xác thực, môic peer sẽ thiết lập thông tin khác nhau. Vif vậy, nếu một thư
mục không được tìm thấy tại một xác thực thì có thể sử dụng thông tin định
tuyến cho xác thực thứ 2 để tìm thông tin được yêu cầu.
• Tapestry và Pastry khá là giống nhau và đều dựa trên ý tưởng của một lưới
Plaxton. Các ID được đưa ra dựa trên một hàm băm địa chỉ IP của mỗi peer.
Khi một peer tham gia vào mạng, nó liên hệ với một peer gateway và đinh
tuyến tới peer có ID gần với ID của peer mới nhất. Trạng thái định tuyến của

peer mới được xây dựng bằng cách sao chép các trạng thái định tuyến của
các peer nằm trên đường dẫn tới vị trí của peer mới. Để lấy peer n, bảng định
tuyến của nó sẽ chứa i cấp, với nội dung cấp i-th tham chiếu tới b node (b tự
đưa ra). Việc định tuyến được dựa trên giao thức hậu tố dài nhất, đó là lựa
chọn bước nhảy tiếp theo sao cho peer có hậu tố phù hợp với vị trí mong
muốn trong số lượng lớn nhất có thể. Điểm mạnh của giao thức này là dựa
trên thực tế rằng tại mỗi bước nhảy, đa node do đó đa đường dẫn có lẽ đươcj
vượt qua.
Hệ
thống
Tiêu chuẩn so sánh thuật toán
Mô hình

Các
tham
số
Bước
nhảy
Trạng thái
định tuyến
Peer
tham gia
và thoát
Mức độ tin cậy
Napster

Trung tâm đánh
chỉ mục dữ liệu,
lấy vị trí từ server
trung tâm, tải trực
tiếp từ peer
Không

Cố
định
Cố định Cố định
Server trung tâm
trả về nhiều vị

trí download
Gnutella
Gửi yêu cầu tới
một vài peer có
thể, tải trực tiếp
Không

Không
chắc
chắn
Cố định
(3- 7)

Cố định
Nhận thông tin
trả về từ các
peer
Chord
Đơn nguyên,
không gian ID
vòng
N logN lgoN (logN)
2
Sao chép dữ liệu
trên nhiều peer

CAN
Không gian ID đa
thứ nguyên
N,d d - N
3/d
2 - d 2 – d
Các peer gửi trả
cho từng nhóm
dữ liệu
Tapestry
Lưới toàn cầu kiểu
Plaxton

N,b log
b
N log
b
N logN
Sao chép dữ liệu
trên nhiều peer,
lưu về đường
dẫn tới mỗi peer
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 17
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Pastry

Lưới toàn cầu kiểu
Plaxton
N,b log
b
N b - log
b
N +b logN
Sao chép dữ liệu
trên nhiều peer,
lưu về đường
dẫn tới mỗi peer
Bảng 1: So sánh sự khác nhau của các thuật toán P2P

1.5. Một số tính chất của mạng P2P
Trong phần này, ta sẽ đi tìm hiểu một số tính chất của công nghệ P2P. Có rất
nhiều vấn đề được đề cập trong khi phát triển công nghệ P2P bao gồm: phân quyền,
khả năng co giãn của mạng, khả năng che giấu thông tin, khả năng tự tổ chức mạng,
kết nối đặc biệt, thực thi, bảo mật, trong suốt, tiện lợi, khả năng phục hồi lỗi, …
Những vấn đề này có tác động chính đến hiệu lực và sự phát triển của các hệ thống
P2P cùng với các ứng dụng P2P.
1.5.1 Phân tán quyền
Các mô hinh P2P chỉ xem xét khả năng lưu trữ và xử lý dữ liệu trên các
server trung tâm, và truy xuất nội dung thông qua các giao thức yêu cầu-đáp ứng
yêu cầu (request-response). Trong mô hình client-server truyền thống, thông tin
được lưu trữ trên các server trung tâm và phân phát tới các máy client thông qua

mạng. Các hệ thống trập trung như vậy phù hợp với một số ứng dụng và một số tác
vụ. Ví dụ như việc truy nhập và bảo mật là dễ quản lý hơn. Tuy nhiên, cấu trúc của
các hệ thống tập trung tỏ ra thiếu hiệu quả, dễ bị sự cố nút cổ chai, và phí phạm tài
nguyên. Hơn nữa, để thiết lập và duy trì một hệ thống tập trung như vậy phải bỏ ra
một chi phí rất lớn. Chúng đòi hỏi nhân lực kỹ sư chất lượng cao để xây dựng và
phát triển nội dung.
Một trong những ý tưởng chính của mô hình phân tán là nhấn mạnh vào việc
sở hữu, điều khiển dữ liệu và tài nguyên của người sử dụng. Trong một hệ phân tán
đầy đủ, mọi peer đều ngang bằng nhau. Chính điều này tạo ra khó khăn trong việc
xây dựng các mô hình P2P bởi vì không có server trung tâm để quản lý tất cả các
peer hoặc những thông tin mà các peer cung cấp. Vì vậy mà một vài hệ thống file
P2P được xây dựng theo mô hình lai P2P như trường hợp của mạng Napster. Trong

Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 18
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
mạng Napster có một thư mục trung tâm lưu trữ các file nhưng các node tải file trực
tiếp từ các node khác.
Trong các hệ thống phân tán đầy đủ như Freenet hay Gnutella, việc tìm kiếm
trong mạng là rất khó khăn. Ví dụ, các node mới tham gia mạng phải biết địa chỉ
cảu các node khác hoặc phải sử dụng danh sách các máy có địa chỉ IP thông dụng.
Node tham gia mạng P2P bằng cách thiết lập kết nối với ít nhất một peer hiện tại
trong mạng. Sau đó, nó có thể tìm kiếm các peer khác và lưu giữ địa chỉ của các
peer đó.
Một cách để phân theo quyền của một hệ thống P2P là thông qua việc đánh
giá giữa kiến trúc thuần P2P với kiến trúc lai P2P. Hình minh họa sau sẽ mô tả chi

tiết sự phân tách đó:
Hình 1.5.1.1: Ví dụ về các cấp độ phân tán quyền trong các hệ thống P2P
1.5.2. Khả năng co giãn
Lợi ích dễ nhận thấy của hệ phân tán là để phát triển khả năng co giãn của
mạng. Khả năng co giãn của mạng bị giới hạn bởi các thành tố như số lượng của
các hệ điều hành trung tâm (ví dụ: khả năng đồng bộ hóa) cần để thực thi, số lượng
tình trạng để duy trì, các tính chất ứng dụng song song và mô hình lập trình được sử
dụng để mô tả tính toán …
Napster giải quyết vấn đề về khả năng co giãn mạng bằng việc cho phép các
peer trực tiếp tải file nhạc từ các peer khác có thông tin lưu trữ trong thư mục trung
tâm. Kết quả là số lượng peer trọng mạng Napster có thể lên tới 6 triệu peer. Mạng
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 19

Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
SETI@home hướng vào việc chia sẻ các tác vụ chạy song song, nó tận dụng lúc rỗi
rãi của CUP của các peer để phân tích những dữ liệu thu thập được từ các kính viêc
vọng với mục đích tìm sự sống ngoài trái đất. Số lượng peer trong mạng
SETI@home có thể lên tới 3.5 triệu peer. Các hệ thống khác như Avaki giải quyết
vấn đề về khả năng co giãn mạng bằng cách cung cấp một mô hình đối tượng phân
tán.
Thiết kế khả năng co giãn mạng tốt không được làm ảnh hưởng tới các tính
năng khác như phải đảm bảo được khả năng nhận dạng và khả năng thực thi. Để
giải quyết vấn đề này, các mạng lai P2P đưa ra giải pháp tập chung một vài thông
tin điều hành và các file.
Các hệ thống P2P ra đời sớm như Gnutella hay Freenet khá đặc biệt. Một

peer phải gửi yêu cầu của nó tới một vài peer khác để tìm kiếm thông tin. Điều này
khiến cho thời gian để gửi trả yêu cầu có thể không giới hạn được. Hơn nữa, việc
tìm kiếm một đối tượng có thể bị gửi trả về là lỗi không tồn tại mặc dù đối tượng đó
có tồn tại tạo nên tính không nhất quán của hệ thống.
Các hệ thống P2P ngày nay sử dụng các thuật toán CAN,Chord, Kademlia,
PAST,… lưu trữ bản đồ khóa đối tượng và node lưu chuyển. Vì vậy, một đối tượng
có thê luôn luôn được gửi về miễn là các node lưu chuyển có thể được tới nơi. Các
node trong các hệ thống như vậy bao gồm một mạng bao trùm lên trên. Mỗi node
chỉ lưu trữ thông tin của một vài node khác trong mạng. Điều đó dẫn tới việc giới
hạn về số lượng trạng thái để duy trì mạng và do đó làm giảm khả năng co giãn
mạng. Cấu trúc logic bao trùm cung cấp một số đảm bảo cho việc tìm kiếm. Các hệ
thống như vậy được thiết kế cho hàng tỉ người dùng, hàng triệu server cùng với số

lượng file lên tới 10
14
.
Trong tương lai, khi băng thông và khả năng tính toán vẫn tiếp tục phát triển
mạnh thì các platform sẽ có khả năng tạo ra nhiều lợi ích lớn để đưa ra nhiều ứng
dụng hơn nữa. Tác động của mạng làm cho các kiến trúc tăng khả tăng mở rộng
mạng hơn, tài nguyên được phân phối nhiều hơn, các ứng dụng được mở rộng hơn

1.5.3. Khả năng giấu thông tin
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 20
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Một mục đích quan trọng của khả năng giấu thông tin là cho phép người

dùng sử dung hệ thống mà không cần quan tâm tới tính hợp pháp hay các thành
phần khác. Một mục đích xa hơn là đảm bảo nội dung số. Những nhà phát triển của
Freenet đã xây dựng theo các mẫu cho khả năng giấu thông tin như sau:
• Tác giả: tác giả của thư mục hoặc người tạo ra thư mục không thể bị nhận
dạng.
• Người thiết lập: Người thiết lập thư mục cho hệ thống không thể bị nhận
dạng.
• Người đọc: Người đọc hay sử dụng dữ liệu không thể bị nhận dạng.
• Server: Các server lưu trữ thư mục không thể bị nhận dạng thông qua thư
mục lưu trữ
• Thư mục: Các server không thể biết được rằng chúng lưu trữ những thư
mục nào.

• Truy vấn: Các server không cho biết thông tin về thư mục được trả về
cho truy vấn của người sử dụng.
Trong mỗi liên lạc có 3 dạng khác nhau của khả năng giấu thông tin. Đó là:
Giấu thông tin người gửi: Các xác nhận của người gửi được ẩn đi; Giấu thông tin
người nhận: Các xác nhận của người nhận được ẩn đi; Giấu thông tin chung: Các
xác nhận của ngươi gửi và người nhận đều được ẩn đi đối với nhau và đối với cả
các peer khác.
Bên cạnh các dạng của che giấu thông tin như trên, cần phải hiểu được mức
độ che giấu thông tin của một kỹ thuật nào đó. Có 6 kỹ thuật thông dụng được dùng
để che giấu thông tin bao gồm:
1) Multicasting.
2) Bắt chước địa chỉ người gửi.

3) Bắt chước nhận dạng.
4) Chuyển đổi đường dẫn.
5) Dùng các bí danh.
6) Sắp xếp không tự nghuyện.
Các kỹ thuật trên đã được sử dụng trên mỗi hệ thông P2P với các mục đích
riệng. Bảng sau mô tả các kỹ thuật đã được sử dụng trên các hệ thống P2P.
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 21
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
Tên dự án
Các dạng và kỹ thuật che dấu thông tin
Người thiết lập Người đọc Server Thư mục
Gnutella

Multicast, Chuyển đổi
đường dẫn
Không Không Không
Freenet
Chuyển đổi đường dẫn,
Bắt chước nhận dạng
Chuyển đổi
đường dẫn
Sắp xếp không
tự nguyện
Mã hóa
APFS Chuyển đổi đường dẫn

Chuyển đổi
đường dẫn
Không Không
Fee Haven Chuyển đổi đường dẫn
Chuyển đổi
đường dẫn
Broadcast
Mã hóa/Chia cắt file
thành các phần chia sẻ
Publius Chuyển đổi đường dẫn Không
Sắp xếp không
tự nguyện

Mã hóa/Chia cắt Key
PAST Không Không
Sắp xếp không
tự nguyện
Mã hóa
Bảng 2: Các dạng của che dấu thông tin và các kỹ thuật sử dụng
Gnutella và Freenet cung cấp một cấp che dấu thông tin trong cách các peer
yêu cầu/gửi một thư mục. Trong Gnutella, một yêu cầu được broadcast và lặp lại
cho đến khi tìm thấy một peer có nội dung yêu cầu. Trong Freenet, một yêu cầu
được gửi đi và chuyển tiếp đến peer có nhiều khả năng chứa thông tin yêu cầu nhất.
Nội dung được trả về theo đường dẫn của yêu cầu gửi đi.
Free Haven và Publius được thiết kế để bảo vê chống lại sự kiểm duyệt.

Chúng củng cố việc che dấu thông tin của thư mục bằng cách phân tách các file và
lưu trữ trên mỗi server. Theo đó, không có server nào lưu trữ toàn bộ dữ liệu cần
thiết để thực hiện tấn công vào nội dung file đã được mã hóa. Việc che giấu thông
tin giữa một cặp peer liên lạc với nhau (người thiết lập/server, người đọc/server) sử
dụng kỹ thuật chuyển đổi đường dẫn.
PAST, CAN, Chord tiêu biểu cho một lớp mới của hệ thống P2P cung cấp
một cơ sở đáng tin cậy. Một thuộc tính chung giữa các hệ thống này là việc sắp xếp
đối tượng có thể hoàn toàn không tự nguyện. Kết quả là, khi một đối tượng bị thay
thế trên một node, node đó có thể được dữ lại để nhận đối tượng đó. Các kỹ thuật
định tuyến được tích hợp vào các hệ thồng này cũng dễ dàng được sửa lại cho phù
hợp để chuyển đổi đường dẫn cho việc che dấu thông tin chung.
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 22

Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
1.5.4. Tự tổ chức
Trong các hệ thống P2P, khả năng tự tổ chức mạng là cần thiết bởi vì các lý
do về khả năng co giãn mạng, khả năng phục hồi lỗi, gián đoạn kết nối của tài
nguyên và chi phí của quyền sở hữu. Các hệ thống P2P có thể định mức những thay
đổi về số lượng người sử dụng, số lượng các hệ thống, số lượng tải…. Rất khó để
biết trước những số lượng đó, yêu cầu thường xuyên cấu hình lại hệ thống trung
tâm. Độ quan trọng của định mức là để làm giảm các lỗi có thể xảy ra và đưa đến
khả năng tự duy trì, tự sửa chữa của hệ thống. Bên cạnh đó, rất khó để những cấu
hình xác định trước có thể giữ nguyên như cũ sau một thời gian dài hoạt động. Vì
vậy, yêu cầu phải được sửa lại để giữ lại những thay đổi do các peer kết nối và ngắt
kết nối khỏi các hệ thống P2P. Khả năng tự tổ chức còn được thể hện ở việc quản lý

được phân tán giữa các peer.
Có một vài hệ thống và sản phẩm hoàn toàn hướng tới khả năng tự tổ chức
mạng. Trong OceanStone, khả năng tự tổ chức được thêm vào cơ sở đinh vị và định
tuyến. Do sự gián đoạn hiệu lực peer, sự khác biệt về tiềm năng mạng và khác biệt
về băng thông nên cơ sở hạ tầng mạng phải tự chỉnh sửa hỗ trợ định vị và định
tuyến.
Trong Pastry, tự tổ chức mạng được điều khiển thông qua các giao thức cho
node đến và đi dựa trên một chịu lỗi bao trùm mạng. Các yêu cầu phía client được
đảm bảo để được định tuyến trung bình ít hơn [log
16
N] bước. Các đáp trả file cũng
được phân tán và lưu trữ là ngẫu nhiên để tạo ra sự cân bằng.

FastTrack cho tìm kiếm nhanh và tải để tự tổ chức mạng phân tán. Trong
những mạng như vậy, các máy tính cấu hình mạnh thì trở thành các SuperNode và
hoạt động như các trung tâm tìm kiêm. Bất cứ máy client cũng có thể là SuperNode
nếu đảm bảo các yêu cầu về mạng (có tiềm năng, băng thông rộng,…).
SearchLing sử dụng khả năng tự tổ chức để sửa chữa mạng của nó cho phù
hợp với kiểu tìm kiếm. Kết quả là, làm giảm lưu thông mạng, giảm thông tin thừa.
1.5.5. Chi phí của sở hữu
Một trong những tiền đề của P2P là chia sẻ quyền sở hữu. Chia sẻ quyền sở
hữu là giảm chi phí của việc sở hữu hệ thống và nội dung và chi phí để duy trì
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 23
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
chúng. Đó là một ứng dụng có thể áp dụng cho tất cả các lớp của các hệ thống P2P.

Điều này rất rõ ràng trong tính toán phân tán. Ví dụ, SETI@home tính toán nhanh
hơn cả máy tính nhanh nhất trên thế giới mà với chi phí chỉ bằng 1%.
Trong khi đó, khái niệm chia sẻ âm nhạc của Napster dựa trên sự phân phối
của mỗi thành viên tạo thành thư viện các file nhạc khổng lồ. Giống như việc cho
phép các peer sử dụng các hệ thống file khác của OceanStone.
Trong các hệ thống cộng tác P2P và liên lạc P2P và trong các platform, việc
loại bỏ các máy tính trung tâm để lưu trữ thông tin cũng được đưa ra để làm giảm
chi phí sở hữu va duy trì.
1.5.6. Kết nối không dự tính
Tính không dự tính trước của kết nối có ảnh hưởng lớn tới tất cả các lớp của
các hệ thống P2P. Trong tính toán phân tán, các ứng dụng song song không thể thực
thi trên tất cả các hệ thống tại mọi thời điểm; một vài hệ thống có hiệu lực tại mọi

thời điểm, một vài hệ thống có hiệu lực ở một số thời điểm và một vài hệ thống
không hề có hiệu lực. Các hệ thống và các ứng dụng P2P trong tính toán phân tán
cần phải nhận thức được tính không dự tính trước và phải có khả năng điều khiển
các hệ thống tham gia và rýt khỏi các hệ thống P2P có hiệu lực. Trong khi ở các hệ
thống phân tán truyền thống, đó là một sự kiện ngoại lệ thì đối với các hệ thống
P2P, điều đó được coi là bình thường.
Trong các hệ thống và ứng dụng P2P chia sẻ nội dung, người dùng mong
muốn có khả năng truy nhập nội dung một cách gián đoạn, dễ kết nối tới nhà cung
cấp nội dung. Trong các hệ thống có tính đảm bảo cao hơn như các thỏa thuận cấp
dịch vụ, tính không dự tính trước bị giảm đi bởi các nhà cung cấp dịch vụ không
cần thiết, nhưng các phần của nhà cung cấp có lẽ vẫn không có hiệu lực.
Trong các hệ thống và ứng dụng P2P cộng tác, tính không dự tính trước của

kết nối thể hiện rõ hơn. Những người sử dụng các thiết bị mobile mong muốn kết
nối mạng Internet và có khả năng cộng tác nhiều hơn. Để giải quyết tình huống này,
các hệ thống cộng tác hỗ trợ làm trong suốt độ trễ của liên lạc tới các hệ thống đã
ngắt kết nối. Điều này có thể được giải quyết bằng việc đặt các proxy trên các mạng
để nhận tin nhắn, hoặc có các kiểu relay khác nhau trên hệ thống gửi tin hoặc ở bất
Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 24
Đồ án tốt nghiệp Tìm hiểu và xây dựng ứng dụng P2P theo kién trúc Kademlia
cứ nơi nào trong mạng để làm nơi lưu trữ liên lạc tạm thời cho hệ thống không còn
hiệu lực.
Hơn nưa, không phải mọi thứ sẽ được kết nối vào mạng Internet. Ngay cả
trong tình huống đó, các nhóm đặc biệt vẫn phải có khả năng thực hiện mạng ad-
hoc để cộng tác. Các hạ tầng cơ sở mạng ad-hoc hỗ trợ như 802.11b, Bluetooth và

hhồng ngoại chỉ có một giới hạn tần số. Vì vậy, cả ứng dụng và hệ thống P2P đều
cần được thiết kế để chịu ngắt kết nối đột ngột và không dự tính tùy thuộc vào các
nhóm của peer.
1.5.7. Tính thực thi
Tính thực thi là một quan tâm đặc biệt trong các hệ thống P2P. Các hệ thống
P2P hướng tới phát triển thực thi bằng việc tập hợp dung lượng lưu trữ phân tán
(Napster, Gnutella,…) và chu kỳ tính toán (SETI@home, ) của các thiết bị trải
khắp trong mạng. Do tính phân tản quyền của những mô hình đó mà tính thực thi bị
tác động theo 3 dạng tài nguyên: xử lý, lưu trữ và mạng. Riêng độ trễ của mạng có
thể đáng kể đối với mạng diện rộng. Băng thông là nhân tố chính khi số lượng lớn
tin nhắn được lan truyền đi trong mạng và số lượng lớn các file đang được truyền đi
giữa các peer. Điều đó làm giới hạn khả năng co giãn của hệ thống. Thực thi trong

phạm vi đó không nhấn mạnh vào cấp độ mili giây, nhưng hãy thử tìm hiểu xem nó
sẽ mất bao lâu để gửi trả về một file và một truy vấn tiêu thụ hết bao nhiêu băng
thông .
Trong các hệ thống kết hợp (Napster, SETI@home, ), sự kết hợp giữa các
peer được điều khiển và được điều chỉnh bởi một server trung tâm, mặc dù sau đó
các peer cũng kết nối trực tiếp với nhau. Điều đó làm cho các hệ thống dễ bị tấn
công bởi các vấn đề mà server trung tâm đang gặp phải. Để vượt qua những giới
hạn của hệ thống kết hợp tập chung, các kiến trúc lai P2P khác đã được đưa ra để
phân tán chức năng của hệ thống kết hợp thành các server đánh chỉ mục, các server
này sẽ kết hợp với nhau để thỏa mãn yêu cầu của người sử dụng. DNS là một ví dụ
của hệ thống P2P có thứ bậc, hệ thống này phát triển khả năng thực thi bằng cách
định nghĩa một cây kết hợp, với mỗi kết hợp sẽ đáp trả một nhóm peer. Liên lạc

Hoàng Tuấn Anh – Lớp Công Nghệ Phần Mềm A – K46 Trang 25

×