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

具体自行百度学习

相关推荐
_可乐无糖15 小时前
AWS WebRTC:获取ICE服务地址(part 2): ICE Agent的作用
服务器·网络·webrtc
lqj_本人1 天前
鸿蒙OS&基于UniApp的WebRTC视频会议系统实践:从0到1的HarmonyOS适配之路#三方框架 #Uniapp
uni-app·webrtc·harmonyos
邪恶的贝利亚1 天前
webrtc初了解
webrtc
_可乐无糖3 天前
AWS WebRTC:获取ICE服务地址(part 3):STUN服务和TURN服务的作用
云计算·webrtc·aws
_可乐无糖5 天前
AWS WebRTC:获取ICE服务地址(part 1)
webrtc
_可乐无糖6 天前
AWS WebRTC:获取信令服务节点和ICE服务节点
webrtc
metaRTC7 天前
君正Ingenic webRTC P2P库libyangpeerconnection7编程指南
webrtc·p2p
超级土豆粉7 天前
WebRTC:实时通信的未来之路
webrtc
diygwcom10 天前
个人理解 火山引擎的实时对话 AI 如何利用 WebRTC、大模型、语音识别(ASR)、语音合成(TTS)等技术实现低延迟的实时对话功能。
人工智能·webrtc·火山引擎
谷云龙GGBond10 天前
【WebRTC】源码更改麦克风权限
webrtc