Phần I : Tổng quan về WebRTC

Oct 15, 2020

WebRTC là gì?

WebRTC là các API viết bằng javascript giúp giao tiếp theo thời gian thực mà không cần cài plugin hay phần mềm hỗ trợ. WebRTC có khả năng hỗ trợ trình duyệt giao tiếp thời gian thực thông qua Video Call, Voice Call hay transfer data P2P(peer-to-peer), không cần đến plugin, phần mềm khác.

WebRTC là viết tắt của cụm từ Web Real-Time Communication

WebRTC là một sản phẩm của World Wide Web Consortium (W3C).

Dự án nguồn mở hỗ trợ giao tiếp thời gian thực giữa trình duyệt mang tên WebRTC mới chính thức được ra mắt vào 2011 bởi Google.

Ưu điểm WebRTC là gì?

  • Được viết bằng ngôn ngữ javascript nên dễ dàng tiếp cận và sử dụng.
  • Hoàn toàn miễn phí.
  • Có thể hỗ trợ đa nền tảng, đa trình duyệt web trên laptop, PC, các thiết bị di động….
  • Tính bảo mật cao.
  • Không cần cài đặt, không cần plugin, phần mềm hỗ trợ.
  • Dùng được trong nhiều điều kiện đường truyền mạng.

Nhược điểm WebRTC là gì?

  • WebRTC bị cản bởi NAT và tường lửa khi cố gắng thực hiện kết nối P2P.
  • Không có cơ chế báo hiệu cài sẵn khi WebRTC tạo kết nối P2P giữa các trình duyệt.
  • WebRTC vẫn chưa chính thức hoàn thiện, một số trình duyệt như IE, Safari chưa thực sự được hỗ trợ tốt nhất.
  • Các hãng trình duyệt chưa thống nhất được chuẩn video sử dụng cho WebRTC.
  • Số lượng hàm API WebRTC hỗ trợ cho mỗi trình duyệt là khác nhau, tăng rủi ro phát sinh lỗi khi sử dụng trên các trình duyệt khác nhau.

Hiểu về WebRTC?

WebRTC truyền dữ liệu "Peer-to-Peer" có nghĩa là nếu A muốn giao tiếp với bồ của A là B thì bước đầu tiên A và B phải biết địa chỉ nhà của nhau để mà gởi thư tình. Vậy việc đầu tiên cần làm là phải tạo kết nối "Peer-to-Peer".Cuộc đời đẹp nhất khi ta có tự do, thích kết nối giao thông nhau mà k bị cản trở.

Đển đây thì phát sinh vấn đề rồi đây. Bình thường nhà gái mà dễ tính thì mở cổng chào đón thậm chí còn cho lên tận phòng con gái mà giao lưu tâm sự. Nhưng đời đâu như là mơ, nhà nào chẳng kín cổng cao tường đồng thời nuôi cả chó dữ. Nên giống như các hệ thống VoIP, WebRTC cũng bị cản trở khi tạo kết nối peer-to-peer bởi tường lửa và NAT.

Và thực tế hiện hữu thì nó như thế này đây:

Vậy Firewall(tường lửa) là gì và NAT là gì?

Firewall

Cái này chắc ai cũng biết nên mình đi sơ qua thôi, nôm na là biện pháp bảo vệ an toàn cho máy tính của bạn, nó giống như một bức tường ngăn cách máy tính của bạn hoặc mạng cục bộ (local network) với mạng khác như Internet.

NAT

· Như các bạn đã biết thì có 2 loại IP là IP public và IP private, các máy trong mạng LAN được đặt IP Private vì mấy IP private k tồn tại ngoài Internet (Vd: 192.168.1.1, 192.168.1.2 etc) . Và IP public thì tất nhiên tồn tại trên Internet rồi vì chùng ta đã đăng ký với ISP(nhà cung cấp dịch vụ Internet). Thông thường NAT thường thay đổi địa chỉ thường là địa chỉ riêng (IP Private) của một kết nối mạng thành địa chỉ công cộng (IP Public).

· Vậy khi A send B một gói tin với thông tin tóm lược như : IP nguồn (IP của A) : 192.168.1.1 , IP đích: (113.xxx.y.z)

· Mà như các ban biết là IP private không tồn tại ngoài Internet nên chúng ta cần NAT để thay thế IP private của A thành IP public.

· Hiện tại các bác cứ hiểu đơn giản là "NAT sử dụng IP của chính nó làm IP công cộng cho mỗi máy con (client) với IP riêng. Khi một máy con thực hiện kết nối hoặc gửi dữ liệu tới một máy tính nào đó trên internet, dữ liệu sẽ được gởi tới NAT, sau đó NAT sẽ thay thế địa chỉ IP gốc của máy con đó rồi gửi gói dữ liệu đi với địa chỉ IP của NAT. Máy tính từ xa hoặc máy tính nào đó trên internet khi nhận được tín hiệu sẽ gởi gói tin trở về cho NAT computer bởi vì chúng nghĩ rằng NAT computer là máy đã gởi những gói dữ liệu đi. NAT ghi lại bảng thông tin của những máy tính đã gởi những gói tin đi ra ngoài trên mỗi cổng dịch vụ và gởi những gói tin nhận được về đúng máy tính đó (client).

Câu hỏi đặt ra ở đây là , “Làm sao xin được địa chỉ nhà nàng đồng thời được các cụ thân sinh của nàng chào đón mở cửa cho vào?” . Yên tâm, " Sóng gió phủ đời trai -  Tương lai nhờ nhà vợ". Đã có STUN TURN.

STUN (Simple Traversal Of UDP Through NAT):

· STUN thì cứ tạm hiểu là khi một máy chủ nào xài NAT (behind NAT) thì STUN server sẽ giúp cho client đó biết được địa chỉ IP và Port mà thiết bị NAT sử dụng. Và từ đó giúp cho các peer có thể lấy được địa chỉ của peer khác (IP nào, cổng mấy, NAT loại gì) để mà vượt rào vào đu đưa chứ.

· Nhưng STUN có một nhược điểm là nó không support Symmetric NAT (NAT có nhiều loại), khi đó chungs ta sẽ cần đến đại ca TURN.

TURN (Traversal Using NAT Relay):

· Cũng giống như STUN tuy nhiên TURN hỗi trợ cả giao thức TCP làm giao thức truyền tải. TURN bổ xung cho hạn chế của STUN là hỗ trợ Symmetric NAT. Dữ liệu thay vì được gửi trực tiếp tới các peer thì các peer sẽ gửi dữ liệu tới các TURN server và TURN server sẽ đóng vai trò trung gian vận chuyển gói tin. Điều này nâng cao giúp chất lượng dịch vụ của ứng dụng mà còn đảm bảo an toàn thông tin khi truyền dẫn.

· Nhưng cái gì cũng có hai mặt đúng ko? Đại ca thì sẽ phải có giá của đại ca, vâng đó là chi phí nuôi đại ca rất tốn? Nhất là với chất lượng full HD không che.

Nay tạm thời đến đây, nào rảnh sẽ có bài đi sâu vào phương thức kết nối và cách tạo 1 video call đơn giản.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.