Xây dựng chương trình truyền file theo mô hình p2p napster
Trang 1LỜ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 ứngdụ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ểnthế 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ìnhchia sẻ file ngang hàng như Gnutella, Freenet, Kazzaa đã tạo nên một xu hướng pháttriển mạnh mẽ việc chia sẻ nội dung trong cộng đồng người dùng Internet Hệ thốngmạng ngang hàng và các ứng dụng chia sẻ file ngang hàng cũng trở thành một đề tàithu 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ẫncò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 haygọi chung là định danh chứ chưa có chức năng truy xuất theo nội dung
Trang 2LỜ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
Trang 3NHẬN XÉT (Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4MỤ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.3 Phươ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
4.3 Kết luận 21
TÀI LIỆU THAM KHẢO 22
Trang 5MỤ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 18
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ẻ 20
Trang 6CHƯƠ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 NAPSTER” Chương trình được xây dựng bằng ngôn ngữ lập trình Java, dựa
P2P-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
− 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
Trang 7CHƯƠ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 NameServers) đượ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áychủ 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ậnhoặ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áiniệ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ạitrong 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àntươ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úcclient – server truyền thống nơi có một hoặc một số điểm nút chỉ đóng vai trò cungcấ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àinguyê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ũnggiú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 thamgia 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ủamạ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ấtnà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ấuhình mạng (topology)
Trang 82.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áykhác cũng là thành viên của mạng Từ đó chúng có thể định vị được nhau, gửithô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 sovới các cơ cấu tổ chức như: tường lửa (firewall), NAT (Network AddressTranslation), mạng con (subnet) Mỗi điểm nút có thể nằm trong các mạng conkhá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êngbiệt Tuy nhiên khi đã tham gia vào mạng, chúng sẽ tổ chức được những mốiliê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 ứngdụ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ạngkế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ệtchí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ủaserver Đ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ộngtá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
toán lưới
Trang 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
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ăngthông đầu ra (outbound bandwidth) và băng thông đầu vào (inboundbandwidth) tại từng điểm nút là tương đối cân bằng Tuy nhiên các nhà cungcấ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ácmạng DSL hỗ trợ 1.5Mbps băng thông đầu vào nhưng chỉ có 128Kbps chobă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ácmạ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ủ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
Trang 10tĩ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ũngnhư 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ấtphâ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ànchỉ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ậptrá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ệnmộ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 quantâm
+ Không cho phép các điểm nút khác tải về những file được chia sẻ trênmá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ộcvà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 đónggóp tích cực cho cộng đồng sử dụng mạng
Trang 112.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ậtphá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ụngkhác như: Audiogalaxy, WinMX Với Napster, việc tìm kiếm file bị thất bại khi bảngtì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ạngtrong 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âmnắ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àinguyê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
+ 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 ….)
Trang 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 …….)
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êucầ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êntrong mạng và quá trình truyền file được thực hiện theo đúng cơ chế của mạngngang 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
Trang 13CHƯƠ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ếmtheo 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ànhchia 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 dungcá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ácnhau
Để 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ànhphầ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ề danhsách kết quả
Nhiệm vụ của thành phần triển khai tại các điểm nút: