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.hqwc.cn/news/59997.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习---自编码器

自编码器过程 输入一个图片,经过encoder变成一个向量,再通过decoder将这个向量反向生成输入的图片。 这里我们希望输入和输出越接近越好。这个过程我们称为重建。 特点:不需要任何的标注资料。 在2006年这个思想就被提出来了: …

pytorch Stream 多流处理

CUD Stream https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-language-extensions 中指出在kenel的调用函数中最后一个可选参数表示该核函数处在哪个流之中。 - 参数Dg用于定义整个grid的维度和尺寸,即一个grid有多少个block。为dim3类型。…

K8S系列文章之 自动化运维利器 Fabric

Fabric 主要用在应用部署与系统管理等任务的自动化,简单轻量级,提供有丰富的 SSH 扩展接口。在 Fabric 1.x 版本中,它混杂了本地及远程两类功能;但自 Fabric 2.x 版本起,它分离出了独立的 Invoke 库,来处理…

Selenium 自动化测试实战笔记1

1. 安装 selenium pip install selenium 3.11.0 # 安装指定版本 pip install selenium -U # 安装最新版本 pip show selenium # 查看当前版本 pip uninstall selenium # 卸载 报错解决1: 带上代理 pip install selenium -i http://mirrors.aliyun.com/…

这些工具让音频文件格式转换更简单

小华是一位音乐爱好者,他平时喜欢下载并播放一些流行音乐。在这个过程中,他发现从不同平台上下载下来的音乐格式并不一样,而不同的播放平台也支持不同的音频格式。这令他感到烦恼,并希望通过一些音频格式转换器来帮助他解决音频格…

基于springboot+vue的幼儿园管理系统的设计与实现_5umt6

随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为幼儿园行业的改革起到关键作用。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、畅通、高效的幼儿园管理系统。当前的幼儿园管理系…

实例033 制作闪烁的窗体

实例说明 Windows系统中,当程序在后台运行时,如果某个窗口的提示信息需要用户浏览,该窗口就会不停的闪烁,这样就会吸引用户的注意。同样,如果在自己的程序中使某个窗口不停的闪烁就会吸引用户的注意。本例设计了一个闪…

Xception 算法详解

📮 本次重点(模型轻量化): ● Inception设计理念 ● 点卷积 ● 深度可分离卷积 ● Bottleneck结构 注:Xception算法整体结构是其次,主要是了解以上四个结构。 今天详解Xception算法,由于Xception模型在极大的减少了网络参数量和计算复杂度的同时,可以保持卓越的性能表…

MyBatis-XML映射文件

XML映射文件 规范 XML映射文件的名称与Mapper接口名称一致(EmpMapper对应EmpMpper.xml),并且将XML映射文件和Mapper接口放置在相同包下(同包同名) ​​​ 在maven项目结构中所有的配置文件都在resources目录之下&…

JavaWeb(11)——前端综合案例5(小黑记事本)

一、实例需求 ⌛ 功能需求&#xff1a; ① 列表渲染 ② 删除功能 ③ 添加功能 ④ 底部统计 和 清空任务 二、代码实现 ☕ <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" /> <meta http-equiv"X-UA-Compa…

测评HTTP代理的透明匿名?

在我们日常的网络冒险中&#xff0c;你是否曾听说过HTTP代理的透明匿名特性&#xff1f;这些神秘的工具就像是网络世界中的隐身斗士&#xff0c;让我们能够在互联网的迷雾中保护自己的身份和隐私。那么&#xff0c;让我们一起揭开HTTP代理的面纱&#xff0c;探索其中的奥秘吧&a…

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建

前言&#xff1a;本文主要介绍在企业使用Python搭建接口自动化测试框架&#xff0c;数据驱动读取excel表里的数据&#xff0c;和数据库方面的交互&#xff0c;包括关系型数据库Mysql和非关系型数据库MongDB&#xff0c;连接数据库&#xff0c;读取数据库中数据&#xff0c;最后…