WebRtc09:网络基础P2P/STUN/TURN/ICE

网络传输基本知识

  • NAT
  • STUN(Session Traversal Utilities for NAT)
  • TURN
  • ICE

NAT

产生的原因

  • IPV4地址不够
  • 出于网络安全的原因

NAT种类

  • 完全锥型NAT(Full Cone NAT)
  • 地址限制型NAT(Address Restricted Cone NAT)
  • 端口限制型NAT(Port Restricted Cone NAT)
  • 对称型NAT(Symmetric NAT)

NAT打洞原理

完全锥型NAT

地址限制型NAT

端口限制型NAT

对称型NAT

主机X通过NAT发送数据给不同主机的时候,使用不同的IP和端口,比如发送给P,q时,使用A,b;而对于M,n主机,则使用C,d

NAT穿越原理

NAT穿越组合

NAT类型检测

对应步骤如下面这些图描述

第一步T1

第二步T2

第三步T3

STUN协议

STUN介绍

  • STUN存在的目的就是进行NAT穿越
  • STUN是典型的客户端/服务端模式。客户端发送请求,服务端进行相应

RFC STUN 规范

  • RFC3489/STUN (用这套规范失败率非常高)
    Simple Traversal of UDP Through NAT
  • RFC5389/STUN
    Session Traversal Utilities for NAT

具体协议

  • 包括20字节的STUN header
  • Body中可以有0个或者多个Attribute

STUN header

  • 其中2个字节(16bit)类型
  • 2个字节(16bit)消息长度,不包含消息头
  • 16字节(128bit)事务ID,请求与相应事务ID相同

5389格式

STUN Message Type


C表示分类,M表示方法

Transaction ID

STUN Message Body

TLV
RFC3489定义的属性
Attribute的使用

M必须,Option可选

TURN协议

TURN介绍

  • 其目的是解决对称NAT无法穿越的问题
  • 其建立在STUN之上,消息格式使用STUN格式消息
  • TURN Client要求服务端分配一个公共IP和Port用于接收或发送数据

TURN例子

TURN 使用的传输协议

TURN Allocate

TURN 发送机制

  • Send和Data
  • Channel

TURN Send And Data

TURN Channel

由于send和data经常要带头消息,使用channel不需要头消息

TURN的使用

ICE框架

ICE candidate

candidate类型

ICE具体做什么

candidate关系图

收集candidate

什么是SDP

SDP例子

形成Candidate Pair

连通性检查

连通性过程

网络协议分析

常用工具

  • linux服务端用tcpdump
  • 其他端WireShark

tcpdump

Wireshark

具体自行百度学习

相关推荐
换个昵称都难5 小时前
webrtc 拥塞控制GCC 和PCC
webrtc
Cxiaomu6 小时前
React接入WebRTC实时视频实践
react.js·音视频·webrtc
AndyHuang19769 小时前
WebRTC 强制 Relay 模式下 TCP 重连失败深度排查与优化实战
webrtc
换个昵称都难9 小时前
webrtc pacing 平滑发包模块
webrtc
换个昵称都难10 小时前
webrtc 音频混音介绍
音视频·webrtc
换个昵称都难1 天前
webrtc QOS-RemoteBitrateEstimator接收端带宽估计(1)
webrtc
换个昵称都难1 天前
webrtc QOS-RemoteBitrateEstimator接收端带宽估计-四个实例(2)
webrtc
都在酒里1 天前
【极致低延时】香橙派部署 MediaMTX 实现 WebRTC 推流,延时仅 500-800ms,比局域网 ffmpeg 拉流快近 10 倍!(附踩坑全记录)
linux·arm开发·ffmpeg·webrtc·orangepi·嵌入式软件
换个昵称都难1 天前
WebRTC QoS 实战:从原理到弱网优化
开发语言·php·webrtc
小哈机器人1 天前
Phantom Bridge:一个基于WebRTC的ROS2远程可视化与遥操作工具
机器人·webrtc·数据可视化