CHƯƠNG 1: GIỚI THIỆU VỀ TRUYỀN THÔNG WEB THỜI GIAN THỰC - WEBRTC Hãy tƣởng tƣợng một thế giới nơi mà điện thoại, TV và máy tính của chúng ta đều có thể giao tiếp trên cùng một nền tảng chung. Hãy tƣởng tƣợng rằng chúng ta có thể dễ dàng thêm vào tính năng video chat và chia sẻ dữ liệu peer-to-peer cho ứng dụng web. Đó là tầm nhìn của WebRTC. Trƣớc đây khi chƣa có công nghệ WebRTC, chúng ta vẫn có thể thực hiện các cuộc gọi video, audio và chat trên trình duyệt, tuy nhiên nó đòi hỏi phải cài đặt thêm các plugin cho trình duyệt, và thậm chí cả hai ngƣời thực hiện cuộc gọi cùng phải cài đặt một loại plugin.
Và nếu ngƣời sử dụng chuyển sang một máy tính khác hoặc sử dụng một trình duyệt web khác, thì lại phải cài đặt lại plugin để có thể thực hiện cuộc gọi đƣợc. Việc sử dụng plugin thƣờng hay gặp phải các vấn đề về bảo mật và gây khó khăn cho ngƣời sử dụng. Hiện tại, WebRTC là công nghệ duy nhất cho phép truyền thông thời gian thực trong trình duyệt web mà không cần cài đặt thêm bất cứ một plugin hoặc ứng dụng nào khác. WebRTC là một nỗ lực của ngành công nghiệp để đƣa khả năng truyền thông thời gian thực vào tất cả các trình duyệt web, cho phép các nhà phát triển web dễ dàng sử dụng các tính năng này thông qua các thẻ HTML5 tiêu chuẩn và các JavaScript API.
Ví dụ, thực hiện một ứng dụng web có các tính năng tƣơng tự nhƣ các tính năng Skype™ cung cấp mà không cần phải cài đặt thêm bất kỳ phần mềm hay plug-in nào của bên thứ ba [1].1 Ngắn gọn về lịch sử của WebRTC Một trong những thách thức lớn nhất cho các trang web là cho phép con ngƣời giao tiếp thông qua giọng nói và video: giao tiếp thời gian thực hay RTC - Real Time Communication. Trong lịch sử, RTC đã đƣợc thực hiện một cách rất phức tạp, đòi hỏi các giấy phép công nghệ audio và video rất tốn kém hoặc các công nghệ tự phát triển riêng. Việc tích hợp công nghệ RTC với các nội dung, dữ liệu và các dịch vụ hiện có rất khó khăn và tốn nhiều thời gian, đặc biệt là trên web. 9 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Gmail video chat trở nên phổ biến trong năm 2008, và vào năm 2011 Google đã giới thiệu Hangouts, nó sử dụng dịch vụ Google Talk (cũng giống nhƣ trong Gmail).
Google mua lại GIPS, một công ty đã phát triển nhiều thành phần cần thiết cho RTC, chẳng hạn nhƣ các bộ codec và các kỹ thuật triệt tiếng dội. Google mở mã nguồn các công nghệ đƣợc phát triển bởi GIPS và tham gia vào các tiêu chuẩn có liên quan tại tổ chức IETF và W3C để đảm bảo sự đồng thuậncủa ngành công nghiệp [19]. WebRTC hiện nay đã thực hiện các tiêu chuẩn mở cho thời gian thực, không cần plugin chotruyền thông video, audio và dữ liệu. Nhu cầu sử dụng WebRTC là có thật: Nhiều dịch vụ web đã sử dụng RTC, nhƣng cần phải tải về thêm các ứng dụng hoặc plugin.
Trong đó bao gồm Skype, Facebook (trong đó sử dụng Skype) và Google Hangouts (sử dụng plugin Google Talk). Tải, cài đặt và cập nhật các plugin có thể phức tạp, dễ bị lỗi và gây phiền nhiễu. Các plugin có thể khó khăn để triển khai, gỡ lỗi, khắc phục sự cố, kiểm thử và bảo trì và nó có thể yêu cầu giấy phép và tích hợp với các công nghệ phức tạp đắt tiền. Thƣờng thì rất khó để thuyết phục mọi ngƣời cài đặt plugin ngay từ đầu.
Các nguyên tắc dẫn đƣờng của dự án WebRTC là các API của nó phảilà mã nguồn mở, miễn phí, đƣợc tiêu chuẩn hóa, đƣợc xây dựng trong các trình duyệt web và phải hiệu quả hơn so với các công nghệ hiện có. WebRTC hiện tại vẫn chƣa hoàn thiện, nó vẫn đang tiếp tục đƣợc xây dựng, cả ở cấp độ API của trình duyệt và ở cấp độ giao thức. Tuy nhiên, một số trình duyệt web đã hỗ trợ hầu hết các API của WebRTC nhƣ các trình duyệt Google Chrome, Opera và Mozilla Firefox mới nhất [8].2 Kiến trúc của WebRTC Cho phép truyền thông thời gian thực trong trình duyệt là một cam kết đầy tham vọng, và có lẽ là một trong những bổ sung quan trọng nhất cho nền tảng web từ khi đƣợc hình thành cho đến nay. Với kết quả là kiến trúc WebRTC bao gồm rất nhiều tiêu chuẩn, giao thức và API mới để cho nó hoạt động: Tổ chức W3C chịu trách nhiệm định nghĩa các APIs mới của WebRTC cho trình duyệt [2].
10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tổ chức IETF chịu trách nhiệm định nghĩa các giao thức, định dạng dữ liệu, bảo mật và các khía cạnh cần thiết khác để cho phép truyền thông peer-to- peer trong trình duyệt [2]. Hình 1 dƣới đây mô tả kiến trúc tổng thể của WebRTC.Khối màu nhạt hơn gọi là "chức năng truyền thông thời gian thực của trình duyệt". Chức năng nàytƣơng tác với các ứng dụng web sử dụng các API tiêu chuẩn của WebRTC và nó giao tiếp với hệ điều hành thông qua trình duyệt. Máy chủ Web Máy chủ báo hiệu HTTP hoặc WebSocket HTTP hoặc WebSocket cho báo hiệu JavaScript/HTML/CSS Các API khác Các API RTC Giao thức trên dây (cho truyền media hoặc dữ liệu) Trình duyệt Chức năng Web RTC Các dịch vụ của hệ điều hành Hình 1: Kiến trúc tổng thể của WebRTC [3].
Một khía cạnh mới của WebRTC là sự tƣơng tác xảy ra giữa trình duyệt với trình duyệt, đƣợc biết đến nhƣ một kết nối peer-to-peer, nơi mà chức năng RTC trong một trình duyệt giao tiếp sử dụng các giao thức tiêu chuẩn trên dây (không phải HTTP) với chức năng RTC trong một trình duyệt khác. Trong khi truyền thôngtrên web sử dụng 11 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com giao thức TCP, các giao thức tiêu chuẩn trên dây đƣợc RTC sử dụng giữa các trình duyệt có thể sử dụng giao thức truyền UDP- User Datagram Protocol. Một cái mới nữa là máy chủ báo hiệu (signaling server) cung cấp các kênh báo hiệu giữa các trình duyệt trong kết nối peer-to-peer. Hình 2 dƣới đây thể hiện kiến trúc bên trong của WebRTC.
Chúng ta thấy có hai tầng riêng biệt trong WebRTC [8]: 1. Các nhà phát triển trình duyệt web (nhƣ Google Chrome hoặc Mozilla Firefox) sẽ quan tâm đến các WebRTC C ++ API cho kết nối peer-to-peervà các API cho audio, video và vào/ra mạng theo ý của họ. Các nhà phát triển ứng dụng web sẽ quan tâm đến các web API. Ứng dụng Ứng dụng Ứng dụng Web #1 Web #2 Web #n WebRTC JavaScript API (Soạn thảo bởi W3C) WebRTC WebRTC C++ API (PeerConnection) Quản lý phiên Trình duyệt Web Voice Engine Video Engine Giao vận iSAC / iLBC / Opus VP8 Codec SRTP Codec Bộ đệm jitter NetEQ Bộ đệm Video jitter Dồn kênh Bộ khử tiếng vọng/giảm P2P Tăng cường ảnh tiếng ồn STUN + TURN +ICE Audio Capture/Render Video Capture Network I/O JavaScript API cho các C++ API cho các nhà phát API viết chồng lên được cho các nhà phát triển ứng dụng triển trình duyệt Web nhà phát triển trình duyệt Web Web Hình 2: Kiến trúc bên trong của WebRTC [8].
Ứng dụng web: là ứng dụng viết trên nền web sử dụng các JavaScript API của WebRTCcho chức năng truyền thông thời gian thực nhƣ chia sẻ video, audio chat, chia sẻ file. WebRTC JavaScript API: là các API đƣợc xây dựng bởi các nhà phát triển trình duyệt web theo tiêu chuẩn đƣợc quy định bởi tổ chức W3C. Các API này đƣợc các nhà 12 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com phát triển ứng dụng web sử dụng để viết ra các ứng dụng web có sử dụng chức năng truyền thông thời gian thực. WebRTC C++ API: là một lớp API bên trong của WebRTC đƣợc các nhà phát triển trình duyệt web sử dụng để dễ dàng thực hiện các WebRTC JavaScript API.
Khối giao vận: đảm nhiệm việc thiết lập kết nối qua các mô hình mạng khác nhau sử dụng STUN, TURN và ICE, đồng thời thực hiện việc dồn kênh và thực hiện chức năng truyền thông thời gian thực. VideoEngine: là một framework xử lý chuỗi khung hình video, từ máy ảnh vào mạng, và từ mạng tới màn hình hiển thị.VideoEngine trong WebRTC sử dụng VP8 video codec, đây là một định dạng video mở, chất lƣợng cao và miễn phí cho nền tảng web đƣợc phát triển từ dự án WebM - http://www. VideoEngine cũng sử dụng bộ đệm jitter động cho video, nó giúp che giấu những ảnh hƣởng của hiện tƣợng jitter và mất gói tin đến chất lƣợng hình ảnh tổng thể. Ngoài ra Video Engine còn có bộ tăng cƣờng ảnh, giúp loại bỏ nhiễu cho các hình ảnh thu đƣợc từ webcam.
Voice Engine: là một framework xử lý chuỗi âm thanh từ card âm thanh vào mạng. Nó sử dụng iSAC, iLBC và Opus audio codec và sử dụng bộ đệm jitter động để che giấu những tác động của hiện tƣợng jitter và việc mất gói tin, trong khi giữ độ trễ thấp nhất có thể và duy trì chất lƣợng âm thanh cao nhất. Voice Engine cũng sử dụng bộ khử tiếng vọng và bộ giảm tiếng ồn để nâng cao chất lƣợng đàm thoại.3 Chồng giao thức trong WebRTC Hình 3 thể hiện các giao thức đƣợc sử dụng trong WebRTC. 13 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Tầng ứng dụng ICE HTTP WebSocket SRTP SDP STUN TURN Tầng giao vận TLS DTLS SCTP TCP UDP Tầng mạng IP Hình 3: Chồng giao thức trong WebRTC [1].
a) Giao thức HTTP WebRTC sử dụng giao thức HTTP - Hyper-Text Transport Protocol giống nhƣ bất kỳ ứng dụng web nào, vì vậy không cần một kiến thức đặc biệt nào về HTTP. Phiên bản hiện tại của HTTP là 1. IETF đang làm việc để định nghĩa phiên bản tiếp theo của HTTP, đƣợc gọi là 2. Giao thức này sẽ có khả năng tăng tốc độ và hiệu quả tải web và các ứng dụng.
WebRTC sẽ có thể sử dụng giao thức này và bất kỳ phiên bản khác trong tƣơng lai của HTTP. b) Giao thức WebSocket WebSocket là một giao thức cung cấp các kênh truyền thông song công hoàn toàn thông qua một kết nối TCP duy nhất [11].WebSocket làm cho giao tiếp thời gian thực hiệu quả hơn vì nó giảm thiểu độ trễ để gửi/nhận thông báo giữa hai phía của kết nối [12].WebRTC sử dụng WebSocket để trao đổi thông báo giữa các trình duyệt với nhau và giữa các trình duyệt với máy chủ web để thiết lập, duy trì và ngắt kết nối. c) RTP và SRTP Giao thức quan trọng nhất đƣợc sử dụng bởi WebRTC là RTP - Real-time Transport Protocol. WebRTC chỉ sử dụng phiên bản an toàn của RTP gọi là SRTP - Secure RTP [10].