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...
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ô...
NHẬN XÉT
(Của giảng viên hướng dẫn)
………………………………………………………………………………………
…………………………………………………………………………………………
……………………………………………...
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI.................................................................1
1.1Bối cản...
MỤC LỤC HÌNH ẢNH
Hình 1: Mô hình hoạt động của Napster.......................................................................
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI
1.1 Bối cảnh của để tài
- Với sự phát triển mạnh mẽ như công nghệ thông tin thì máy ...
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu về mạng ngang hàng P2P
2.1.1 Khái niệm cơ bản
Mạng ngang hàng không phải là một v...
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 ...
 Phân phối nội dung: OpenCola, Blue Falcon Networks, Konitiki.
 Truyền thông P2P: AOL Instant Messenger, Yahoo! Messenge...
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à...
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 ngan...
 Một bảng liệt kê danh sách các files mà mỗi người dùng định chia sẻ (tên file,
thời gian tạo file …….)
 Mọi máy tính th...
CHƯƠNG 3: THIẾT KẾ VẦ XÂY DỰNG CHƯƠNG TRÌNH
3.1 Phân tích yêu cầu
Trong mục này em sẽ đưa ra giải pháp xây dựng một chương...
 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...
Hình 2: Chức năng chia sẻ file
 Chức năng 3: Tải File
Nếu client này gởi một lời yêu cầu một tài nguyên nào đó lên Server...
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...
CHƯƠNG 4: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
4.1 Môi trường triển khai
4.1.1 Giới thiệu ngôn ngữ lập trình Java
- Java là một ...
 Ứng dụng đồ họa: Đây là các chương trình Java chạy độc lập cho phép người
dùng tương tác qua giao diện đồ họa.
 Servlet...
• 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ã b...
Vai trò của SQL:
- SQL là ngôn ngữ hỏi có tính tương tác: Người sử dụng có thể dễ dàng thông
qua các trình tiện ích để gởi...
4.2 Demo sản phẩm
4.2.1 Giao diện chính của Client:
Hình 5: Giao diện chính của Client
 Chia sẻ File:
Hình 6: Chọn file đ...
Hình 7: Chọn nút chia sẻ
Hình 8: File vừa mới chia sẻ
SVTH:Nguyễn Văn Phúc – 12TLT Trang 17
 Download File
Hình 9: Tìm kiếm file cần tải
SVTH:Nguyễn Văn Phúc – 12TLT Trang 18
Hình 10: Tiến hành chọn nơi lưu file
Hình 11: Quá trình Download file
Hình 12: Download file thành công
SVTH:Nguyễn Văn Ph...
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
SVTH:Nguyễn Văn Phúc – 12...
Hình 14: Thông tin Client và các file đã chia sẻ
4.3 Kết luận
 Ưu điểm:
• Thực hiện chia sẻ file nhanh chóng dễ dàng.
• C...
TÀI LIỆU THAM KHẢO
1. Nguyễn Phương Lan- Hoàng Đức Hải, Java lâp trình mạng, Nhà xuất bản
Giáo dục
2. http://doc.edu.vn/ta...
Upcoming SlideShare
Loading in …5
×

Bc do an

464 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
464
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Bc do an

  1. 1. 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.
  2. 2. 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. Do còn giới hạn về mặt thời gian cũng như kinh nghiệm thực tiễn nên đề tài không tránh khỏi những sai sót ngoài ý muốn. Chúng em rất mong nhận được sự thông cảm của Quý Thầy Cô và mong đón nhận sự đóng góp ý kiến của Thầy Cô và các bạn. Em Xin Chân Thành Cảm Ơn ! Đà Nẵng, Ngày 24 Tháng 12 Năm 2013 Sinh Viên Thực Hiện Nguyễn Văn Phúc
  3. 3. NHẬN XÉT (Của giảng viên hướng dẫn) ……………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………
  4. 4. 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 CHƯƠNG 4: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ.......................................................12 4.1 Môi trường triển khai.........................................................................................12 4.1.1 Giới thiệu ngôn ngữ lập trình Java..........................................................................12 4.1.2 Giới thiệu hệ quản trị SQL Server...........................................................................14 4.2 Demo sản phẩm.................................................................................................16 4.2.1 Giao diện chính của Client:.....................................................................................16 4.2.2 Giao diện quản lý của Napster Server:....................................................................20
  5. 5. MỤC LỤC HÌNH ẢNH Hình 1: Mô hình hoạt động của Napster....................................................................................7 Hình 2: Chức năng chia sẻ file.................................................................................................10 Hình 3: Tìm kiếm file...............................................................................................................10 Hình 4: Truyền và nhận file.....................................................................................................11 Hình 5: Giao diện chính của Client..........................................................................................16 Hình 6: Chọn file để tiến hành chia sẻ.....................................................................................16 Hình 7: Chọn nút chia sẻ..........................................................................................................17 Hình 8: File vừa mới chia sẻ....................................................................................................17 Hình 9: Tìm kiếm file cần tải...................................................................................................18 Hình 10: Tiến hành chọn nơi lưu file.......................................................................................19 Hình 11: Quá trình Download file...........................................................................................19 Hình 12: Download file thành công.........................................................................................19 Hình 13: Giao diện server khi chưa có client kết nối...............................................................20 Hình 14: Thông tin Client và các file đã chia sẻ......................................................................21
  6. 6. CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN ĐỀ TÀI 1.1 Bối cảnh của để tài - 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 P2P- NAPSTER”. 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 P2P- Napster 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. − Tổng hợp và viết báo cáo. 1.4 Môi trường áp dụng - Ngôn ngữ lập trình : Java - Quản trị cơ sở dữ liệu: SQL server 2012 - Môi trường làm việc: Netbean 7.4 SVTH:Nguyễn Văn Phúc – 12TLT Trang 1
  7. 7. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu về mạng ngang hàng P2P 2.1.1 Khái niệm cơ bản Mạng ngang hàng không phải là một vấn đề hoàn toàn mới. Các máy chủ dịch vụ thư điện tử (Mail servers) hoặc các máy chủ phân giải tên miền (Domain Name Servers) được kết nối với nhau tạo ra một mạng ngang hàng. Ví dụ như giữa các máy chủ thư điện tử có thể thực hiện tương tác trực tiếp với nhau. Chúng có thể gửi, nhận hoặc chuyển tiếp các email cho nhau. Tuy các dịch vụ thư điện tử hay DNS đã xuất hiện từ lâu trên Internet nhưng khái niệm mạng ngang hàng hay tính toán ngang hàng (P2P – Peer-to-Peer) thì mới được đưa ra gần đây. Mạng ngang hàng là những hệ phân tán với đặc thù là không tồn tạ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
  8. 8. 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 Translation), mạng con (subnet). Mỗi điểm nút có thể nằm trong các mạng con khác nhau, chịu những cơ chế tổ chức, kiểm soát và giới hạn hoàn toàn riêng biệt. Tuy nhiên khi đã tham gia vào mạng, chúng sẽ tổ chức được những mối liên kết logic với nhau thông qua việc sử dụng các dịch vụ hoặc chạy các ứng dụng ở tầng cao hơn so với những cơ chế vừa được nhắc tới. Tạo ra một mạng kết nối logic giữa những điểm nút bị biệt lập hóa trong các mạng riêng biệt chính là ý tưởng xuyên suốt nhất của kiến trúc ngang hàng.  Mỗi điểm nút tự nó có thể vừa đóng vai trò của client vừa đóng vai trò của server. Điều này thể hiện rõ vai trò bình đẳng và độc lập của từng điểm nút. Mọi điểm nút vừa có thể cung cấp dịch vụ cho các điểm nút khác vừa có thể sử dụng dịch vụ của một hay nhiều điểm nút còn lại.  Xuất hiện một số nhóm điểm nút liên kết với nhau để chia sẻ dữ liệu và cộng tác với nhau trong xử lý. Đây là sự tổ hợp lại các điểm nút có những mối liên hệ chặt chẽ và mang tính tương tác gần gũi hơn trong quá trình hoạt động của ứng dụng mạng. 2.1.3 Phân loại mạng ngang hàng Các ứng dụng mạng ngang hàng có thể được chia thành một số nhóm như sau:  Chia sẻ file: Gnutella, FastTrack, Napster.  Chia sẻ tài nguyên phân tán: SETI@Home, Avaki, Entropia và các dự án tính toán lưới. SVTH:Nguyễn Văn Phúc – 12TLT Trang 3
  9. 9.  Phân phối nội dung: OpenCola, Blue Falcon Networks, Konitiki.  Truyền thông P2P: AOL Instant Messenger, Yahoo! Messenger, ICQ, Jabber.  Các ứng dụng cộng tác: Hive, Groove, myJXTA. 2.1.4 Tiện ích của mạng ngang hàng  Giúp cho người dùng dễ dàng tìm được dữ liệu cần thiết.  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
  10. 10. 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 ko thể xác định được. Công việc tạo ra một tên (định danh) duy nhất cho các đối tượng, thành phần của mạng phải được thực hiện bởi chính người phát triển ứng dụng và do đó nó phụ thuộc vào đặc thù của từng ứng dụng.  Chứng thực và kiểm tra quyền truy cập của người dùng: Nếu tất cả các file đều được đặt trên server thì sẽ dễ dàng hơn trong việc chứng thực người dùng cũng như kiểm tra quyền hạn truy cập của họ đối với dữ liệu. Tuy nhiên do tính chất phân tán của mạng ngang hàng, công việc này phải được thực hiện bởi từng điểm nút. Người phát triển khi muốn xây dựng một ứng dụng ngang hàng hoàn chỉnh cần quan tâm nhiều đến vấn đề bảo mật, chống các hành động xâm nhập trái phép làm ảnh hưởng tới dữ liệu.  Kiểm soát hành vi của người dùng: Do không thể lưu trữ tập trung thông tin về hành động của các điểm nút nên rất khó kiểm soát được những hành động đó. Lấy ví dụ trong một mạng chia sẻ file ngang hàng, người dùng có thể thực hiện một trong những hành vi không thực sự phù hợp như sau: + Không chia sẻ bất kỳ file nào trên máy mình. + Chia sẻ các file bị lỗi. + Chia sẻ các file chứa mã nguy hiểm, virus. + Chia sẻ các file mà nội dung của nó chắc chắn không được bất kỳ ai quan tâm. + Không cho phép các điểm nút khác tải về những file được chia sẻ trên máy mình. Nếu tất cả các điểm nút tham gia đều thực hiện những hành vi tiêu cực như trên thì hoạt động của mạng ngang hàng thực sự không hiệu quả và kém an toàn. Tùy thuộc vào từng ứng dụng cụ thể, người thiết kế và phát triển phải thiết lập những cơ chế kiểm soát hành vi của các điểm nút để bảo đảm rằng chúng thực sự có những đóng góp tích cực cho cộng đồng sử dụng mạng. SVTH:Nguyễn Văn Phúc – 12TLT Trang 5
  11. 11. 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 Trang 6
  12. 12.  Một bảng liệt kê danh sách các files mà mỗi người dùng định chia sẻ (tên file, thời gian tạo file …….)  Mọi máy tính tham gia mạng được kết nối với máy chủ tìm kiếm trung tâm, các yêu cầu tìm kiếm được gửi tới máy chủ trung tâm phân tích, nếu yêu cầu được giải quyết máy chủ sẽ gửi trả lại địa chỉ IP của máy chứa tài nguyên trong mạng và quá trình truyền file được thực hiện theo đúng cơ chế của mạng ngang hàng, giữa các host với nhau mà không cần quan máy chủ trung tâm. Hình 1: Mô hình hoạt động của Napster SVTH:Nguyễn Văn Phúc – 12TLT Trang 7
  13. 13. CHƯƠNG 3: THIẾT KẾ VẦ XÂY DỰNG CHƯƠNG TRÌNH 3.1 Phân tích yêu cầu Trong mục này em sẽ đưa ra giải pháp xây dựng một chương trình ứng dụng chia sẻ file trong mạng ngang hàng theo kiến trúc Napster, cung cấp khả năng tìm kiếm theo nội dung. Ứng dụng bao gồm ba chức năng chính sau:  Cho phép người dùng tại các điểm nút khi tham gia vào mạng có thể tiến hành chia sẻ file và dừng chia sẻ các tài liệu trên máy của mình.  Cho phép người dùng có thể đưa ra những truy vấn để tìm kiếm theo nội dung các tài liệu đang được chia sẻ trên phạm vi toàn mạng.  Cho phép người dùng có thể tải các tài liệu đã chia sẻ tại các điểm nút khác nhau. Để 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
  14. 14.  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ẻ)… Ngoài chức năng quản lý, Server thực hiện tìm kiếm các tài nguyên theo yêu cầu từ các client gởi yêu cầu lên, theo từ khóa: Một client muốn tìm kiếm một tệp tin nào theo từ khóa “abc” gì đó thì chỉ việc nhập từ khóa vào ô tìm kiếm và gởi yêu từ khóa đó lên server, khi đó Server nhận được yêu cầu tìm kiếm tài nguyên thì nó thực hiện truy vấn các tài nguyên đã được chia sẻ vẫn đang kết nối tại thời điểm đó và nếu có thì trả về thông tin của tài nguyên cũng như nơi ( client ) đang chia sẻ tài nguyên đó. 3.2.2 Chức năng của Napster Client Napster Client được cài đặt lên các máy muốn tham gia vào mạng chia sẻ Napster, đóng vài trò như một Client, và thực hiện một số chức năng sau:  Chức năng 1: Khi khởi động Client Napster thì thực hiện kết nối tới server là “Gởi lời Đề Nghị”. Tức là gởi một yêu cầu (message) đến Server nào đó để đăng kí tham gia vào một mạng chia sẻ nào đó, và Client này sẽ được quyền phép chia sẻ cũng như Download về những tài nguyên trên mạng được chia sẻ.  Chức năng 2: Chia sẻ File  Nếu bên phía client nào đó có một tài liệu, hay tệp tin hữu ích nào đó muốn chia sẻ cho những người khác thì, click chọn vào mục chia sẻ trên giao diện làm việc và chọn file muốn chia sẻ và ok thì thông tin file chia sẻ của client đó sẽ được gởi lên máy chủ (Napster Server). SVTH:Nguyễn Văn Phúc – 12TLT Trang 9
  15. 15. Hình 2: Chức năng chia sẻ file  Chức năng 3: Tải File Nếu client này gởi một lời yêu cầu một tài nguyên nào đó lên Server nhờ thực hiện việc tìm kiếm nếu OK, và Server trả về một số link liến kết đến các client khác có chức tài nguyên chia sẻ đó. Thì trên giao diện Client Napster người dùng click chọn một link để download trực tiếp về máy mình. Hình 3: Tìm kiếm file SVTH:Nguyễn Văn Phúc – 12TLT Trang 10
  16. 16. 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 file đã chia sẻ File Chia Se Text Tên file đã chia sẻ DuongDan Text Đường dẫn tới file đã chia sẻ Ngay Chia se Date Thời gian chia sẻ SVTH:Nguyễn Văn Phúc – 12TLT Trang 11
  17. 17. CHƯƠNG 4: TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 4.1 Môi trường triển khai 4.1.1 Giới thiệu ngôn ngữ lập trình Java - 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 trình duyệt, Applet sẽ được tải về và thực thi tại trình duyệt.  Ứng dụng thực thi qua dòng lệnh: Các chương trình này chạy từ dấu nhắc lệnh và không sử dụng giao diện đồ họa. Các thông tin nhập xuất được thể hiện tại dấu nhắc lệnh. SVTH:Nguyễn Văn Phúc – 12TLT Trang 12
  18. 18.  Ứng dụng đồ họa: Đây là các chương trình Java chạy độc lập cho phép người dùng tương tác qua giao diện đồ họa.  Servlet: Java thích hợp để phát triển ứng dụng nhiều lớp. Applet là chương trình đồ họa chạy trên trình duyệt tại máy trạm. Ở các ứng dụng Web, máy trạm gửi yêu cầu tới máy chủ. Máy chủ xử lý và gửi kết quả trở lại máy trạm. Các Java API chạy trên máy chủ chịu trách nhiệm xử lý tại máy chủ và trả lời các yêu cầu của máy trạm. Các Java API chạy trên máy chủ này mở rộng khả năng của các ứng dụng Java API chuẩn. Các ứng dụng trên máy chủ này được gọi là các Servlet. hoặc Applet tại máy chủ. Xử lý Form của HTML là cách sử dụng đơn giản nhất của Servlet. Chúng còn có thể được dùng để xử lý dữ liệu, thực thi các giao dịch và thường được thực thi thông qua máy chủ Web.  Ứng dụng cơ sở dữ liệu: Các ứng dụng này sử dụng JDBC API để kết nối tới cơ sở dữ liệu. Chúng có thể là Applet hay ứng dụng, nhưng Applet bị giới hạn bởi tính bảo mật. Dịch và thực thi một chương trình viết bằng Java: - Việc xây dựng, dịch và thực thi một chương trình viết bằng ngôn ngữ lập trình java có thể tóm tắt qua các bước sau: • 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
  19. 19. • 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 quan trọng của Microsoft SQL server là Transact-SQL. Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International Organization for Standardization) và ANSI (American National Standards Institute) được sử dụng trong SQL Server. - Quay lại lịch sử, lúc đầu Microsoft đã quay sang kết hợp với công ty Sybase để cùng hợp tác làm ra một sản phẩm thuộc loại hệ quản trị cơ sở dữ liệu (Database Management System). Với sự hợp tác tốt đẹp, hai công ty này đã thành công cho ra đời một sản phẩm thuộc loại cơ sở dữ liệu có tên là Ashton-Tate vào năm 1989, sản phẩm này hoạt động trên môi trường OS/2. Sau đó một thời gian, Sybase đã phát triển sản phẩm này trên môi trường UNIX và đổi tên riêng là DataServer mà ngày nay còn có tên khác là Sybase Adaptive Server. Microsoft quyết định không phát triển hệ điều hành OS/2 mà thay vào đó cho ra đời một hệ điều hành mạng máy tính có tên là Windows NT Server. Và thế là SQL Serverchỉ hoạt động độc lập trên môi trường Windows NT Server mà thôi. Lần lượt các phiên bản của Microsoft SQL Server đã ra đời sau sự kiện này, từ 4.2 sau đó được nâng cấp thành 4.21, 6.0, 6.5, 7.0 và hiện giờ là Microsoft SQL Server 2000, 2005 và mới nhất là Microsoft SQL Server 2014. SVTH:Nguyễn Văn Phúc – 12TLT Trang 14
  20. 20. Vai trò của SQL: - SQL là ngôn ngữ hỏi có tính tương tác: Người sử dụng có thể dễ dàng thông 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 phân tán, mỗi một hệ thống sử dụng SQL để giao tiếp với các hệ thống khác trên mạng, gởi và nhận các yêu cầu truy xuất dữ liệu với nhau. - SQL là ngôn ngữ sử dụng cho các cổng giao tiếp cơ sở dữ liệu: Trong một hệ thống mạng máy tính với nhiều hệ quản trị cơ sở dữ liệu khác nhau, SQL thường được sử dụng như là một chuẩn ngôn ngữ để giao tiếp giữa các hệ quản trị cơ sở dữ liệu. SVTH:Nguyễn Văn Phúc – 12TLT Trang 15
  21. 21. 4.2 Demo sản phẩm 4.2.1 Giao diện chính của Client: Hình 5: Giao diện chính của Client  Chia sẻ File: Hình 6: Chọn file để tiến hành chia sẻ SVTH:Nguyễn Văn Phúc – 12TLT Trang 16
  22. 22. Hình 7: Chọn nút chia sẻ Hình 8: File vừa mới chia sẻ SVTH:Nguyễn Văn Phúc – 12TLT Trang 17
  23. 23.  Download File Hình 9: Tìm kiếm file cần tải SVTH:Nguyễn Văn Phúc – 12TLT Trang 18
  24. 24. Hình 10: Tiến hành chọn nơi lưu file 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
  25. 25. 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 SVTH:Nguyễn Văn Phúc – 12TLT Trang 20
  26. 26. Hình 14: Thông tin Client và các file đã chia sẻ 4.3 Kết luận  Ưu điểm: • Thực hiện chia sẻ file nhanh chóng dễ dàng. • Chương trình có thể tìm kiếm, tải file , tạm dừng và hủy tải file. • Giao diện thân thiện dễ sử dụng. • Nhận kết nối và thực hiện truyền các file đến cho client yêu cầu tải file đã chia sẻ.  Nhược điểm: • Xử lý về đa luồng chưa được tốt • Server còn chậm trong việc truy xuất csdl và gửi về cho client  Hướng phát triển: • Sẽ cố gắng hoàn thiện và bổ sung thêm các tính năng cho phần mềm trở nên hữu ích hơn. • Cải thiện tốc độ thực hiện của chương trình SVTH:Nguyễn Văn Phúc – 12TLT Trang 21
  27. 27. TÀI LIỆU THAM KHẢO 1. Nguyễn Phương Lan- Hoàng Đức Hải, Java lâp trình mạng, Nhà xuất bản Giáo dục 2. http://doc.edu.vn/tai-lieu/bai-tap-lon-mang-so-lieu-mang-ngang-hang-p2p- 24107/ 3. http://stackoverflow.com/ SVTH:Nguyễn Văn Phúc – 12TLT Trang 22

×