
WebRTC (viết tắt của Web Real-Time Communication) là một dự án mã nguồn mở giúp trình duyệt web và ứng dụng di động trao đổi âm thanh, hình ảnh và dữ liệu theo thời gian thực. Nhờ đó, một cuộc gọi video có thể chạy ngay trong trang web mà không cần cài bất kỳ tiện ích bổ sung nào. Đây là điểm khác biệt lớn so với các công cụ hội nghị truyền hình trước đây, vốn bắt người dùng phải tải một chương trình riêng.
Lịch sử của WebRTC bắt đầu vào năm 2010 khi Google mua lại công ty Global IP Solutions, một nhà cung cấp phần mềm truyền tiếng qua internet. Ngay sau đó Google mở mã nguồn toàn bộ công nghệ xử lý này và đưa ra khuôn khổ chuẩn hoá tới các tổ chức như IETF và W3C. Tới tháng 5 năm 2011, dự án mã nguồn mở WebRTC chính thức ra mắt. Nhóm làm việc liên tục đẩy tiến đặc tả, với bản 1.0 chuyển sang trạng thái đề xuất chuẩn vào cuối năm 2017, rồi trở thành khuyến nghị chính thức vào đầu năm 2021. Ngày nay, Chrome, Firefox, Edge, Safari và Opera đều hỗ trợ WebRTC ngay từ đầu.

Toàn bộ WebRTC dựa trên một bộ giao diện lập trình nhỏ gọn, trong đó ba giao diện đáng chú ý nhất đóng vai trò trụ cột. Giao diện lấy nguồn người dùng cho phép trang web truy cập camera và microphone sau khi người dùng cấp quyền. Đối tượng kết nối ngang hàng là phần lõi, đảm nhiệm xử lý tín hiệu, chọn bộ mã năng suất, quản lý băng thông, bảo mật và truyền dữ liệu trực tiếp giữa hai bên. Kênh dữ liệu cho phép hai bên gửi tin nhắn hoặc dữ liệu tùy ý hai chiều, không chỉ giới hạn ở âm thanh và hình ảnh, với độ trễ thấp hơn nhiều so với WebSocket thông thường.
Một điểm thường gây hiểu nhầm là WebRTC không chứa bất kỳ cơ chế nào để hai bên tự tìm thấy nhau và thống nhất kết nối. Tín hiệu kết nối phải do chính ứng dụng của nhà phát triển lo lắng, thông qua máy chủ riêng và một giao thức do họ lựa chọn. Từ góc nhìn kỹ thuật, đây không phải hạn chế mà là thiết kế có chủ đích, nhờ đó WebRTC vẫn hoạt động được với hàng trăm loại dịch vụ tin nhắn và hội nghị khác nhau.
Trở ngại lớn nhất của truyền thông trực tiếp là tường lửa và bộ định tuyến tự động. Nhiều mạng doanh nghiệp và mạng di động không cho phép một thiết bị mở kết nối trực tiếp ra ngoài. Để xử lý, WebRTC dùng ba kỹ thuật cơ bản: ICE để khám phá các đường đi có thể dùng, STUN để hỏi máy chủ biết địa chỉ công khai của thiết bị, và TURN làm máy chủ trung chuyển khi không còn đường nào khả dụng. ICE lập bảng danh sách các phương án, ưu tiên đường trực tiếp, và chỉ chuyển sang trung chuyển khi thật sự cần. Nhờ đó phần lớn phiên gọi vẫn chạy ngang hàng mà không tốn băng thông máy chủ.

Về mặt bảo mật, mọi phiên WebRTC đều được mã hóa. Dữ liệu đi qua lớp bảo mật giao thông, sau đó được đóng gói bằng giao thức truyền thời gian thực rồi đặt trên UDP. Riêng kênh dữ liệu dùng SCTP. Bản đặc tả còn bắt buộc mọi bản triển khai phải hỗ trợ tối thiểu ba bộ mã âm thanh để đảm bảo các bên gọi nói chuyện được với nhau: một bộ mã âm thanh hiện đại, một bộ mã theo chuẩn viễn thông cũ, và một bộ mã cho tín hiệu nhấn phím. Ngoài ra còn có bộ mã hình ảnh để đáp ứng nhu cầu gọi video.
Những vị trí WebRTC phát huy sức mạnh rõ rệt nhất gồm các ứng dụng hội nghị, giáo dục trực tuyến và chăm sóc khách hàng, nơi độ trễ thấp quyết định chất lượng cuộc họp. Ngoài ra còn có các ứng dụng chia sẻ tệp ngang hàng, cho phép truyền tệp trực tiếp giữa hai trình duyệt mà không tốn băng thông máy chủ. Một số trò chơi trực tuyến cũng dùng WebRTC cho phần truyền trạng thái và âm thanh giữa người chơi. Bản thân WebTorrent là một ví dụ rõ nét: nó kết hợp WebTorrent với giao thức chia sẻ tệp cũ để tạo ra hệ thống chia sẻ tệp hoàn toàn trong trình duyệt.
Tuy nhiên, WebRTC cũng tồn tại rủi ro bảo mật đáng lưu ý. Trong nhiều năm, các công cụ kiểm tra địa chỉ IP phát hiện rằng trình duyệt có thể lộ địa chỉ thật của người dùng ngay cả khi họ đang kết nối qua mạng riêng ảo, nhờ tính năng lấy địa chỉ công khai từ máy chủ STUN. Các yêu cầu này không hiện ra trong bảng điều khiển dành cho nhà phát triển và phần lớn tiện ích chặn quảng cáo đều không chặn được, nên người dùng vẫn có thể bị định vị dù đã cẩn thận. May mắn là vấn đề này đã được nhiều trình duyệt khắc phục dần, và nếu không dùng WebRTC thì có thể tắt hẳn tính năng này trong cài đặt.
Một giới hạn khác là WebRTC dựa trên UDP nên không thể đi qua mạng ẩn danh Tor theo cách thông thường, do đó hầu hết ứng dụng WebRTC sẽ không hoạt động nếu người dùng chỉ dựa vào Tor mà không có máy chủ trung chuyển.
Tóm lại, WebRTC đã thay đổi cách chúng ta xây dựng ứng dụng giao tiếp trực tiếp. Thay vì đóng gói truyền thông vào một ứng dụng riêng, giờ đây bất kỳ trang web nào cũng có thể trở thành một phòng họp. Bài viết này tổng hợp từ bài WebRTC trên Wikipedia, bạn có thể tra thêm tại khuyến nghị chính thức của W3C và nhóm kỹ thuật rtcweb của IETF nếu cần chi tiết kỹ thuật sâu hơn.
