美文网首页
十五、网络传输基本知识-STUN

十五、网络传输基本知识-STUN

作者: ThemisHoo | 来源:发表于2019-04-29 09:40 被阅读0次

    注:以下图片来自慕课网,侵权可删

    STUN介绍

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

    RFC STUN规范

    • RFC3489/STUN
      Simple Traversal of UDP Through NAT 通过UDP进行NAT穿越(失败率较高)
    • RFC5389/STUN
      Session Traversal Utilities for NAT 包括UDP和TCP两种协议进行NAT穿越

    STUN协议

    • (协议头)包括 20字节的 STUN header
    • (协议体)Body 中可以有 0个或多个 Attribute

    RFC3489/STUN header格式

    • 2字节(16bit)类型
    • 2字节(16bit)消息长度,不包括消息头本身这20字节
    • 16字节(128bit)事物ID,请求与响应事务ID相同
    RFC5389/STUN header格式

    不同点:

    • 5389中前两位必须是0 0
    • 3489中事务ID是128位,5389中是96位,另外32位被单独划分出来用做Magic Cookie
    STUN Message Type
    • 前两位必须是00, 以区分复用同一端口号的不同协议是不是STUN协议
    • 2位用于分类,即C0和C1
      C0和C1占两位,所以它有四种类型,请求,指示,成功应答、错误应答四种类型
    • 12位用于定义请求/指示
      比如,1代表绑定,2代表私有消息,隐私数据等



      0b00:表示是一个请求
      0b01:表示一个指示
      0b10:表示是请求成功的响应
      0b11:表示是失败请求的响应



      最后一位1代表绑定 1前面的 00代表消息 10代表响应
      最后一位2代表私密 2前面的 00代表消息 10代表响应
      5389中将第二种类型去掉了
    大小端模式
    • 大端模式:数据的高字节保存在内存的低地址中
    • 小端模式:数据的高字节保存在内存的高地址中
    • 网络字节顺序:采用大端排序方式



      右边是后发送过来的,属于低端,低字节

    Transaction ID
    • 4字节, 32位, Magic Cookie,固定值 0x2112A442。(有即为5389)通过它可以判断客户端是否可以识别某些属性
    • 12字节,96位, 标识同一事务的请求和响应

    STUN Message Body

    • 跟在消息头后,有0或多个属性
    • 每个属性进行 TLV编码:Type,Length,Value



    相关文章

      网友评论

          本文标题:十五、网络传输基本知识-STUN

          本文链接:https://www.haomeiwen.com/subject/nsfjnqtx.html