我是靠谱客的博主 称心小猫咪,最近开发中收集的这篇文章主要介绍webrtc基础知识【NAT、STUN】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、NAT基础知识

NAT产生的原因:

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

NAT种类:

  • 完全锥形:经过NAT主机形成一个外网的ip+port之后,外网可以随意访问。安全性较低;
  • 地址限制锥形:针对ip地址做限制
  • 端口限制锥形:针对端口做限制
  • 对称型:每次NAT主机生成对外公网的ip+port都不一样

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

对每台不同的主机,生成不同外网互通的ip+port

请添加图片描述

请添加图片描述

请添加图片描述

二、STUN介绍

  • STUN存在的目的是为了NAT穿越(端对端公网ip交换)
  • STUN是典型的客户端/服务器模式,客户端发送请求,服务端进行响应

RFC STUN规范

  • RFC3489/STUN:使用UDP进行NAT穿越
  • RFC5389/STUN:支持TCP/UDP进行NAT穿越

STUN协议结构

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

STUN Header

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

STUN Message Type

  • 前两位必须是00,以区分复用同一端口时STUN协议
  • 2bit用于分类,即C0和C1
    • 0b00:表示是一个请求
    • 0b01:表示是一个知识
    • 0b10:表示是请求成功的响应
    • 0b11:表示是请求失败的响应
  • 12bit用于定义请求/指示

大小端模式

  • 大端模式:数据的高字节保存在内存的低地址中
  • 小端模式:数据的高字节保存在内存的高地址中
  • 网络字节顺序:采用大端排序方式

请添加图片描述

请添加图片描述

三、网络抓包工具

网络分析方法:tcpdump/wireshark

请添加图片描述

wireshark基本语法

# 判断语句
与: and 或 &&
或:or 或 ||
非:not 或 !
等于:eq 或 ==
小于:lt 或 <
大于:gt 或 >
小于等于:le 或 <=
大于等于:ge 或 >=
不等于:ne 或 !=

# 协议过滤
stun
tcp
udp

# ip过滤
ip.dst  == 目的ip
ip.src == 源ip(发送端)
ip.addr == 包含ip(打印所有该ip数据)

# port过滤
tcp.port == 端口
udp.port == 端口
udp.dstport == 目的端口
udp.srcport == 源端口

# 过滤长度
dup.length < 30
tcp.length < 30
http.content_length < 30

最后

以上就是称心小猫咪为你收集整理的webrtc基础知识【NAT、STUN】的全部内容,希望文章能够帮你解决webrtc基础知识【NAT、STUN】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部