Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
1,72 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Minh Trí NGHIÊN CỨU TRIỂN KHAI CƠNG NGHỆ TÁC TỬ DI ĐỘNG TRÊN CƠ SỞ HẠ TẦNG MẠNG NGANG HÀNG JXTA LUẬN VĂN THẠC SĨ Hà Nội – 2006 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CƠNG NGHỆ Nguyễn Minh Trí NGHIÊN CỨU TRIỂN KHAI CƠNG NGHỆ TÁC TỬ DI ĐỘNG TRÊN CƠ SỞ HẠ TẦNG MẠNG NGANG HÀNG JXTA Ngành: Công nghệ thông tin Mã số: 1.0.10 LUẬN VĂN THẠC SĨ Người hướng dẫn khoa học: TS NGUYỄN ĐẠI THỌ Hà Nội – 2006 Tóm tắt Tác tử di động chương trình có khả di chuyển mạng máy tính (mang theo mã lệnh liệu) để thực công việc cách tự động theo yêu cầu không cần tới can thiệp người dùng Hạn chế hệ thống tác tử di động truyền thống triển khai tác tử di động môi trường mạng bị phân cách rào cản (tường lửa NAT) Triển khai hệ thống tác tử di động công nghệ mạng ngang hàng JXTA với khả tham gia vào mạng ngang hàng điểm nút bị ngăn cách rào cản giải vấn đề Triển khai tác tử di động sở mạng ngang hàng JXTA để trích rút thơng tin tài liệu số trang Web dạng thư viện điện tử lĩnh vực mở khả ứng dụng cho nhà nghiên cứu Việt Nam việc tìm kiếm tài liệu Phần thứ luận văn trình bày hiểu biết, khái niệm tác tử di động, mạng ngang hàng, JXTA môi trường tác tử di động JXTA Phần thứ hai trình bày thuật tốn trích rút thơng tin tài liệu cài đặt tác tử di động thực trích rút thơng tin LỜI CÁM ƠN Trước tiên, xin gửi lời cám ơn sâu sắc tới người hướng dẫn, thầy giáo, TS Nguyễn Đại Thọ, Bộ môn Mạng Truyền thơng máy tính – người trực tiếp hướng dẫn tơi suốt q trình thực luận văn Tiếp theo xin chân thành cám ơn Bill Yeager Rita Yu Chen tác giả báo “Java Mobile Agents on Project JXTA Peer-to-Peer Platform” hỗ trợ tài liệu mã nguồn chương trình Java Mobile Agent Cuối cùng, xin gửi lời cảm ơn tới gia đình bạn bè tơi, người ln ủng hộ khuyến khích tơi nhiều q trình học tập nghiên cứu Họ nguồn động viên vô tận sống Hà Nội, tháng 12 năm 2006 Nguyễn Minh Trí MỤC LỤC MỤC LỤC .1 MỞ ĐẦU Chương TÁC TỬ DI ĐỘNG 1.1 Các mơ hình thực phân tán truyền thống 1.1.1 Truyền thông báo 1.1.2 Gọi thủ tục từ xa 1.1.3 Gọi phương thức từ xa 10 1.1.4 Đánh giá từ xa 10 1.1.5 Mã lệnh theo yêu cầu 11 1.1.6 Di chuyển hoạt động .11 1.2 Từ tác tử đến tác tử di động 12 1.3 Nguyên lý hoạt động tác tử di động .14 1.3.1 Cấu trúc tác tử di động .14 1.3.2 Khởi tạo tác tử di động .14 1.3.3 Thực tác tử di động 15 1.3.4 Di chuyển tác tử di động 17 1.3.5 Theo dấu tác tử di động 17 1.3.6 Khắc phục cố tác tử di động 18 1.4 Các hệ tác tử di động 18 1.4.1 Aglet 19 1.4.2 Mole 19 1.4.3 ARA 19 1.4.4 D'agent 19 1.4.5 TACOMA 20 1.4.6 Concordia 20 Chương MẠNG NGANG HÀNG .21 2.1 Các thành phần mạng ngang hàng 21 2.1.1 Điểm nút 21 2.1.2 Nhóm điểm nút 24 2.1.3 Dịch vụ 24 2.1.4 Giao vận mạng 26 2.1.5 Thông cáo 27 2.1.6 Giao thức 27 2.1.7 Định danh 28 2.2 Truyền thông mạng ngang hàng 28 2.2.1 Phát thông cáo 29 2.2.2 Phát điểm nút môi giới điểm nút định tuyến 31 2.2.3 Các rào cản .32 2.2.4 Truyền thông báo điểm nút 33 2.3 So sánh số giải pháp mạng ngang hàng .35 2.3.1 Napster 35 2.3.2 Gnutella 36 2.3.3 Client/ Server 36 Chương CƠ SỞ HẠ TẦNG JXTA .37 3.1 Nguyên tắc thiết kế JXTA 37 3.2 Đánh giá JXTA 38 3.2.1 So sánh JXTA JINI 38 3.2.2 Quan hệ JXTA tác tử 38 3.3 JXTA Shell 39 3.4 Các giao thức JXTA .39 3.4.1 Giao thức phát điểm 40 3.4.2 Giao thức phân giải điểm 41 3.4.3 Giao thức thông tin điểm 42 3.4.4 Giao thức môi giới 43 3.4.5 Giao thức ấn định đường truyền .45 3.4.6 Giao thức định tuyến điểm cuối .46 Chương TRIỂN KHAI TÁC TỬ DI ĐỘNG TRÊN NỀN JXTA 47 4.1 Cơ sở thực tiễn 47 4.2 Các công nghệ liên quan giải pháp 48 4.3 Môi trường tác tử di động JXTA 50 4.3.1 Giao thức tác tử di động đơn giản 50 4.3.1.1 Hành trình tác tử di động 51 4.3.1.2 Định dạng thông báo giao thức tác tử di động đơn giản 52 4.3.2 Mô tả hệ thống tác tử di động 52 4.4 Thiết kế, cài đặt tác tử di động tìm kiếm trích rút thơng tin 54 4.4.1 Mơ hình hệ thống 54 4.4.2 Đơn vị mô tả sản phẩm 55 4.4.3 Trích rút đơn vị mô tả sản phẩm .56 4.4.4 Cài đặt tác tử di động tìm kiếm, trích rút thơng tin 58 KẾT LUẬN 62 PHỤ LỤC 63 TÀI LIỆU THAM KHẢO 70 Danh sách hình vẽ Hình 2-1 Minh họa điểm nút môi giới 22 Hình 2-2 Minh họa điểm nút định tuyến 23 Hình 2-3 Minh họa điểm nút cầu nối 24 Hình 2-4 Dịch vụ điểm nút 25 Hình 2-5 Dịch vụ nhóm điểm nút .26 Hình 2-6 Ống dẫn điểm nút 27 Hình 2-7 Phát điểm nút nhờ lưu giữ thông cáo 29 Hình 2-8 Phát điểm nút trực tiếp 30 Hình 2-9 Phát gián tiếp thơng qua điểm nút mơi giới 31 Hình 2-10 Vượt tường lửa/ NAT 33 Hình 2-11 Truyền thơng báo qua tường lửa 34 Hình 2-12 Truyền thơng báo qua hai tường lửa 35 Hình 3-1 Kiến trúc phân lớp JXTA 37 Hình 3-2 Giao diện JXTA Shell 39 Hình 3-3 Phân cấp giao thức JXTA .40 Hình 3-4 Trao đổi thơng báo 40 Hình 3-5 Trao đổi thông báo phân giải 42 Hình 3-6 Trao đổi thông báo thông tin điểm 43 Hình 3-7 Trao đổi thơng báo RVP 44 Hình 3-8 Trao đổi thơng báo ấn định đường truyền 45 Hình 3-9 Luồng giao thức định tuyến điểm cuối 46 Hình 4-1 Tác tử hành trình .51 Hình 4-2 Biểu đồ mơ tả quan hệ lớp hệ thống tác tử di động .53 Hình 4-3 Mơ hình hoạt động tác tử tìm kiếm, trích rút tài liệu Web 54 Hình 4-4 Đơn vị mơ tả sản phẩm 55 Hình 4-5 Nội dung trang HTML sau phân tích 56 Hình 4-6 Màn hình giao diện sau khởi tạo mơi trường tác tử di động 59 Hình 4-7 Danh sách điểm nút tồn mạng 60 Hình 4-8 Peer khởi tạo tác tử di động getExtraction gửi tới Peer .60 Hình 4-9 Peer nhận tác tử di động, thực việc trích rút thơng tin sau gửi trả Peer kết .61 Hình 4-10 Kết nhận Peer 61 seqStart Å titleIndex+1;/*điểm bắt đầu cho lần tìm kiếm lặp lại tiếp theo*/ } //kết thúc vòng lặp While; mostFreqPDU Å thành phần mảng candPDUs có tần suất xuất lớn return (mostFreqPDU); Thuật toán thể phương thức findPDU() thuộc lớp WebExtraction Sau ba bước nhận mẫu xuất nhiều nhất, mẫu thể đơn vị mô tả sản phẩm 4.4.4 Cài đặt tác tử di động tìm kiếm, trích rút thơng tin Dựa thuật tốn tìm kiếm trích rút thơng tin trình bày trên, xây dựng lớp WebExtraction gồm phương thức: parseHTML(), createTokens(), findPDU() doWebExtraction() Trên mơi trường tác tử di động trình bày trên, kết hợp với việc tìm kiếm trích rút thông tin, xây dựng hai tác tử di động getExtraction getFile với chức năng: - getExtraction: tham số địa Website tài liệu cần trích rút thông tin, kết trả danh sách tài liệu địa download tương ứng - getFile: tham số địa download tài liệu, kết trả file tài liệu Thiết kế tác tử di động môi trường tác tử di động JXTA phải tuân theo giao diện JavaMobileAgent: public interface JavaMobileAgent { public byte[] start( PeerGroup group,byte[] textIn, String params[][], Vector result1, Vector result2, Binary result3); } Để khởi tạo môi trường JXTA môi trường tác tử di động Windows, thực lệnh: java -Dnet.jxta.tls.principal=secure -Dnet.jxta.tls.password=secure11 -cp ; \lib\jxta.jar; \lib\log4j.jar; \lib\jxtasecurity.jar; \lib\cryptixasn1.jar; \lib\cryptix32.jar; \lib\bcprovjdk14.jar; \lib\jxtaptls.jar; \lib\org.mortbay.jetty.jar; \lib\javax.ser vlet.jar; \lib\getopt.jar; \lib\log4j.jar; \lib\agents.jar mobile.agent.agentClient 58 Trong gói agents.jar chứa tất lớp cần thiết để thực môi trường tác tử di động: AgentDefs.class AgentService.class AgentListener.class AgentRdvApp.class agentClient.class getExtraction.class gc.class getFile.class AgentEventResponder.class JavaMobileAgent.class ping.class Util.class Hình 4-6 cho thấy q trình khởi tạo mơi trường tác tử di động Bước phải khởi tạo môi trường mạng ngang hàng JXTA Lệnh “?” cho thấy danh sách chức thực mơi trường tác tử di động JXTA Hình 4-6 Màn hình giao diện sau khởi tạo môi trường tác tử di động 59 Hình 4-7 cho thấy kết sau đánh lệnh “s”, danh sách điểm nút hoạt động mạng: peer 1, peer rdv1 Trong peer điểm nút thời, peer điểm nút lân cận rdv1 điểm nút mơi giới (rendezvous peer) Hình 4-7 Danh sách điểm nút tồn mạng Hình 4-8 thể trình khởi tạo tác tử di động getExtraction với tham số địa http://localhost/ieee/jxta.htm điểm nút đích mà tác tử di động di chuyển đến peer 2, sau tác tử di động di chuyển thành công, chờ kết trả thời gian 10 giây Hình 4-8 Peer khởi tạo tác tử di động getExtraction gửi tới Peer 60 Hình 4-9 thể peer 2, tác tử di động di chuyển đến, thực lệnh (trích rút thơng tin từ trang Web: http://localhost/ieee/jxta.htm), nhận kết sau di chuyển trở peer Hình 4-9 Peer nhận tác tử di động, thực việc trích rút thơng tin sau gửi trả Peer kết Hình 4-10 kết nhận sau tác tử di động di chuyển trở về, danh sách tài liệu địa URL tương ứng Hình 4-10 Kết nhận Peer 61 KẾT LUẬN Công nghệ mạng ngang hàng JXTA đời với giao thức mở giúp cho thiết bị, máy tính dễ dàng tham gia vào mạng ngang hàng mà không bị giới hạn rào cản tường lửa hay NAT Các giao thức khai báo dựa thông cáo định dạng XML Luận văn trình bày khái niệm mạng ngang hàng JXTA, tác tử di động môi trường tác tử di động JXTA Đồng thời luận văn có bổ sung số chức cho môi trường tác tử di động xây dựng thành công tác tử di động thực trích rút thơng tin Chương trình thử nghiệm môi trường Windows hai máy tính mạng cục Để thử nghiệm ứng dụng tác tử di động máy tính nhà máy tính nằm mạng Đại học Quốc gia Hà Nội (máy tính nằm mạng bị ngăn tường lửa có khả truy cập vào sở liệu thư viện điện tử để download) môi trường mạng diện rộng Internet cần thiết phải có điểm nút mơi giới nằm mạng Đại học Quốc gia Hà Nội Trong thời gian tới chúng tơi tiếp tục hồn thiện chương trình để trở thành sản phẩm hữu ích phục vụ cho nhà nghiên cứu muốn tìm kiếm download tài liệu thư viện điện tử thuê bao Đại học Quốc gia Hà Nội nhà riêng 62 PHỤ LỤC Phần trình bày mã nguồn lớp trích rút thơng tin (WebExtraction), lớp tác tử di động trích rút thông tin (getExtraction) lớp tác tử di động download file (getFile) hệ thống tác tử di động JXTA trình bày chương //************************************ //*********WebExtraction.java********* //************************************ package mobile.agent; import java.io.InputStreamReader; import java.io.Reader; import java.io.BufferedReader; import java.io.BufferedOutputStream; import java.net.URL; import java.net.HttpURLConnection; import javax.swing.text.html.HTMLEditorKit; import java.io.*; import java.lang.*; import java.util.Vector; class PDUs { String PDU; int frequency=1; int urlIndex; int titleIndex; }; public class WebExtraction { public WebExtraction(Reader inHtml) { HtmlReader = inHtml; } private Reader HtmlReader; private boolean PDUDebug = true; public static String [] nContentLine; private int nLines=0; public static String MFPDUs=""; public static int seqStart=0; static int findIndex(int _seqStart,String _nMap){ return(_nMap.indexOf("53032",_seqStart)); } static int findIndexReverse(int _titleIndex,String _nMap){ return(_nMap.indexOf("4654",_titleIndex)); } private void findPDU(String _nMap, Vector PDUList){ 63 int titleIndex; int urlIndex; int numCandPDUs=0; int tem=0; int flag=0; int k=0; int count=0; while(findIndex(seqStart,_nMap)!=-1){ titleIndex=findIndex(seqStart,_nMap); count++; seqStart=titleIndex+1; } seqStart=0; System.out.print(count); PDUs []candPDUs=new PDUs[count]; try{ while(findIndex(seqStart,_nMap)!=-1){ titleIndex=findIndex(seqStart,_nMap); urlIndex=findIndexReverse(titleIndex+1,_nMap); String currentPDU=_nMap.substring(titleIndex, urlIndex+3); if (PDUDebug) { System.out.print("PDUs:"+numCandPDUs+"\n"); System.out.print("TITLE Index: "+titleIndex+"\n"); System.out.print("URL Index: "+urlIndex+"\n"); System.out.print("PDU sequence: "+currentPDU+"\n"); if (currentPDU==null) { System.out.print("ok"); break; } } //System.out.print(candPDUs); flag=0; for(int i=0;i< numCandPDUs;i++){ if(currentPDU.equals(candPDUs[i].PDU)) { candPDUs[i].frequency++; tem=candPDUs[i].frequency; flag=1; } } if(flag==1){ candPDUs[numCandPDUs]=new PDUs(); candPDUs[numCandPDUs].PDU=currentPDU; candPDUs[numCandPDUs].urlIndex=urlIndex; candPDUs[numCandPDUs].titleIndex=titleIndex; candPDUs[numCandPDUs].frequency=tem; numCandPDUs++; } else{ candPDUs[numCandPDUs]=new PDUs(); candPDUs[numCandPDUs].PDU=currentPDU; candPDUs[numCandPDUs].urlIndex=urlIndex; candPDUs[numCandPDUs].titleIndex=titleIndex; 64 candPDUs[numCandPDUs].frequency=1; numCandPDUs++; } seqStart=titleIndex+1; } } catch (Exception e){ System.out.print("Nothing"); } for(int i=0;i< numCandPDUs;i++){ if(k