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

具体自行百度学习

相关推荐
今天也想MK代码33 分钟前
WebRtc语音通话前置铃声处理
ffmpeg·webrtc
huangql52010 小时前
WebRTC技术详解:构建实时音视频应用实践
webrtc·实时音视频
赖small强10 小时前
【ZeroRange WebRTC】TWCC 在 WebRTC 中的角色与工作原理(深入指南)
webrtc·rtp·twcc·remb
赖small强12 小时前
【ZeroRange WebRTC 】STUN 在 WebRTC 中的角色与工作原理(深入指南)
webrtc·nat·stun·ice
赖small强12 小时前
【ZeroRange WebRTC】WebRTC 信令安全:实现原理与应用(深入指南)
webrtc·信令安全·tls/wss 传输加密·身份鉴权与授权·sdp/ice 的完整性保障
赖small强14 小时前
【ZeroRange WebRTC】WebRTC 在 IPC(网络摄像头)中的应用:架构、实现与实践(深入指南)
webrtc·ipc(网络摄像头)·编解码与带宽策略·信令与访问控制·stun/turn 穿透
赖small强1 天前
【ZeroRang WebRTC】ICE 在 WebRTC 中的角色与工作原理(深入指南)
webrtc·stun·turn·ice·srflx·relay
赖small强1 天前
【ZeroRange WebRTC】SDP 在 WebRTC 中的角色与工作原理(深入指南)
webrtc·sdp·stun·turn·ice·offer/answer
metaRTC2 天前
嵌入式webRTC IPC操作指南
webrtc·p2p·ipc
筏.k3 天前
WebRTC 项目中捕获 FFmpeg 底层源码日志(av_log)的完整方案
ffmpeg·webrtc