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

具体自行百度学习

相关推荐
cuijiecheng20182 天前
RK3588 WebRTC 实时流卡顿优化:从视频桥接到 H.264 PTS 回退
音视频·webrtc·h.264
SendTomo4 天前
send.wang:基于浏览器WebRTC实现无客户端文件互传
网络·python·网络协议·webrtc·p2p
应用市场10 天前
无线控制与图传协议全景:从 S.BUS 到 WebRTC,一篇讲透遥控、数传与视频链路
音视频·webrtc
福大大架构师每日一题10 天前
webrtc-rs/webrtc v0.20.3更新:Android 网络切换后 ICE Restart 卡死约 10 秒的问题终于解决
android·网络·webrtc
SendTomo11 天前
P2P传输中IP交换的可控性实现
webrtc·p2p
SendTomo11 天前
基于WebRTC的P2P文件传输IP暴露是正常现象
网络·网络协议·tcp/ip·webrtc·p2p
SendTomo14 天前
send.wang(私传网)基于网页P2P直连传输大文件的优势
javascript·网络·webrtc·html5·p2p
SendTomo16 天前
SendTomo稳定传输三大核心策略
javascript·网络协议·webrtc·html5·p2p
SendTomo16 天前
send.wang(私传网)P2P直连加速文件传输
网络·网络协议·webrtc·html5·p2p
简简单单lym18 天前
mediasou c++分析--流分析
笔记·webrtc