当前位置: 首页 > news >正文

WebRTC基础知识

文章目录

  • 基础概念
    • NAT (Network Address Translation) 打洞
    • STUN(Session Traversal Utilities for NAT)
      • 基于STUN协议的DDoS反射攻击 # TODO
    • TURN(Traversal Using Relays around NAT)
    • ICE(Interactive Connectivity Establishment)
    • SDP(Session Description Protocol)
    • 一个典型的WebRTC通信流程

基础概念

零基础快速入门WebRTC:基本概念、关键技术、与WebSocket的区别
真实世界中的WebRTC:STUN, TURN and signaling

  • 标准的、低延迟的方式来传递媒体数据(视频&音频)。
  • 客户端是以P2P的方式,使用UDP协议发送数据。
  • ICE:客户端需要交换ICE和SDP 信令,才能建立链接。
  • WebRTC协议不关心使用什么方式来交换信令,WebSockets、Socket.io、HTTP甚至人工交换都可以,实际上长字符串传递给其他人罢了。

NAT (Network Address Translation) 打洞

  • 一对一 NAT:外部的IP和port可以映射到内部的IP和port。

  • IP 受限型 NAT:

  • 端口受限型 NAT:

  • 对称 NAT:Symmetric NAT 该方式是限制最多的一种,必须使用TURN服务。

  • NAT相关资料:

    • P2P技术详解(一):NAT详解——详细原理、P2P简介
    • 通俗易懂:快速理解P2P技术中的NAT穿透原理

STUN(Session Traversal Utilities for NAT)

  • NAT给设备提供了一个IP地址以使用局域网,但是该地址不能在外部使用。由于没有公用地址,WebRTC端对端就无法进行通信,STUN用来解决这个问题。
  • STUN服务器位于公共网络上。
  • 只有一个简单的任务:检查客户端传入请求的IP地址(来自运行在NAT后面的应用程序),并将该地址作为响应发送回去。客户端为自己获得一个公网地址,然后通过信令机制将其传递给另一端以建立P2P直接连接。

在这里插入图片描述

  • 简单理解:STUN服务器是用来获取外部地址的。
    在这里插入图片描述

基于STUN协议的DDoS反射攻击 # TODO

新型DDoS来袭 | 基于STUN协议的DDoS反射攻击分析

  • STUN支持使用UDP协议来发送,STUN请求/响应事务的可靠性是通过客户端应用程序本身重新传输请求消息来实现的。黑客利用UDP无状态的这种机制,伪造攻击目标请求STUN服务器,把开启该服务的主机作为反射源,进行DDoS反射攻击,实现伪装和攻击。

  • STUN响应时会进行重试,黑客利用该机制可放大几倍的攻击量。

  • 防护建议:对于STUN互联网应用提供者,可限制可访问的源IP的地址范围减少利用情况,或者 只准使用tcp发送STUN协议,对于企业用户,推荐接入DDoS防护产品对抗大流量DDoS攻击。

TURN(Traversal Using Relays around NAT)

  • 两个客户端无法直接通信,只能依赖TURN服务。TURN服务往往作为后备。
  • 所有的通信内容都要经过 TURN 服务器的转发,所以 TURN 服务器的维护成本比较高。
  • TURN用于中继对等端之间的音频/视频/数据流,而不是信令数据。
  • TURN服务器都支持 STUN,所以TURN服务器一般内置STUN服务器。

在这里插入图片描述

  • 简单理解:TURN服务器是用来在客户端P2P直连失败的情况下进行中继转发数据流的。
    在这里插入图片描述

ICE(Interactive Connectivity Establishment)

  • ICE是用来对付NAT和防火墙,使用ICE来消除实际网络的复杂性,ICE会试图找到连接对方的最佳途径。
  • ICE会会收集所有可用的通信路径,本地 IP 地址、STUN 和 TURN 服务器提供的地址等等。把收集到的所有地址都将放入 SDP 中,再送到对端,对端通过解析 SDP 来了解我方提供的重要信息。

SDP(Session Description Protocol)

  • SDP信令 是一种用于表述 ICE Candidates 的格式,它描述了网络选项、媒体选项、安全选项和其他很多信息,甚至可以自定义 SDP 内容。

一个典型的WebRTC通信流程

  1. A 想要和B建立连接;
  2. A 创建了一个 offer,它寻找所有的 ICE candidate、安全选项、音视频选项等并创建 SDP(简单来说这个 offer 就是 SDP);
  3. A 将 SDP 信令传递给 B(Signaling);
  4. B 根据 A 的 offer 进行设置,并创建应答(answer);
  5. B 将 Answer 信令传递给 A(Signaling);
  6. 连接建立。
http://www.lryc.cn/news/116015.html

相关文章:

  • 积累常见的有针对性的python面试题---python面试题001
  • 在springboot使用websocket时mapper无法注入
  • 前端加密与解密的几种方式
  • 详解Spring Bean的生命周期
  • 详解Shell 脚本中 “$” 符号的多种用法
  • Redis如何实现Session存储
  • 安防视频监控汇聚EasyCVR平台接入Ehome告警,公网快照不显示的原因排查
  • 【Springboot】@ComponentScan 详解
  • flask-----信号
  • 10_Vue3 其它的组合式API(Composition API)
  • COCOS项目运行的时候图片模糊的原因
  • Python中搭建IP代理池的妙招
  • 学习pytorch 2
  • elementui动态表单实现计算属性携带参数,并将计算出的值四舍五入保留两位小数
  • 嵌入式面试5 -makefile shell
  • 获40余家主机厂青睐,这家OTA「吸金王」完成超亿元B2轮融资!
  • CGI, FastCGI, WSGI, uWSGI, uwsgi分别是什么?
  • Android T 窗口层级相关的类(更新中)
  • 【云原生】深入掌握k8s中Pod和生命周期
  • openKylin+KingbaseES+Nginx安装
  • lc1.两数之和
  • c# 初始化列表,并给列表里面所有的元素进行初始化
  • Java笔记(三十):MySQL(上)-- 数据库、MySQL常用数据类型、DDL、DML、多表设计
  • SQL笔记-正态分布函数(二)
  • 【LeetCode】数据结构题解(12)[用栈实现队列]
  • 嵌入式Linux下LVGL的移植与配置
  • leetcode每日一练-第70题-爬楼梯
  • 设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?
  • arcgis宗地或者地块四至权利人信息提取教程
  • 乐鑫首创|使用 ESP RainMaker® 私有云定制 Matter 生态