Rust WebRTC P2P #2 - VoIP là gì? WebRTC là gì?
Bài 27:13

Rust WebRTC P2P #2 - VoIP là gì? WebRTC là gì?

Hiểu bản chất VoIP — công nghệ truyền thoại/video qua mạng IP đứng sau Skype, Zoom, Google Meet. Sau đó khám phá WebRTC — bộ tiêu chuẩn cho phép trình duyệt giao tiếp trực tiếp peer-to-peer: media đi thẳng giữa hai browser, server chỉ làm nhiệm vụ signaling duy nhất.

1. VoIP là gì?

VoIP (Voice over Internet Protocol) là công nghệ truyền thoại và video qua mạng IP thay vì mạng điện thoại truyền thống (PSTN). • Ứng dụng phổ biến: Skype, Zoom, Google Meet, Discord, WhatsApp Call • Ưu điểm: Chi phí thấp, tích hợp dễ dàng vào ứng dụng web/mobile, hỗ trợ cả audio và video • Giao thức nền tảng: RTP (Real-time Transport Protocol) để truyền media, SIP hoặc WebRTC để signaling

2. WebRTC là gì?

WebRTC (Web Real-Time Communication) là bộ tiêu chuẩn mở cho phép trình duyệt giao tiếp trực tiếp peer-to-peer mà không cần plugin. • Được hỗ trợ native trên Chrome, Firefox, Safari, Edge • Ba thành phần chính: MediaStream (truy cập camera/mic), RTCPeerConnection (kết nối P2P), RTCDataChannel (truyền dữ liệu) • Media đi thẳng giữa hai browser — server chỉ làm nhiệm vụ signaling duy nhất

3. So sánh VoIP truyền thống vs WebRTC

• VoIP truyền thống: Cần cài phần mềm client, sử dụng SIP để signaling, thường cần Media Server trung gian • WebRTC: Chạy trực tiếp trên trình duyệt, signaling linh hoạt (WebSocket, HTTP), P2P trực tiếp giữa các peer → WebRTC phù hợp hơn cho ứng dụng web hiện đại vì không yêu cầu cài đặt thêm và tận dụng được hạ tầng trình duyệt.

4. Luồng hoạt động của WebRTC

1. Browser A tạo SDP Offer (mô tả khả năng media: codec, resolution...) 2. Gửi Offer qua Signaling Server đến Browser B 3. Browser B tạo SDP Answer và gửi ngược lại 4. Cả hai trao đổi ICE Candidates để tìm đường kết nối tối ưu (STUN/TURN) 5. Kết nối P2P được thiết lập → Media truyền trực tiếp

5. Vai trò của Signaling Server

Signaling Server là "người mai mối" — giúp hai browser tìm thấy nhau và thỏa thuận kết nối. • Chuyển tiếp SDP Offer/Answer giữa các peer • Chuyển tiếp ICE Candidates • Quản lý trạng thái phòng/cuộc gọi • Không xử lý media — chỉ xử lý metadata → Đây chính là thứ chúng ta sẽ xây dựng bằng Rust trong khóa học này.

Khóa học thực chiến giúp bạn xây dựng từ đầu một Signaling Server bằng Rust, xử lý các cuộc gọi audio/video trực tiếp giữa hai trình duyệt thông qua WebRTC Peer-to-Peer mà không cần Media Server. Bạn sẽ nắm vững kiến trúc WebRTC signaling, cách trao đổi SDP Offer/Answer và ICE Candidates giữa các peer thông qua WebSocket. Khóa học sử dụng Axum + Tokio cho backend, MongoDB để lưu trữ dữ liệu, và JWT để xác thực người dùng. Đây là Phần 1 trong series 7 phần về Lập trình Rust với VoIP, bao gồm: WebRTC P2P, Media Server (Janus, LiveKit, Kurento, Asterisk, FreePBX), và hệ thống CRM/Queue/nhạc chờ/chuyển tiếp cuộc gọi. Yêu cầu tiên quyết: Kiến thức cơ bản về Rust (Ownership, Lifetimes, Traits, Async/Await).

Công nghệ sử dụng

RustWebRTCVoIPP2PAxumTokioWebSocketMongoDBJWT

Tác giả

ByteBuffer

ByteBuffer

Coder cỏ tại DTS Group và IPA Solutions

Chuyên gia về Rust và hệ thống VoIP/WebRTC. Nhiều năm kinh nghiệm xây dựng các hệ thống real-time communication với hiệu năng cao và độ trễ thấp.