1. Trang chủ
  2. » Kinh Doanh - Tiếp Thị

Luận văn Thạc sỹ nghiên cứu về giao thức điều khiển báo hiệu phiên (SIP).

77 231 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 2,42 MB

Nội dung

Header Page of 16 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SỸ KHOA HỌC LẬP TRÌNH SIP CHO THIẾT BỊ DI ĐỘNG BẰNG JAVA NGÀNH : XỬ LÝ THÔNG TIN VÀ TRUYỀN THÔNG MÃ SỐ: TRẦN XUÂN THẢO Người hướng dẫn khoa học: TS HÀ QUỐC TRUNG HÀ NỘI 2015 Footer Page of 16 Header Page 2of 16 MỤC LỤC Trang Trang Lời cam đoan Mục lục Danh mục chữ viết tắt Danh mục hình vẽ MỞ ĐẦU 10 Chương – GIAO THỨC ĐIỀU KHIỂN PHIÊN (SIP) 11 1.1 Khái niệm 11 1.2 Các đặc điểm SIP 11 1.3 Các phần tử mạng SIP 12 1.3.1 User agent (UA) 12 1.3.2 Proxy Server 12 1.3.2.1 Proxy server không trạng thái 12 1.3.2.2 Proxy server trạng thái 13 1.3.3 Registrar server 13 1.3.4 Redirect server 13 1.4 Các tin SIP 14 1.4.1 Các tin yêu cầu 14 1.4.2 Các tin phúc đáp 17 1.5 Các giao dịch SIP 19 1.6 Các hội thoại SIP 20 1.6.1 Các hội thoại làm cho định tuyến thuận tiện 21 1.6.2 Nhận dạng hội thoại 22 1.7 Những kịch SIP điển hình 23 1.7.1 Đăng ký 1.7.2 Khởi tạo phiên 23 23 1.7.3 Kết thúc phiên 24 Footer Page of 16 Header Page 3of 16 1.7.4 Định tuyến ghi 25 1.8 So sánh SIP H.323 26 Chương - CƠ BẢN VỀ LẬP TRÌNH CHO THIẾT BỊ DI 29 ĐỘNG BẰNG JAVA 2.1 Giới thiệu 29 2.2 Máy ảo Java (JVM – Java Virtual Machine) 29 2.3 Cấu hình thiết bị 29 2.3.1 Cấu hình thiết bị kết nối 29 2.3.2 Cấu hình thiết bị hạn chế kết nối 30 2.3.2.1 Những khác biệt CLDC so với Java chuẩn 30 2.3.2.2 Các lớp CLDC kế thừa từ J2SE 30 2.3.2.3 Khung kết nối chung (GCF – Generic Connection 32 Framework) 2.4 Profile 33 2.5 Máy ảo Java cho CLDC 33 2.6 Xác minh file lớp (.class) 34 2.6.1 Tiền xác minh 34 2.6.2 Xác minh thiết bị 34 2.7 MIDLET 34 2.7.1 Cơ MIDlet 34 2.7.1.1 Quản lý ứng dụng môi trường thực thi Runtime 35 2.7.1.2 File lưu trữ Java (JAR) 35 2.7.1.3 Bộ mô tả ứng dụng Java (file JAD) 36 2.7.2 Vòng đời MIDlet 37 2.7.3 Tạo MIDlet 2.7.4 MIDlet API 38 39 2.7.5 Giao tiếp từ quản lý ứng dụng 39 2.7.6 Giao tiếp tới quản lý ứng dụng 40 2.7.7 Truy vấn thuộc tính MIDlet 40 Footer Page of 16 Header Page 4of 16 Chương - BỘ CÔNG CỤ KHÔNG DÂY J2ME 41 3.1 Giới thiệu 41 3.1.1 Các công cụ công cụ 41 3.1.2 Đặc điểm công cụ 41 3.1.3 Các công nghệ hỗ trợ 42 3.2 Phát triển MIDlet 42 3.2.1 Dự án (Project) 42 3.2.2 Quy trình phát triển đơn giản 44 3.2.3 Quy trình phát triển đầy đủ 44 3.3 Làm việc với project 45 3.3.1 Lựa chọn API 45 3.3.2 Thay đổi thuộc tínhcủa MIDlet 45 3.3.3 Thao tác MIDlet 46 3.3.4 Cấu trúc thư mục dự án 46 3.3.5 Sử dụng thư viện bên thứ ba 46 3.3.5.1 Các thư viện bên thứ ba cho project 47 3.3.5.2 Các thư viện bên thứ ba cho tất project 47 3.4 An toàn đánh dấu MIDlet 47 3.4.1 Sự cho phép (permission) 47 3.4.2 Các vùng bảo vệ (protect domain) 48 3.4.3 Đánh dấu MIDlet 49 3.4.4 Quản lý khóa 49 3.4.4.1 Tạo cặp khóa 3.4.4.2 Nhận khóa thực 49 51 Chương - GIAO TIẾP LẬP TRÌNH ỨNG DỤNG CHO J2ME 52 4.1 SipConnection 53 4.2 Tích hợp vào khung kết nối chung 53 4.3 Định tuyến yêu cầu gửi đến 54 Footer Page of 16 Header Page 5of 16 4.4 SipClientConnection 55 4.5 SipServerConnection 56 4.6 SipConnectionNotifier 57 4.7 SipClientConnectionListener 58 4.8 SipServerConnectionListener 58 4.9 SipDialog 58 4.10 SipHeader 60 4.11 SipAddress 60 4.12 SipRefreshHelper 61 4.13 SipRefreshListener 62 4.14 SipException 62 Chương - LẬP CHƯƠNG TRÌNH 63 5.1 Điều kiện thực chương trình 63 5.2 Lưu đồ thuật toán 63 5.3 Đăng nhập SIP 65 5.4 Gọi 69 5.5 Chờ gọi đến trả lời 71 5.6 Tạo project đóng gói chương trình 73 5.7 Mô 73 KẾT LUẬN 74 TÀI LIỆU THAM KHẢO 75 Footer Page of 16 Header Page 10 of 16 MỞ ĐẦU Ngày công nghệ thông tin di động phát triển Các máy điện thoại di động việc thực chức thoại bình thường tích hợp thêm nhiều tính khác cho phép người sử dụng cài đặt thêm chương trình Hãng Sun MicroSystem phát triển phần mềm Java cho lập trình di động (J2ME) mà nhiều nhà sản xuất thiết bị tích hợp vào Song song với thông tin di động mạng IP phát triển nhanh chóng Đã có nhiều nhà cung cấp dịch vụ thoại qua mạng IP thoại qua mạng IP sử dụng thiết bị đầu cuối di động Giao thức điều khiển báo hiệu phiên (SIP) giao thức báo hiệu đơn giản có khả cao để điều khiển báo hiệu mạng IP Trong trình học cao học ngành xử lý thông tin truyền thông, em tâm đắc với môn học lập trình hệ phân tán thầy giáo, TS Hà Quốc Trung Do em định chọn đề tài “Lập trình SIP cho thiết bị di động Java” Em xin chân thành cảm ơn thầy giáo TS Hà Quốc Trung tận tình hướng dẫn em trình thực luận văn Em xin cảm ơn bạn bè, đồng nghiệp hỗ trợ em trình thực luận văn Luận văn gồm chương: Chương nghiên cứu giao thức điều khiển báo hiệu phiên (SIP) Chương nghiên cứu lập trình cho thiết bị di động Chương nghiên cứu sử dụng công cụ để phát triển MIDlet Chương nghiên cứu giao diện ứng dụng chương trình SIP Chương lập chương trình SIP có chức đăng nhập, gọi đến thiết bị SIP khác, chờ trả lời gọi từ thiết bị SIP khác đến CHƯƠNG 1: GIAO THỨC ĐIỀU KHIỂN PHIÊN (SIP) 1.1 Khái niệm SIP giao thức lớp ứng dụng thiết kế phát triển IETF Footer Page of 16 Header Page 11 of 16 Đặc tả SIP có vài RFC, quan trọng RFC 3261 SIP giao thức báo hiệu cho điều khiển phiên đa phương tiện Nói cách khác, SIP cung cấp cách thiết lập truyền thông thoại, video tin nhắn thiết bị SIP dựa HTTP (Hyper Text Transfer Protocol – giao thức truyền siêu văn bản) SIP giao thức Client/Server, yêu cầu bên gọi (client) đưa bên bị gọi (server) trả lời 1.2 Các đặc điểm SIP • Tính di động: SIP cho phép client vị trí cố định bất kỳ, gọi định tuyến tới sử dụng địa biết địa email • Cấu trúc tin mềm dẻo: tin SIP có dạng văn (text) làm cho dễ dàng mở rộng thêm ứng dụng • Phân tán chức thiết bị: SIP cho phép yêu cầu định tuyến động qua thiết bị khác nhau, cho phép chức phân tán yêu cầu định tuyến qua thiết bị liên quan • Sự thỏa thuận tính hỗ trợ: điều làm cho SIP thích nghi mở rộng phương tiện giao thức sử dụng cho gọi riêng biệt thỏa thuận client gọi Kết SIP thiết lập kiểu hội thoại bao gồm thoại, video, tin nhắn • Tách riêng báo hiệu thông tin: SIP đường báo hiệu thông tin hoàn toàn độc lập • Sự chia nhánh: điều cho phép thiết bị liên kết với địa đơn, tất lựa chọn thiết bị Footer Page of 16 Header Page 12 of 16 liên lạc đồng thời tùy thuộc sách địa phương 1.3 Các phần tử mạng SIP 1.3.1 User agent (UA) UA thiết bị đầu cuối mạng SIP UA máy tính cài phần mềm SIP, điện thoại SIP, điện thoại di động, PDA … UA thường đề cập tới UA server (UAS) UA client (UAC) UAS UAC thực thể logic, UA chứa UAS UAC UAC phần UA mà gửi yêu cầu nhận trả lời UAS phần UA mà nhận yêu cầu gửi trả lời 1.3.2 Proxy Server Proxy server thiết bị trung gian UA Proxy server chuyển yêu cầu trả lời UA Có loại proxy server proxy server trạng thái (stateful) proxy server không trạng thái (stateless) 1.3.2.1 Proxy server không trạng thái Proxy server không trạng thái đơn giản chuyển tiếp tin Nó chuyển tiếp tin độc lập với Mặc dù tin xếp vào giao dịch không quan tâm đến giao dịch Proxy server không trạng thái đơn giản nhanh proxy server trạng thái Một hạn chế proxy server không trạng thái khả truyền lại tin thực định tuyến phức tạp ví dụ chia nhánh 1.3.2.2 Proxy server trạng thái Proxy server trạng thái phức tạp Khi nhận yêu cầu, proxy server tạo trạng thái, trạng thái trì kết thúc phiên Footer Page of 16 Header Page 13 of 16 giao dịch Một số giao dịch, đặc biệt giao dịch tạo “INVITE” kéo dài lâu (đến bị gọi nhấc máy từ chối gọi) Bởi máy chủ phải quản lý trạng thái suốt thời gian giao dịch nên thực thi bị giới hạn Khả liên kết tin SIP vào giao dịch làm cho proxy server có số tính thú vị Proxy server thực việc chia nhánh, tức nhận tin hai hay nhiều tin khác gửi Proxy server thực việc truyền lại tin từ trạng thái giao dịch biết nhận tin chưa Proxy server thực phương pháp phức tạp để tìm kiếm người sử dụng, ví dụ máy người sử dụng quan không trả lời chuyển gọi đến máy di động người Hầu hết SIP proxy trạng thái cấu hình chúng thường phức tạp 1.3.3 Registrar server Registrar server thiết bị nhận yêu cầu đăng ký lưu trữ thông tin người sử dụng 1.3.4 Redirect server Redirect server thiết bị nhận tin yêu cầu gửi trả lại tin trả lời chứa danh sách vị trí người sử dụng 1.4 Các tin SIP Truyền thông sử dụng SIP (thường gọi báo hiệu) bao gồm dãy tin Các tin truyền độc lập mạng Thông thường tin truyền gam liệu UDP Mỗi tin bao gồm phần dòng đầu tiên, phần đầu đề phần thân tin Phần dòng loại tin Có hai loại tin SIP Bản tin yêu cầu sử dụng để khởi tạo số hành Footer Page of 16 Header Page 1014 of 16 động báo cho người nhận yêu cầu Bản tin trả lời để xác nhận yêu cầu nhận xử lý chứa trạng thái việc xử lý 1.4.1 Các tin yêu cầu • INVITE : tin sử dụng để thiết lập phiên Ví dụ tin INVITE sau: INVITE sip:7170@iptel.org SIP/2.0 Via: SIP/2.0/UDP 195.37.77.100:5040;rport Max-Forwards: 10 From: "jiri" ;tag=76ff7a07-c091-4192-84a0d56e91fe104f To: Call-ID: d10815e0-bf17-4afa-8412-d9130a793d96@213.20.128.35 CSeq: INVITE Contact: User-Agent: Windows RTC/1.0 Proxy-Authorization: Digest username="jiri", realm="iptel.org", algorithm="MD5", uri="sip:jiri@bat.iptel.org", nonce="3cef753900000001771328f5ae1b8b7f0d742da1feb5753c", response="53fe98db10e1074 b03b3e06438bda70f" Content-Type: application/sdp Content-Length: 451 v=0 o=jku2 0 IN IP4 213.20.128.35 s=session c=IN IP4 213.20.128.35 b=CT:1000 t=0 m=audio 54742 RTP/AVP 97 111 112 101 a=rtpmap:97 red/8000 a=rtpmap:111 SIREN/16000 Footer Page 10 of 16 Header Page 6367 of 16 Hình 5.1 Lưu đồ thuật toán 5.3 Đăng nhập SIP Khi bắt đầu chạy, chương trình phải thực đăng nhập vào mạng SIP cách gửi tin REGISTER Trước tiên phải nhập tên mật Các bước thực sau: + Ứng dụng khởi tạo yêu cầu REGISTER gốc + Ứng dụng gọi send() + SIP API thực gửi yêu cầu REGISTER đến server + Ứng dụng gọi receive( ) để đợi phúc đáp + Nếu tên mật không hợp lệ SIP server gửi phúc đáp “401 Unauthorized” Nếu hợp lệ SIP server gửi phúc đáp “200 OK” + Ứng dụng gọi getStatusCode() + Ứng dụng kết thúc kết nối phương thức close( ) Footer Page 63 of 16 Header Page 6468 of 16 Bắt đầu Khởi tạo REGISTER Gửi yêu c ầu Nhận phúc đáp Hợp lệ? N Y Kết thúc Hình 5.2 Thu ật toán đăng nh ập SIP Footer Page 64 of 16 Header Page 6569 of 16 Hình 5.3 Quá trình thực đăng nhập Mã chương trình: public void doRegister(String username, String password, String realm) { SipClientConnection scc = null; SipConnectionNotifier scn = String contact = try { // open listener in application specific port 5080 scn = (SipConnectionNotifier) Connector.open(“sip:5080”); // build the contact URI Footer Page 65 of 16 contact = Header Page 6670 of 16 new String(“sip:user@”+scn.getLocalAddress()+“:”+scn.getLocalPort( )); open client connection to the SIP registrar in this case “host.com” scc =SipClientConnection)open(“sip:host.com”); initialize REGISTER with appropriate headers scc.initRequest(“REGISTER”, scn); scc.setHeader(“From”, “sip:user@host.com”); setHeader(“To”,sip:user@host.com”); setHeader(“Contact”, contact); = false; int scode = 0; scc.send(); boolean handled while(!handled) { SipHeader sh; // wait max 30 secs for response scc.receive(30000); scode = scc.getStatusCode(); switch(scode) { case 401: sh = new SipHeader(“WWW-Authenticate”, scc.getHeader(“WWW-Authenticate”)); realm = sh.getParameter(“realm”); // here for example, prompt user for password for this realm // set credentials to initiate re-REGISTER scc.setCredentials(username, password, realm); case 407: break; sh = new SipHeader(“Proxy-Authenticate”, scc.getHeader(“Proxy-Authenticate”)); realm = sh.getParameter(“realm”); // here for example, prompt user for password for this realm Footer Page 66 of 16 Header Page 6771 of 16 // set credentials to initiate re-REGISTER scc.setCredentials(username, password, realm); break; case 200: // handle OK response handled = true; default: handle other responses handled = } } scc.close(); } catch(Exception ex) { // handle Exceptions } } 5.4 Gọi Quy trình gọi sau: • Khởi tạo gửi tin INVITE • Nhận tin phúc đáp tạm thời 100, 180 nhận tin cuối 200 OK • Khởi tạo gửi tin ACK để thiết lập phiên • Trao đổi liệu • Khởi tạo gửi tin BYE • Nhận tin 200 OK cho BYE, kết thúc phiên Footer Page 67 of 16 Header Page 6872 of 16 Client Server INVITE 100 Trying 180 Ringing 200 OK ACK Media BYE 200 OK Hình 5.4 Quá trình thực gọi Footer Page 68 of 16 Header Page 6973 of 16 Bắt đầu Khởi tạo g ửi INVITE Nhận phúc đáp 200 OK? N Y Khởi tạo g ửi ACK Trao đổi liệu Kết thúc? N Y Khởi tạo g ửi BYE Nhận 200 OK Kết thúc Hình 5.5 Thuật toán gọi 5.5 Chờ gọi đến trả lời Quy trình chờ gọi đến trả lời sau: • Mở kết nối để chờ yêu cầu gửi đến • Nhận yêu cầu INVITE • Khởi tạo gửi phúc đáp 180 200 OK • Chờ nhận yêu cầu ACK :phiên khởi tạo Footer Page 69 of 16 Header Page 7074 of 16 • Trao đổi liệu • Chờ nhận yêu cầu BYE: phiên kết thúc • Gửi phúc đáp 200 OK Client Server Open connection INVITE 180 Ringing 200 OK ACK Media BYE 200 OK Hình 5.6 Quá trình thực trả lời gọi đến Footer Page 70 of 16 Header Page 7175 of 16 Bắt đầu M k ết n ố i Nhận tin N INVITE? Y Gửi 180 Ringing Gửi 200 OK Nhận tin N ACK? Y Trao đổi liệu Nhận tin N BYE? Y Gửi 200 OK Kết thúc Hình 5.7 Thuật toán trả lời gọi đến 5.6 Tạo project đóng gói chương trình Footer Page 71 of 16 Header Page 7276 of 16 Sau viết xong mã nguồn, sử dụng J2ME Wireless Toolkit để lập dự án đóng gói chương trình Trước hết ta khởi động chương trình KToolbar Đặt tên dự án “SIP” Sau copy file nguồn vào thư mục \SIP\src\ Tiến hành biên dịch tiền xác minh file nguồn cách chọn Project → Package → Create Package Trong trình dịch có lỗi phải sửa lỗi file nguồn Sau dịch tiền xác minh xong công cụ tạo file JAD, JAR lưu trữ vào thư mục \SIP\bin\ Footer Page 72 of 16 Header Page 7377 of 16 Footer Page 73 of 16 Header Page 7478 of 16 Footer Page 74 of 16 Header Page 7579 of 16 Footer Page 75 of 16 Header Page 7680 of 16 5.7 Mô Sau đóng gói chương trình chạy trương trình mô máy tính Hình mô hình 5.8: Hình 5.8 Mô điện thoại di động KẾT LUẬN Luận văn thực vấn đề sau: Tìm hiểu J2ME, SIP, tìm điểm mạnh, điểm yếu, so sánh với công nghệ tương tự Footer Page 76 of 16 Header Page 7781 of 16 Ứng dụng xây dựng chương trình có tính năng: a Đăng nhập vào mạng SIP b Thực khởi tạo phiên để gọi đến thiết bị SIP khác c Trả lời có gọi từ thiết bị SIP khác đến Phân tích, đánh giá, tổng hợp tạo qui trình xây dựng ứng dụng dựa J2ME giao thức truyền thông Hướng nghiên cứu mở rộng framework giao thức truyền tải thời gian thực (RTP- Real-time Transport Protocol) thực RTP J2ME Một lần em xin chân thành cảm ơn thầy giáo TS Hà Quốc Trung tận tình hướng dẫn em trình thực luận văn Đồng thời em xin cảm ơn bạn bè, đồng nghiệp hỗ trợ em trình thực luận văn Nếu có thiếu sót em mong thầy cô giáo bạn đồng nghiệp bảo Footer Page 77 of 16 ... trình thực luận văn Em xin cảm ơn bạn bè, đồng nghiệp hỗ trợ em trình thực luận văn Luận văn gồm chương: Chương nghiên cứu giao thức điều khiển báo hiệu phiên (SIP) Chương nghiên cứu lập trình... qua mạng IP sử dụng thiết bị đầu cuối di động Giao thức điều khiển báo hiệu phiên (SIP) giao thức báo hiệu đơn giản có khả cao để điều khiển báo hiệu mạng IP Trong trình học cao học ngành xử... 1: GIAO THỨC ĐIỀU KHIỂN PHIÊN (SIP) 1.1 Khái niệm SIP giao thức lớp ứng dụng thiết kế phát triển IETF Footer Page of 16 Header Page 11 of 16 Đặc tả SIP có vài RFC, quan trọng RFC 3261 SIP giao

Ngày đăng: 13/03/2017, 07:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w