LỜI MỞ ĐẦU
Tốc độ phát triển của công nghệ đã mang đến cho người dùng cuối những ứng
dụng, tiện ích miễn phí và chất lượng hơn. Nhưng dù công nghệ thay đổi, biến chuyển
thế nào, nhu cầu chia sẻ dữ liệu vẫn luôn cần thiết đối với tất cả mọi người.
Con người sử dụng mạng Internet chính là để tìm kiếm thông tin, thông tin thì có
rất nhiều định dạng. Trong thời gian gần đây, chia sẻ file ngang hàng đã nổi lên như
một lĩnh vực ứng dụng chiếm tỉ lệ sử dụng băng thông lớn trong mạng Internet. Bắt
đầu từ hiện tượng Napster vào cuối những năm 90, sự phổ biến của các chương trình
chia sẻ file ngang hàng như Gnutella, Freenet, Kazzaa đã tạo nên một xu hướng phát
triển mạnh mẽ việc chia sẻ nội dung trong cộng đồng người dùng Internet. Hệ thống
mạng ngang hàng và các ứng dụng chia sẻ file ngang hàng cũng trở thành một đề tài
thu hút được nhiều sự quan tâm, nghiên cứu của các nhà khoa học.
Các hệ thống chia sẻ file ngang hàng đang ngày càng phổ dụng nhờ những lợi
điểm rõ rệt so với hình thức chia sẻ file trên nền Web theo kiến trúc client - server.
Tuy nhiên, các ứng dụng chia sẻ file ngang hàng phổ biến hiện nay trên Internet vẫn
còn một hạn chế lớn. Chúng mới chỉ cho phép người dùng tìm kiếm file theo tên hay
gọi chung là định danh chứ chưa có chức năng truy xuất theo nội dung.
LỜI CẢM ƠN
Lời đầu tiên em xin cảm ơn các Thầy Cô Trường Đại Học Bách Khoa, đã cung cấp
cho em các thông tin, kiến thức vô cùng quý báu và cần thiết trong suốt thời gian học
tập tại trường để em có thể thực hiện và hoàn thành đồ án môn học của mình.
Để thực hiện và hoàn thành tốt đề tài này, em đã nhận được sự giúp đỡ và hướng
dẫn rất tận tình của các Thầy Cô thuộc Khoa Công Nghệ Thông Tin.
Đặc biệt em xin chân thành gửi lời cảm ơn tới Thầy: Mai Văn Hà người đã trực
tiếp hướng dẫn và tận tình giúp đỡ chúng em rất nhiều trong suốt thời gian thực hiện
đồ án môn học này.
Cuối cùng, xin chân thành cảm ơn tất cả các bạn đã ủng hộ, giúp đỡ, chia sẻ kiến
thức, kinh nghiệm và tài liệu có được cho bọn mình trong quá trình nghiên cứu và
thực hiện đề tài.
…………………………………………………………………………………………
………………………………………
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI.................................................................1
1.1Bối cảnh của để tài..................................................................................................1
1.2Mục tiêu và mục đích đề tài....................................................................................1
1.3Phương pháp triển khai...........................................................................................1
1.4 Môi trường áp dụng................................................................................................1
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT..........................................................................................2
2.1 Giới thiệu về mạng ngang hàng P2P......................................................................2
2.1.1 Khái niệm cơ bản.......................................................................................................2
2.1.2 Đặc điểm của mạng ngang hàng................................................................................3
2.1.3 Phân loại mạng ngang hàng.......................................................................................3
2.1.4 Tiện ích của mạng ngang hàng..................................................................................4
2.1.5 Những khó khăn trong thiết kế mạng ngang hàng....................................................4
2.2 Mô hình mạng Naspter...........................................................................................6
2.2.1 Giới thiệu mô hình mạng Naspter.............................................................................6
2.2.2 Sơ đồ hoạt động của Naspter.....................................................................................6
CHƯƠNG 3: THIẾT KẾ VẦ XÂY DỰNG CHƯƠNG TRÌNH...............................................8
3.1 Phân tích yêu cầu....................................................................................................8
3.2 Phân tích các chức năng.........................................................................................9
3.2.1 Chức năng của Napster Server..................................................................................9
3.2.2 Chức năng của Napster Client...................................................................................9
3.2.3 Thiết kế dữ liệu........................................................................................................11
- Với sự phát triển mạnh mẽ như công nghệ thông tin thì máy tính đã trở thành
công cụ đắc lực và không thể thiếu của con người. Con người sử dụng mạng
Internet phần lớn là để tìm kiếm tài liệu, thông tin. Vì vậy em đã chọn đề tài
“XÂY DỰNG CHƯƠNG TRÌNH TRUYỀN FILE THEO MÔ HÌNH P2PNAPSTER”. Chương trình được xây dựng bằng ngôn ngữ lập trình Java, dựa
trên ứng dụng của mạng ngang hàng P2P.
1.2 Mục tiêu và mục đích đề tài
-
Mục tiêu: hiểu công nghệ truy xuất thông tin để xây dựng một ứng dụng chia
sẻ file ngang hàng có chức năng tìm kiếm theo nội dung.
-
Mục đích: Tìm Xây dựng được chương trình truyền file theo mô hình P2PNapster
1.3 Phương pháp triển khai
− Lập kế hoạch thực hiện đề tài.
−
Thiết kế hệ thống và dữ liệu.
− Tìm hiểu giao thức TCP/IP
−
Xây dựng chương trình.
−
Kiểm thử và sửa lỗi.
trong nó một cơ cấu điều khiển tập trung hoặc một tổ chức có phân cấp. Trong một hệ
thống thuần túy ngang hàng, chương trình chạy trên mỗi điểm nút có vai trò hoàn toàn
tương đương và bình đẳng với nhau. Tính chất này đối lập hoàn toàn với kiến trúc
client – server truyền thống nơi có một hoặc một số điểm nút chỉ đóng vai trò cung
cấp dịch vụ (servers) và các điểm nút còn lại chỉ sử dụng dịch vụ (clients).
Lợi điểm rõ rệt nhất của kiến trúc ngang hàng là khả năng tận dụng tốt hơn tài
nguyên (xử lý, băng thông, lưu trữ) trong toàn mạng. Bên cạnh đó, kiến trúc này cũng
giúp cho dịch vụ mạng tránh khỏi tình trạng ngừng trệ khi server gặp phải trục trặc.
Tuy nhiên mô hình này cũng tồn tại nhược điểm là khó kiểm soát được trạng thái,
hành vi của các điểm nút trên toàn mạng. Ngoài ra nó cũng đòi hỏi các máy khi tham
gia vào một mạng ngang hàng phải có năng lực xử lý cũng như băng thông gần tương
đương như nhau.
Không giống như trong kiến trúc client – server, hiệu suất hoạt động chung của
mạng ngang hàng có xu hướng tăng lên khi gia tăng số điểm nút tham gia. Hiệu suất
này cũng phụ thuộc vào từng ứng dụng mạng cụ thể, vào giao thức ngang hàng và cấu
hình mạng (topology).
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 2
2.1.2 Đặc điểm của mạng ngang hàng
Các mạng ngang hàng ngày nay thường mang một số đặc trưng phổ biến sau:
Các điểm nút trong mạng có thể nhận biết lẫn nhau, nghĩa là có một cơ chế nào
đó giúp cho một điểm nút khi tham gia vào mạng có thể xác định một máy
khác cũng là thành viên của mạng. Từ đó chúng có thể định vị được nhau, gửi
thông điệp tới nhau và nhận thông điệp từ nhau.
Các điểm nút tạo ra một mạng kết nối ảo và ở một mức trừu tượng cao hơn so
với các cơ cấu tổ chức như: tường lửa (firewall), NAT (Network Address
Tận dụng được tiện ích tổng hợp: Nơi lưu trữ, thông tin và chi phí tính toán
được phân phối giữa các PEER, làm các máy tính tham gia vào mạng sẽ dễ
dàng có được thông tin yêu cầu.
Tăng độ tin cậy.
Chứa đựng rất nhiều thông tin: Trong mạng P2P có rất nhiều các máy tính
tham ra vào, bản thân mỗi máy tính đã chứa nhiều thông tin, trong khi đó các
công cụ tìm kiếm chỉ có thể nắm bắt được khoảng 20% nội dung của các
Website.
2.1.5 Những khó khăn trong thiết kế mạng ngang hàng
Cân đối băng thông: Trong phần lớn các ứng dụng chạy trên mạng ngang hàng,
do mỗi điểm nút đều đóng cả hai vai trò: client và server nên tỉ lệ sử dụng băng
thông đầu ra (outbound bandwidth) và băng thông đầu vào (inbound
bandwidth) tại từng điểm nút là tương đối cân bằng. Tuy nhiên các nhà cung
cấp dịch vụ mạng (ISPs) lại thường triển khai các mạng không đối xứng trong
đó dành sự ưu tiên cho phần băng thông đầu vào. Ví dụ một số ISP của các
mạng DSL hỗ trợ 1.5Mbps băng thông đầu vào nhưng chỉ có 128Kbps cho
băng thông đầu ra. Cho dù băng thông tổng cộng của kết nối vật lý có được mở
rộng thì hạ tầng kỹ thuật của các ISP vẫn sẽ chủ yếu hỗ trợ cơ chế bất đối xứng.
Giải pháp triệt để cho vấn đề này có thể đến từ sự cộng tác giữa các ISP và
khách hàng bằng việc triển khai những thiết bị mạng chuyên dụng.
Tổ chức không gian tên: Việc đặt tên cho các website được thực hiện thông qua
hệ thống phân cấp của dịch vụ phân giải tên miền (DNS). Tuy nhiên trong các
mạng ngang hàng không tồn tại một cơ chế tương tự. Không như các máy chủ
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 4
dịch vụ web, các điểm nút trong mạng ngang hàng không tồn tại ở trạng thái
tĩnh. Thời điểm và khoảng thời gian tham gia vào mạng của mỗi điểm nút cũng
2.2 Mô hình mạng Naspter
2.2.1 Giới thiệu mô hình mạng Naspter
Napster là mạng ngang hàng đặc trưng cho hệ thống mạng ngang hàng của thế hệ
thứ nhất, chúng được dùng cho việc chia sẻ các file giữa các người dùng Internet,
được sử dụng rộng rãi, tuy nhiên nhanh chóng bị mất thị trường bởi yếu tố về luật
pháp. Khái niệm và kiến trúc của Napster vẫn còn được sử dụng trong các ứng dụng
khác như: Audiogalaxy, WinMX. Với Napster, việc tìm kiếm file bị thất bại khi bảng
tìm kiếm trên máy chủ vì lý do nào đó không thực hiện được. Chỉ có các file truy vấn
và việc lưu trữ được phân tán, vì vậy máy chủ đóng vai trò là một nút cổ chai. Khả
năng tính toán và lưu trữ của máy chủ tìm kiếm phải tương xứng với số nút mạng
trong hệ thống, do đó khả năng mở rộng mạng bị hạn chế rất nhiều.
Napster là một mô hình mạng lai P2P (Hybrid P2P), nó có chứa máy chủ trung tâm
nắm giữ những thông tin trên mỗi peer và phản hồi lại những yêu cầu tìm kiếm tài
nguyên trên các peer khác. Máy chủ không lưu trữ các tài nguyên được chia sẻ mà nó
chỉ có nhiệm vụ thu thập những tài nguyên được chia sẻ từ các máy peer trong mạng
và hồi đáp lại thông tin mà máy peer chứa thông tin chia sẻ cho các máy yêu cầu.
Ưu điểm :
+ Dễ xây dựng
+ Tìm kiếm file nhanh và hiệu quả
Nhược điểm :
+ Vấn đề luật pháp, bản quyền .
+ Dễ bị tấn công.
+ Cần quản trị mạng (central server).
2.2.2 Sơ đồ hoạt động của Naspter
Mỗi client lưu trữ files định chia sẻ với các node khác trong mạng.
Một bảng lưu trữ thông tin kết nối của người dùng đăng kí (IP address,
connection bandwidth ….).
SVTH:Nguyễn Văn Phúc – 12TLT
Để thực hiện được ba chức năng nêu trên, chương trình sẽ tách thành hai thành
phần triển khai ở hai phía: phía các điểm nút và phía các máy chủ tìm kiếm. Nhiệm vụ
triển khai trên máy chủ tìm kiếm:
Tổ chức xây dựng và cập nhật chỉ mục tìm kiếm.
Tiếp nhận truy vấn từ các điểm nút, tìm kiếm dựa trên chỉ mục và trả về danh
sách kết quả.
Nhiệm vụ của thành phần triển khai tại các điểm nút:
Gửi tới máy chủ tìm kiếm các yêu cầu đăng nhập và đăng xuất khỏi hệ thống
mạng ngang hàng.
Tiếp nhận yêu cầu của người dùng và gửi đến máy chủ tìm kiếm các thông báo
chia sẻ hoặc dừng chia sẻ các file được lưu trữu tại các nút.
Tiếp nhận truy vấn do người dùng nhập, gửi đến máy chủ tìm kiếm và tổ chức
hiển thị kết quả trả về.
Tiếp nhận và gửi yêu cầu tải tài liệu của người dùng tới điểm nút đích, đóng vai
trò là phía client trong hoạt động tải tài liệu.
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 8
Tiếp nhận yêu cầu tải tài liệu được chia sẻ trên máy cục bộ và đóng vai trò
server cung cấp tài liệu cho các điểm nút khác.
3.2 Phân tích các chức năng
3.2.1 Chức năng của Napster Server
Module này được cài đặt lên các máy được chỉ định làm server kết nối trong
Napster.
Napster Server có chức năng quản lý toàn bộ các client kết nối tại một thời điểm
nhất định, quản lý các tài nguyên được chia sẻ như: tên tài nguyên, nơi chia sẻ tài
nguyên đó(Client nào chia sẻ)…
Hình 3: Tìm kiếm file
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 10
Hình 4: Truyền và nhận file
3.2.3 Thiết kế dữ liệu
Dữ liệu được cài đặt trên Server Napster để chứa thông tin các tài nguyên và client
chia sẻ file, quản lý nhật ký….
Bảng: tbFile
TÊN TRƯỜNG
KIỂU DỮ LIỆU
MÔ TẢ
IP
Text
IP của máy chia sẻ file
Port Chia Se
int
Cổng nhận nhận yêu cầu kết nối tải
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6
năm 1995. Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên
nghiệp. Java được xây dựng trên nền tảng của C và C++. Do vậy nó sử dụng các cú
pháp của C và các đặc trưng hướng đối tượng của C++.
-
Java là ngôn ngữ lập trình hướng đối tượng, do vậy không thể dùng Java để
viết một chương trình hướng chức năng. Java có thể giải quyết hầu hết các công việc
mà các ngôn ngữ khác có thể làm được.
-
Java là ngôn ngữ vừa biên dịch vừa thông dịch. Đầu tiên mã nguồn được biên
dịch bằng công cụ JAVAC để chuyển thành dạng ByteCode. Sau đó được thực thi trên
từng loại máy cụ thể nhờ chương trình thông dịch. Mục tiêu của các nhà thiết kế Java
là cho phép người lập trình viết chương trình một lần nhưng có thể chạy trên bất cứ
phần cứng cụ thể.
-
Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trên Internet.
Nó là ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ
điều hành. Nó không chỉ dùng để viết các ứng dụng chạy đơn lẻ hay trong mạng mà
còn để xây dựng các trình điều khiển thiết bị cho điện thoại di động, PDA, …
Các kiểu chương trình Java:
Applets là chương trình được tạo ra để sử dụng trên Internet thông qua các
trình duyệt hỗ trợ Java như IE hay Netscape. Bạn có thể dùng Java để xây dựng
Applet. Applet được nhúng bên trong trang Web. Khi trang Web hiển thị trong
• Viết mã nguồn: dùng một chương trình soạn thảo nào đấy (NotePad hay
Jcreator chẳng hạn) để viết mã nguồn và lưu lại với tên có đuôi ".java"
• Biên dịch ra mã máy ảo: dùng trình biên dịch javac để biên dịch mã nguồn
".java" thành mã của máy ảo (java bytecode) có đuôi ".class" và lưu lên đĩa
• Thông dịch và thực thi: ứng dụng được load vào bộ nhớ, thông dịch và thực
thi dùng trình thông dịch Java thông qua lệnh "java".
• Đưa mã java bytecode vào bộ nhớ: đây là bước "loading". Chương trình phải
được đặt vào trong bộ nhớ trước khi thực thi. "Loader" sẽ lấy các files chứa mã
java bytecode có đuôi ".class" và nạp chúng vào bộ nhớ.
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 13
• Kiểm tra mã java bytecode: trước khi trình thông dịch chuyển mã bytecode
thành mã máy tương ứng để thực thi thì các mã bytecode phải được kiểm tra
tính hợp lệ.
• Thông dịch & thực thi: cuối cùng dưới sự điều khiển của CPU và trình thông
dịch tại mỗi thời điểm sẽ có một mã bytecode được chuyển sang mã máy và
thực thi.
4.1.2 Giới thiệu hệ quản trị SQL Server
-
Microsoft SQl server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational
Database Management System – RDBMS) do Microsoft phát triển. SQL Server là một
hệ quản trị cơ sở dữ liệu quan hệ mạng máy tính hoạt động theo mô hình khách chủ
cho phép đồng thời cùng lúc có nhiều người dùng truy xuất đến dữ liệu, quản lý việc
truy nhập hợp lệ và các quyền hạn của từng người dùng trên mạng. Ngôn ngữ truy vấn
qua các trình tiện ích để gởi các yêu cầu dưới dạng các câu lệnh SQL đến cơ sở dữ
liệu và nhận kết quả trả về từ cơ sở dữ liệu
-
SQL là ngôn ngữ lập trình cơ sở dữ liệu: Các lập trình viên có thể nhúng các
câu lệnh SQL vào trong các ngôn ngữ lập trình để xây dựng nên các chương trình ứng
dụng giao tiếp với cơ sở dữ liệu
-
SQL là ngôn ngữ quản trị cơ sở dữ liệu: Thông qua SQL, người quản trị cơ sở
dữ liệu có thể quản lý được cơ sở dữ liệu, định nghĩa các cấu trúc lưu trữ dữ liệu, điều
khiển truy cập cơ sở dữ liệu
-
SQL là ngôn ngữ cho các hệ thống khách/chủ (client/server): Trong các hệ
thống cơ sở dữ liệu khách/chủ, SQL được sử dụng như là công cụ để giao tiếp giữa
các trình ứng dụng phía máy khách với máy chủ cơ sở dữ liệu.
-
SQL là ngôn ngữ truy cập dữ liệu trên Internet: Cho đến nay, hầu hết các máy
chủ Web cũng như các máy chủ trên Internet sử dụng SQL với vai trò là ngôn ngữ để
tương tác với dữ liệu trong các cơ sở dữ liệu.
-
SQL là ngôn ngữ cơ sở dữ liệu phân tán: Đối với các hệ quản trị cơ sở dữ liệu
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 17
Download File
Hình 9: Tìm kiếm file cần tải
Hình 10: Tiến hành chọn nơi lưu file
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 18
Hình 11: Quá trình Download file
Hình 12: Download file thành công
SVTH:Nguyễn Văn Phúc – 12TLT
Trang 19
4.2.2 Giao diện quản lý của Napster Server:
Hình 13: Giao diện server khi chưa có client kết nối
Hình 14: Thông tin Client và các file đã chia sẻ