Xây Dựng Hệ Thống VoIP Trên Android: Đồ Án Tốt Nghiệp Của Sinh Viên Nguyễn Khắc Vinh

Tài liệu nghiên cứu Xây dựng hệ thống voip trên hệ điều hành android, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về .

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2023

65
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

LỜI CẢM ƠN

MỞ ĐẦU

1. PHẦN I: ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP

1.1. Tổng quan về đề tài

1.2. Các vấn đề cần giải quyết

1.3. Cơ sở lý thuyết và công cụ sử dụng

1.3.1. Giới thiệu về VOIP

1.3.2. Giới thiệu về SIP

1.3.3. Giới thiệu về RTP

1.3.4. Đăng ký, thiết lập cuộc gọi với SIP proxy server

2. PHẦN II: XÂY DỰNG HỆ THỐNG VOIP

2.1. Khảo sát, phân tích yêu cầu

2.2. Thiết kế hệ thống

2.3. Thực hiện, cài đặt và thử nghiệm hệ thống

TÀI LIỆU THAM KHẢO

PHỤ LỤC

DANH MỤC CÁC HÌNH

DANH MỤC CÁC BẢNG

Tóm tắt

I. Khám phá đồ án xây dựng hệ thống VoIP trên Android

Trong bối cảnh chi phí viễn thông truyền thống ngày càng tăng, công nghệ Thoại qua Giao thức Internet (VoIP) nổi lên như một giải pháp thay thế hiệu quả, đặc biệt trong môi trường doanh nghiệp. Đồ án tốt nghiệp "Xây Dựng Hệ Thống VoIP Trên Android" của sinh viên Nguyễn Khắc Vinh, thực hiện tại Trung tâm phần mềm Viettel, là một công trình nghiên cứu tiêu biểu, đi sâu vào việc ứng dụng công nghệ này trên nền tảng di động phổ biến nhất thế giới. Đề tài không chỉ giải quyết bài toán liên lạc nội bộ chi phí thấp bằng cách tận dụng hạ tầng mạng IP có sẵn (Wi-Fi, 3G/4G), mà còn mở ra hướng phát triển các ứng dụng liên lạc đa phương tiện phức tạp hơn. Trọng tâm của đồ án là xây dựng một hệ thống VoIP hoàn chỉnh, bao gồm cả phía client (một ứng dụng softphone trên di động chạy trên Android) và phía server (sử dụng một SIP Proxy mạnh mẽ). Nghiên cứu này đóng vai trò quan trọng trong việc thử nghiệm tính khả thi của công nghệ VoIP, làm tiền đề cho các dự án thương mại trong tương lai. Việc phân tích sâu các giao thức SIP (Session Initiation Protocol) và RTP (Real-time Transport Protocol) là nền tảng cốt lõi, giúp hiểu rõ cơ chế thiết lập, duy trì và kết thúc một phiên liên lạc. Đồ án của Nguyễn Khắc Vinh không chỉ là một báo cáo đồ án tốt nghiệp thông thường, mà còn là một tài liệu hướng dẫn chi tiết về lập trình Android trong lĩnh vực truyền thông thời gian thực, mang lại giá trị tham khảo cao cho cộng đồng phát triển.

1.1. Bối cảnh và mục tiêu của đề tài nghiên cứu VoIP

Đề tài ra đời từ nhu cầu thực tiễn của các doanh nghiệp: tối ưu hóa chi phí liên lạc nội bộ. Với hạ tầng mạng IP và Wi-Fi đã phổ biến, việc xây dựng một hệ thống gọi điện riêng biệt gần như không tốn thêm chi phí. Mục tiêu chính của đồ án là tìm hiểu sâu về kiến trúc VoIP và hệ điều hành Android. Từ đó, xây dựng một ứng dụng gọi điện Android hoàn chỉnh, có khả năng thực hiện cuộc gọi thoại qua mạng IP. Nhiệm vụ cụ thể bao gồm việc lựa chọn các công nghệ phù hợp như thư viện client và proxy server, triển khai một hệ thống VoIP cơ bản, giải quyết các vấn đề bảo mật tài khoản và lựa chọn giao thức vượt NAT hiệu quả. Sản phẩm cuối cùng là một hệ thống demo hoàn chỉnh, chứng minh tính khả thi và tiềm năng của công nghệ.

1.2. Giới thiệu công nghệ VoIP và Giao thức SIP cơ bản

VoIP (Voice over Internet Protocol) là công nghệ số hóa tín hiệu giọng nói và truyền chúng đi dưới dạng các gói tin qua mạng IP. Một hệ thống VoIP cơ bản bao gồm hai giao thức chính: giao thức báo hiệu (Signaling Protocol) và giao thức truyền tải (Speech Transmission Protocol). Giao thức SIP là chuẩn báo hiệu phổ biến nhất, được sử dụng để thiết lập, thay đổi và kết thúc các phiên liên lạc. SIP hoạt động ở tầng ứng dụng, sử dụng các bản tin dạng văn bản tương tự HTTP. Các phương thức quan trọng của SIP bao gồm INVITE (thiết lập phiên), ACK (xác nhận), BYE (kết thúc phiên), và REGISTER (đăng ký vị trí người dùng). Trong khi đó, giao thức RTP chịu trách nhiệm truyền tải các gói tin âm thanh/video đã được số hóa, đảm bảo yếu tố thời gian thực.

II. Thách thức kỹ thuật khi xây dựng ứng dụng VoIP Android

Việc triển khai một hệ thống VoIP trên Android không chỉ đơn thuần là lập trình giao diện. Nó đòi hỏi phải giải quyết các thách thức kỹ thuật phức tạp, vốn là rào cản lớn đối với các ứng dụng truyền thông thời gian thực. Hai trong số những vấn đề nổi cộm nhất được đồ án của Nguyễn Khắc Vinh tập trung giải quyết là xác thực dữ liệu và vượt tường lửa NAT. Các bản tin SIP theo mặc định được truyền dưới dạng văn bản thuần túy (clear text), tạo ra lỗ hổng bảo mật nghiêm trọng, cho phép kẻ xấu có thể đánh cắp thông tin tài khoản người dùng. Thêm vào đó, hầu hết các thiết bị di động hiện nay đều kết nối Internet thông qua một thiết bị NAT (Network Address Translation). Cơ chế này, mặc dù giúp tiết kiệm địa chỉ IPv4 và tăng cường bảo mật, lại phá vỡ nguyên tắc kết nối ngang hàng (peer-to-peer) của VoIP, khiến các gói tin thoại không thể đến được đích. Việc không giải quyết triệt để hai vấn đề này sẽ khiến hệ thống không thể hoạt động ổn định và an toàn trong môi trường thực tế. Do đó, việc tìm hiểu và áp dụng các giải pháp như SIP Digest Authentication và NAT Traversal (STUN, TURN) là yêu cầu bắt buộc đối với bất kỳ mã nguồn VoIP Android nào muốn được triển khai rộng rãi.

2.1. Vấn đề xác thực dữ liệu và bảo mật trong giao thức SIP

Các bản tin SIP chứa thông tin nhạy cảm như username và password. Nếu truyền đi dưới dạng clear text, chúng dễ dàng bị bắt gói và đọc trộm. Để giải quyết, đồ án đã lựa chọn giải pháp SIP Digest Authentication, dựa trên cơ chế xác thực được định nghĩa trong RFC 2617. Theo phương pháp này, client không gửi mật khẩu trực tiếp. Thay vào đó, server gửi một giá trị "nonce" (dãy số dùng một lần). Client sử dụng nonce này kết hợp với username và password để tạo ra một chuỗi checksum (hash) bằng thuật toán MD5 và gửi lại cho server. Server thực hiện tính toán tương tự để xác thực. Bằng cách này, mật khẩu không bao giờ tồn tại dưới dạng clear text trên đường truyền, giúp bảo mật tài khoản người dùng một cách hiệu quả.

2.2. Bài toán vượt NAT NAT Traversal trong mạng di động

NAT (Network Address Translation) thay đổi địa chỉ IP và port trong các gói tin đi ra ngoài mạng nội bộ. Điều này khiến địa chỉ mà client gửi đi trong bản tin SIP (địa chỉ nội bộ) khác với địa chỉ mà server nhận được (địa chỉ công cộng của NAT). Để giải quyết vấn đề này cho các tín hiệu SIP, server sẽ ghi nhận địa chỉ IP và port công cộng của client và sử dụng thông tin này để gửi lại các bản tin phản hồi. Đối với luồng media (RTP), giải pháp được đề xuất là sử dụng STUN (Session Traversal Utilities for NAT). Client sẽ gửi yêu cầu tới một STUN server bên ngoài để xác định địa chỉ IP và port công cộng của mình, sau đó gửi thông tin này cho đầu cuối bên kia để thiết lập kết nối RTP trực tiếp.

III. Giải pháp kiến trúc Client Server cho hệ thống VoIP

Để xây dựng một hệ thống VoIP ổn định và có khả năng mở rộng, việc thiết kế một kiến trúc phù hợp là yếu tố tiên quyết. Đồ án của Nguyễn Khắc Vinh đã lựa chọn mô hình kiến trúc client-server kết hợp với peer-to-peer, một mô hình tiêu chuẩn trong ngành VoIP. Trong đó, thành phần Server đóng vai trò trung tâm điều phối, xác thực và định tuyến cuộc gọi, còn thành phần Client là các ứng dụng softphone trên di động. Phía Server, nghiên cứu đã chọn Kamailio (trước đây là OpenSER), một SIP Proxy mã nguồn mở hiệu năng cao, có khả năng xử lý hàng nghìn cuộc gọi mỗi giây. Kamailio đóng hai vai trò chính: Proxy Server để chuyển tiếp các bản tin SIP và Registrar Server để quản lý trạng thái và vị trí của người dùng. Phía Client, ứng dụng VoIP Android được phát triển để hoạt động như một User Agent (UA), có thể đóng vai trò là User Agent Client (UAC) khi khởi tạo cuộc gọi, và User Agent Server (UAS) khi nhận cuộc gọi. Sự kết hợp giữa một server mạnh mẽ và một client linh hoạt tạo nên một hệ thống hoàn chỉnh, đảm bảo luồng thông tin được xử lý hiệu quả, từ quá trình đăng ký tài khoản cho đến khi thiết lập và kết thúc một cuộc gọi thoại.

3.1. Vai trò của Server Lựa chọn Kamailio làm SIP Proxy

Kamailio được chọn làm SIP server trung tâm nhờ vào hiệu năng vượt trội và khả năng mở rộng. Nó hoạt động như một tổng đài IP PBX linh hoạt, có nhiệm vụ chính là định tuyến các bản tin SIP. Khi một người dùng (UAC) muốn thực hiện cuộc gọi, yêu cầu INVITE sẽ được gửi đến Kamailio. Kamailio, với vai trò là Registrar, sẽ tra cứu trong cơ sở dữ liệu để tìm địa chỉ IP hiện tại của người nhận và chuyển tiếp yêu cầu đến đó. Quan trọng là, sau khi phiên gọi đã được thiết lập thành công, Kamailio sẽ không tham gia vào quá trình truyền tải âm thanh. Luồng media RTP sẽ được truyền trực tiếp giữa hai client (peer-to-peer), giúp giảm tải cho server và tối ưu hóa đường truyền.

3.2. Cấu trúc Client Xây dựng ứng dụng Softphone Android

Ứng dụng client trên Android được thiết kế để tương tác với người dùng và giao tiếp với SIP server. Kiến trúc của ứng dụng được chia thành nhiều lớp rõ ràng. Lớp giao diện (UI) chịu trách nhiệm hiển thị các màn hình như danh bạ, lịch sử cuộc gọi, màn hình gọi điện. Lớp dịch vụ (Service) chạy ngầm để duy trì kết nối với server, lắng nghe các cuộc gọi đến ngay cả khi ứng dụng không mở. Lớp này sử dụng thư viện PJSIP để xử lý các giao thức SIP và RTP. Lớp mô hình (Models) định nghĩa các đối tượng dữ liệu như tài khoản, tin nhắn, cuộc gọi. Cuối cùng, lớp tiện ích (Utils) chứa các công cụ hỗ trợ như truy cập cơ sở dữ liệu SQLite và quản lý kết nối mạng. Cấu trúc này giúp ứng dụng dễ bảo trì và mở rộng.

IV. Hướng dẫn lập trình ứng dụng VoIP Android với PJSIP

Phát triển một ứng dụng gọi điện Android từ đầu là một công việc phức tạp. Đồ án đã đưa ra một lựa chọn thông minh khi sử dụng PJSIP, một thư viện mã nguồn mở, đa nền tảng viết bằng ngôn ngữ C. Thư viện PJSIP nổi bật với hiệu năng cao, kích thước nhỏ và tích hợp sẵn đầy đủ các thành phần cần thiết cho một ứng dụng VoIP: một SIP stack hoàn chỉnh, một media framework mạnh mẽ và các cơ chế NAT Traversal. Việc tích hợp PJSIP vào một dự án Android được thực hiện thông qua JNI (Java Native Interface), cho phép mã Java gọi các hàm được viết bằng C. Đồ án đã trình bày chi tiết các bước để biên dịch PJSIP cho nền tảng Android, tạo ra file thư viện liên kết động (.so). Sau khi tích hợp, việc lập trình Android trở nên đơn giản hơn. Lập trình viên có thể tập trung vào việc xây dựng giao diện người dùng và logic nghiệp vụ, trong khi các tác vụ phức tạp như gửi nhận bản tin SIP, mã hóa/giải mã codec âm thanh (Opus, G.711), và quản lý luồng RTP đã được PJSIP xử lý một cách hiệu quả. Đây là một phương pháp tiếp cận thực tiễn, giúp giảm đáng kể thời gian và chi phí phát triển.

4.1. Lựa chọn thư viện PJSIP Ưu điểm và cách tích hợp

PJSIP được chọn vì nhiều lý do. Thứ nhất, nó được viết bằng C, mang lại hiệu năng cao và độ ổn định, rất quan trọng cho các ứng dụng thời gian thực. Thứ hai, nó có kích thước nhỏ (small footprint), phù hợp với các thiết bị di động có tài nguyên hạn chế. Thứ ba, PJSIP là một thư viện toàn diện, đã đóng gói sẵn các module xử lý media và NAT, giúp lập trình viên không cần tích hợp nhiều thư viện riêng lẻ. Việc tích hợp vào Android SDK đòi hỏi sử dụng Android NDK (Native Development Kit) để biên dịch mã nguồn C thành thư viện .so. Sau đó, trong ứng dụng Android, thư viện này được nạp vào bộ nhớ và các hàm của nó có thể được gọi thông qua JNI, tạo thành cầu nối giữa thế giới Java của Android và thế giới C của PJSIP.

4.2. Thiết kế cơ sở dữ liệu SQLite cho lịch sử và tài khoản

Mỗi ứng dụng Android cần một nơi để lưu trữ dữ liệu bền vững. Đồ án sử dụng SQLite, hệ cơ sở dữ liệu tích hợp sẵn trong Android. Cấu trúc cơ sở dữ liệu được thiết kế gồm các bảng chính: Account (lưu thông tin tài khoản SIP như username, password, server), CallLog (lưu lịch sử các cuộc gọi đi, đến, và nhỡ), và Message (lưu trữ các tin nhắn tức thời). Một lớp DBAdapter được tạo ra để xử lý tất cả các thao tác với CSDL như thêm, sửa, xóa, và truy vấn dữ liệu. Thiết kế này đảm bảo rằng thông tin người dùng được lưu trữ cục bộ, cho phép ứng dụng hoạt động nhanh chóng và có thể truy cập lịch sử ngay cả khi không có kết nối mạng.

V. Kết quả thực tiễn từ đồ án xây dựng VoIP trên Android

Kết quả của luận văn tốt nghiệp CNTT này không chỉ dừng lại ở lý thuyết mà đã xây dựng thành công một hệ thống VoIP hoạt động được. Ứng dụng client trên Android có đầy đủ các chức năng cơ bản của một softphone: quản lý nhiều tài khoản SIP, thực hiện và nhận cuộc gọi, hiển thị lịch sử cuộc gọi và gửi tin nhắn tức thời. Về mặt hiệu năng, hệ thống đã được thử nghiệm và cho kết quả khả quan. Khi sử dụng mạng Wi-Fi, chất lượng cuộc gọi tốt, độ trễ thấp, tương đương với các dịch vụ gọi điện thương mại. Trên mạng 3G, chất lượng thoại có phần suy giảm và độ trễ lớn hơn, đây là một hạn chế cố hữu của mạng di động. Hệ thống đã chứng minh được tính đúng đắn của kiến trúc và các giải pháp công nghệ đã chọn. Việc sử dụng Kamailio server đảm bảo khả năng chịu tải cao, trong khi thư viện PJSIP giúp ứng dụng client hoạt động ổn định và hiệu quả. Đồ án đã thành công trong việc tạo ra một sản phẩm thử nghiệm, là nền tảng vững chắc để Trung tâm phần mềm Viettel tiếp tục phát triển các dự án VoIP quy mô lớn hơn trong tương lai, bao gồm cả việc hỗ trợ gọi video call qua IP.

5.1. Các chức năng chính của ứng dụng VoIP Android hoàn chỉnh

Ứng dụng Voip Android được phát triển trong đồ án bao gồm một loạt các chức năng cốt lõi. Chức năng quản lý tài khoản cho phép người dùng thêm, sửa, xóa và đăng ký/hủy đăng ký tài khoản với SIP server. Chức năng quản lý cuộc gọi cho phép thiết lập một cuộc gọi đến một địa chỉ SIP URI, trả lời hoặc từ chối cuộc gọi đến, giữ máy (hold), và tắt/bật micro hoặc loa ngoài. Toàn bộ lịch sử cuộc gọi (call logs) đều được lưu trữ và hiển thị. Ngoài ra, ứng dụng còn hỗ trợ gửi và nhận tin nhắn tức thời (Instant Messaging), một tính năng quan trọng trong các ứng dụng liên lạc hiện đại.

5.2. Đánh giá ưu và nhược điểm của hệ thống đã xây dựng

Hệ thống có nhiều ưu điểm nổi bật. Về phía server, Kamailio đảm bảo hiệu năng và khả năng mở rộng. Về phía client, PJSIP giúp rút ngắn thời gian phát triển và đảm bảo hiệu suất. Hệ thống tận dụng được hạ tầng mạng IP có sẵn, giúp tiết kiệm chi phí đàm thoại. Tuy nhiên, hệ thống vẫn còn một số nhược điểm. Giao diện người dùng chưa được tối ưu hoàn toàn về trải nghiệm. Chất lượng đàm thoại trên mạng 3G còn phụ thuộc nhiều vào điều kiện mạng. Đặc biệt, hệ thống chưa triển khai các cơ chế bảo mật nâng cao cho luồng media như SRTP, khiến các cuộc hội thoại có nguy cơ bị nghe lén.

VI. Kết luận và định hướng phát triển hệ thống VoIP Android

Đồ án "Xây Dựng Hệ Thống VoIP Trên Android" của Nguyễn Khắc Vinh đã hoàn thành xuất sắc các mục tiêu đề ra. Công trình đã đi sâu nghiên cứu công nghệ VoIP, tìm hiểu lập trình Android và xây dựng thành công một hệ thống VoIP cơ bản từ client đến server. Đây là một minh chứng rõ ràng về tính khả thi và tiềm năng của việc ứng dụng VoIP trên nền tảng di động. Những kết quả đạt được là nền tảng quý giá cho các nghiên cứu và phát triển sâu hơn. Hướng phát triển trong tương lai cho hệ thống này rất rộng mở. Trước hết, cần cải tiến giao diện người dùng để thân thiện và tiện lợi hơn. Vấn đề quan trọng nhất là nâng cao bảo mật, cần áp dụng các giao thức mã hóa như TLS cho tín hiệu SIP và SRTP cho luồng media để chống nghe lén và giả mạo. Ngoài ra, việc tối ưu hóa các codec âm thanh và thuật toán xử lý để cải thiện chất lượng cuộc gọi trên mạng 3G/4G là một hướng đi cần thiết. Cuối cùng, hệ thống có thể được mở rộng để hỗ trợ các tính năng cao cấp hơn như hội nghị đa điểm (conference calls) và gọi video call qua IP, đáp ứng nhu cầu ngày càng cao của thị trường.

6.1. Tự đánh giá các nhiệm vụ đã hoàn thành trong luận văn

Nhìn chung, đồ án đã thực hiện thành công các nhiệm vụ trọng tâm. Việc nghiên cứu lý thuyết về công nghệ VoIP, giao thức SIP, RTP và các thách thức như NAT đã được trình bày chi tiết. Việc xây dựng ứng dụng client trên Android dựa vào thư viện PJSIP đã được hoàn thành, tạo ra một sản phẩm hoạt động được. Một hệ thống VoIP cơ bản bao gồm cả server và client đã được thiết lập và thử nghiệm, chứng minh được các khái niệm đã nghiên cứu. Đồ án là một công trình toàn diện, thể hiện khả năng nghiên cứu độc lập và ứng dụng kiến thức vào giải quyết bài toán thực tế của sinh viên.

6.2. Các hướng cải tiến Bảo mật TLS SRTP và chất lượng 3G

Để đưa hệ thống vào ứng dụng thực tế, một số cải tiến là bắt buộc. Về bảo mật, cần triển khai TLS (Transport Layer Security) để mã hóa các bản tin SIP, ngăn chặn việc đọc trộm thông tin đăng nhập. Đồng thời, SRTP (Secure Real-time Transport Protocol) phải được áp dụng để mã hóa luồng âm thanh, đảm bảo tính riêng tư của cuộc hội thoại. Về chất lượng, đặc biệt là trên mạng 3G, cần nghiên cứu các codec âm thanh hiện đại hơn như Opus, vốn được thiết kế để hoạt động tốt trong điều kiện mạng không ổn định, giúp giảm độ trễ và cải thiện chất lượng thoại một cách đáng kể.

11/07/2025
Xây dựng hệ thống voip trên hệ điều hành android

Trích đoạn nội dung tài liệu

Đặt vấn đề và định hướng giải pháp 1) Cac nhiệm vụ cần thực hiện trong đề tài 2. Cơ sở lý thuyết và công cụ sử dụng. PHÀN 2: Các kết quả đạt được 1. Phan tích yêu cầu 2.

Thiết kế hệ thống 3. Danh gia wu, nhuge diém ctia hé théng KET LUAN Két luận chung: tự đánh giá công việc làm được và chưa làm được, định hướng phát triển và hoàn thiện hệ thống trong tương lai. PHAN I: DAT VAN DE VA DINH HUONG GIAI PHAP 1 Tống quan về đề tài 1.1 Cac van dé cần giải quyết Tìm hiểu về kiến trúc của Voip Tìm hiểu về hệ điều hành Android Tìm hiểu thư viện hỗ trợ để lập trình Voip Client trên Android Chọn server để xây dựng hệ thống Dùng thư viện và server đã chọn xây dựng một hệ thống Voip co ban Bảo mật cho tài khoản khi đăng kí với server Tìm hiểu và lựa chọn giao thức vượt NAT 2 Giới thiệu tóm tắt về cơ sở lý thuyết 2.1 Giới thiệu về VOIP Trong một mạng VOIP, có 2 giao thức được sửàdựng chính .Giao thức đầu tiên là Signaling Protocol (giao thức báo hiệu): dừñ§›trông Việc Khởi tạo và quản lý các tương tác giữa cdc user session bao gdm voicesevideos instant messaging. Giao thire thir hai 1a speech transmission protocol; Siaohtre\taayemtiéng noi.

Cả hai giao thức yêu cầu tat cả các thông tin được truyền tảïÏỀtrong cắc bói. Cho tới nay có một vài chuẩn cho signaling protocols, gdm cớ3H.Còn RTP là chuẩn cho speech transmission protocol duge str dung trong céemang’ VOIP .Tin hiéu tiếng nói được số hóa, đóng gói trong các gói tin và được truyền thồng qua mang IP .Ta cần rất nhiều các gói tin mới có thê truyền tải đượềymộàâm đồn do một người phát ra .Tín hiệu voice được số hóa bằng các sử dụng.mộ:tròngcăc chuân G. DNS Server Outgoing Incoming: proxy | proxy (BomainA) (ĐomaainB) SIP User agentA@DomainA User agentB@DomainB starting the call receiving the call Figure 1: Kiến trúc của hệ thong Voip Proxy server là một thiết bị trung gian nhận SIP requếểÊtừ tuột Client và sau đó chuyển tiếp request cho tới khi tới được sip client cần tớiếProxy£seveblà thành phần quan trọng trong hệ thống VoIP, cho phép các user agentstrao.đôï\thông tin, đăng ký người dùng và quản lý trạng thái user agent .Proxy server KHÔNGìthựẻ hiện chuyên mạch điện thoại (telephone switch) .Khi proxy server thiết lập một €uộc goi (peer-to-peer), server sé không tham gia vào quá trìnhẦruYễn tầi tiếng nói .Các gói tin chứa tiếng nói được truyền trực tiếp từ một phone tới một .pRontkháè Ngoài ra còn có Registrar servér Xứ'lý các requests từ các UAC để đăng ký vi tri (ip, port) cua UAC do .RegiStrar server thường được đặt cùng với proxy server 2.1 Giới thiệu về SIP SIP là giao thức tâg)application trong mô hình OSI nó được sử đụng đề thiết lập, thay đổi, vàkếtYhúc cá©-session, SIP là giao thức thuần text (clear text) .Thiết lập các tham số vé media duge sit dung (codec, ip, port) gitta cac UA théng qua Session Description Protocol (SDP) .Giao thức SIP được thiết kế là một phần của một kiến trúc đa phương tiện bao gồm các giao thức khác như RTP, SDP .Tuy nhiên SIP không phụ thuộc vào các giao thức khác để làm viéc .Dia chi SIP giống như một địa chỉ email, ví dụ như: johndoe()sipA. Các phương thức có trong SIP gồm có: INVITE = Thiết lập phiên ACK = Xác nhận yêu cầu INVTTE BYE = Kết thúc phiên CANCEL = Hủy bỏ việc thiết lập phiên REGISTER = Trao déi thông tin địa điểm người dùng (tên may, IP) OPTIONS = Trao đối các thông tin về khả năng của các điện thoại SIP goi va nghe trong phiên Đáp úng cho các phương thức trên dưới dạng là text như trong HTML, có 6 loại Phản hồi SIP: 1xx = phản hồi thông tin, ví đụ 180, có nghĩa là đang đỗ chuông 2xx = phản hồi thành công 3xx = phán hồi chuyển hướng 4xx = yêu cầu bị thất bại 5xx = lỗi máy chủ 6xx = thất bại toàn cục 2.2 Giới thiệu về RTP Giao thức truyền tín hiệu giọng nói, hình ảnh chuân được sử đụng trêÑẾmạng Internet hiện nay là giao thức RTP (Real-time transport protoeol)R'TP được sử dụng rộng rãi trong các ứng dụng liên lạc và giải trí cần tới styéaring đữ liệu Tài liệu đặc tả của RTP mô tả hai giao thức €onì -_ Giao thức truyền dữ liệu; RTP, ¿hịu rách nghiệm truyền đữ liệu thời gian thực.

Thông tin cung cấp chồ;giầo thừc aày Bao gồm timestamps (đề đồng bộ hóa), chuỗi số (cho kiểm tra. gói;tin'bị mat) và tham số chỉ định đạng của đữ liệu. -_ Một giao thức điều khiến,\R GP) dùng đẻ tính toán các tham số trên đường truyền RTP dé téi ưu. đường truyền "Băng thông của RTCP tương đối nhỏ so voi RTP, nằm trongffthoảb 5%.

Có một vài£@huâ›só hóa)đữ liệu âm thanh và một trong số chúng được sử đụng chủ yếu trong V6IR ‘Ba‘sd\cde nha cung cấp dịch vụ và thiết bị hỗ trợ một hoặc nhiều các chuân đưa ra Bởi ITÙnhư dưới đây: e_ G.7IT là chuẩn mặc định cho tất cả các nhà cung cấp (dịch vụ và thiết bi), cũng như cho PSTN. Chuẩn này số hóa voice thành dữ liệu không nén có bitrate là 64 Kbps e G.729 được hỗ trợ bởi nhiều nhà cung cấp cho phép nén dữ liệu âm ở bitrate 8 Kbps. Chất lượng của chuẩn này kém hơn so với G.71 1, nó cũng là chuẩn phố biến thứ 2 sau G.1 là chuân nén được khuyến cáo. Bitrate của dữ liệu theo chuẩn này là 6.

Mặc dù chuẩn này làm giảm gắng nặng băng thông, nhưng chất lượng thấp hơn đáng kề so với G.729 và không được phô biến trong VolP.722 cé bitrate 64kbps nhung cé dé trung thực về tiếng nói cao. Trái với ba chuẩn trước sử dụng tần số lay mau vao khoang 3.722 lay mau với tần số 7 kHz. Chuân này sẽ được sử dụng phô biến trong tương lai. Trong mọi trường hợp, IP phone lấy đữ liệu số của 10 đến 30 ms và đặt nó trong gói tin RTP và truyền đi 2.2 Đăng ký, thiết lập cuộc gọi với SIP proxy server 2.1 Đăng ký mới: Khi User muốn sử dụng IP phone để sử dụng dịch vụ Vo[P họ phải thực hiệngbước đăng ky dia chi sip của họ với một registrar server.Registrar server cung cap cáế thông)tin về user cho location server (location database) dựa trên các request đã nHận;được từ usèr .SIP phone sử đụng phương thức REGISTER để register téi registrar Servel, Server nhận và lưu các thông tin trong request nhận được vào location database .Registrar server cO thể chấp nhận các loại thông tin khác nhau, không chỉ địa €hÌJP của'elient .Database có chứa tất cả các ánh xạ gitta dia chi SIP tong tg voi@ia chi IPcuadclient, vi du: SIP user 8590@ekiga.net dang ky 6 dia chi IP 200.Ie Figure 2: Đăng kí với Sip Server thành công Caller githSIP- REGISTER request téi SIP server .Request này bao gồm trong nó danh sách liên lạc (contact list) của user đó (danh sách các địa chỉ SIP của Caller).

SIP server yêu cầu user nhập thông tin (user ID và password) đề xác thực .SIP client mã hóa thông tin người dùng và gửi tới server .Server xác thực thông tin người dùng, nếu thành công nó trả về chuỗi 200 OK cho SIP client .Với cơ chế này client sử dụng giá trị nonce (Do server sinh ra và gửi cho client và là dãy số chỉ dùng | lần, tương tự như one time password) đề tạo ra thông tin gửi lên server. Thông tin gửi lên server gôm có checksum của username, password, giá trị nonce (username, cnonce, hash (nonce +cnonce + password)) và kêt hợp với một số giá trị khác .Theo cach nay, password ctia người dùng được gửi đi không bao giờ tồn tại đưới dang clear text và cũng không thê giải mã được ra password FI REGISTER sip: 192.193:6060; rport; branch=z9hG4bKBuZ0keykB Max-Forwards: 70 To: <sip:1000@192.193> ;tag=ImzIc5Cd Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk CSeq: 1 REGISTER Contact: sip: 1000@192.193:6060;transport=UDP F2 SIP/2.193:6060,;rport=6060; br To: <sip: 1000192. 193>;tag=b27elald3376 Ie85846Jc9.193>;tag= Imzlc5 Cả Call-ID: NedrmYWF-1295248430029@en. vinh CSeq: 1 REGISTER WWW-Authenticate: Digest realm="4 1 93.", honce="TTPt WU0z7C2nK ObujoCYR89 Y¥fUgq3 YDxC" Server: kamailio (3.

Content-Length: 0 Server doi username va pa: nonce="TTPtWU0z7C2nK: 00@192. 193>;tag=bYwlyuoF` Call-ID; Ne4rmYWF-1295248430029@en.vinhnk CSeq: 2 REGISTER Contact: <sip: 1000@192.193:6060;transport=UDP> Authorization: Digest username="1000", realm="192.193", nonce="TTPtWU0z7C2nK ObujoCYR89 ¥fUg3 YDxC", uri="sip: 192.193", response= "ba7b6b7988a263cba8de358cc3eac7el" Client dùng MD5 tính checksum của password, nonce. rồi gửi response="ba7b6b7988a263cba8de358cc3eac7el" tro lai server.0 200 OK Via: SIP/2. I93:6060;rport=6060;branch=z9hG4bK2LKuGIvwn To: <sip: 1000192.

193>;tag=b27elald3376 Ie85846ƒc98/5/3a7e58.193>;tag=bYwlyuoF Call-ID: Ne4rmYWF-1295248430029@cn.vinhnk CSeq: 2 REGISTER Contact: <sip:1000@192.193:6060;transport=UDP> expires=3600 Server: kamailio (3.0 (i386/linux)) Content-Length: 0 Khi user 1000@192.193 Log out khỏi server 192.193snó tạo request: REGISTER sip: 192.193:6060;rport; branch=z9hG4bKZOmd$4hLG Max-Forwards: 70 To: <sip:1000@192.193>;tag=FLjcVEm6 Call-ID: Ne4rmYWF-1295248430029@en. vinhnk CSeq: 4 REGISTER Contact: <sip: 1000@192. 19326060,ifansport=UDP> ; expires=0 Authorization: Digest usernames 1 0004 realm=tQ2.193", nonce="TTPt+k0z7 M6Bs W/EXuH6wCI9ZHF244HG", uri="sip: 192.193", response="d18e2c81 9303{864d9b09280015267 df" Sau đó server trả về thành công: SIP/2.193:6060;rport=6060, branch=z9hG4bKZOmdS4hLG To2x<Sip: 1000@,192: 168. 193> ;tag=b27e1ald33761e85846fc98/3/3a7e58.193>;tag=FL jcVEm6 Call-ID: NedrmYWF-1295248430029@cn.vinhnk CSeq: 4 REGISTER Server: kamailio (3.

Thiết lập cuộc gọi Khi user thiết lập một cuộc gọi, một SIP request được gửi tới SIP server (một proxy server hoặc một redirect server) .Trong request này bao gồm địa chỉ của người gọi (trường From) và địa chỉ của người nhận (trường To).Khác với phương thức REGISTER, phương thức INVITE được sử dụng đề thiết lập các media session giữa các user agent .Một media session được thiết lập khi các bản tin INVTTE ,200 OK, ACK được trao đối gitta UAC va UAS .Phuong thic BYE dugc str dung boi mot trong cac UA để kết thúc media session đã được thiết lập. UAC mà khởi tạo một INVTTE request sẽ tạo ra một Call-ID duy nhất, sử dụng cho việc xác định thời gian của cuộc gọi. Biến đếm CSeq được khởi tạo (không cần giá trị phải bằng 1, nhưng phải là một số nguyên) và tăng khi có một request mới từ cùng một Call- TD. Trường To và From trong header của request là địa chỉ SIP của người nhận và người gọi.

Trường Expires trong header của một INVTTE request cho UAS biết request này có hiệu lực trong khoảng thời gian bao lâu .Một khi media session được thiết lập thì trường này sẽ không còn ý nghĩa nữa .Trường Session-Expires có thê được sử dụng đê giới hạn thời gian của mot session. | Both Way RTP |<=== = Figure: Thiết lập thành công cuộc gọi Trong phần này sẽ đi chỉ tiết về tiệcìthiết lập cuộc gọi (thiết lập sesssion) giữa hai SIP UA: 1000@192.Su trao déi théng tin vé media cua UA dvroadatttrong SDP payloads .Trong phan này, cuộc gọi được thiết lập và cuối cùnồ›yêu cầu kết thúc cuộc gọi đến từ phía 1000. PI INVITE sip: 1001@)192.193:6060;rport; branch=z9hG4bKrybFW32gj Max-Forwards: 70 To: <sip:1001@192.193>;tag=mXuZXRSC Call-ID: bdpjEqZN-1295245265337@cn.vinknk CSeq: 4 INVITE Content-Length: 218 Content-Type: application/sdp Contact: <sip:1000@192.193:6060;transport=UDP> Proxy-Authorization: Digest username="1000", realm="192.193", nonce= "TTPs/E0z39DX2sC/X:Rzl8POlpKPODIQ", uri= "sip: 1001192. 1 93", response="3e671b21b/e90c3e9c94ec63c229041c" v=0 o=userl 1782520463 2100547947 IN IP4 192.193 00 m=audio 8000 RTP/AVP 0 8 101 a=ripmap:0 PCMU/S000 a=rtpmap:8 PCMA/8000 a=rtpmap: 101 telephone-event/8000 a=sendrecv Nội dung ban tin SDP (tir doan v=0) 6 request nay ch e 000 sẽ nhận RTP audio có loại codec 1a 0, 8, 101 6 192.0 180 Ringing Via: SIP/2.

I 93:64 ainch=z9hG4bKrybFW32gj Contact: <sip:1001@192; 1632922; Pinstance=2/19/079276fe5/9> To: <sip:10 > flag=ca470244 From: <sip:1 1681033.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ