zoukankan      html  css  js  c++  java
  • RFC3489 STUN之客户端所处环境探测流程与部分属性含义说明

    1 STUN客户端所处环境探测流程

    1.1 流程图

    1.2 流程图中Binding请求类型说明

    • 类型1:Binding请求消息中不设置CHANGE-REQUEST,或若设置其相应更改IP与端口标志位都清零
    • 类型2:Binding请求消息中设置CHANGE-REQUEST,并且其相应更改IP与端口标志位都置位
    • 类型3:Binding请求消息中设置CHANGE-REQUEST,并且仅更改端口标志位置位

    2 部分属性含义说明

    2.1 CHANGE-REQUEST

    前提:STUN服务器按协议要求一般会使用两个IP地扯、两个UDP端口号,组合出4个地扯对,每个地扯对创建一个UDP socket 

    应用说明:该属性用于在STUN客户端发送Binding请求消息STUN服务器时,该客户端希望或期待服务器返回响应消息时所使用的源IP或源端口是否要更改成不同于该请求消息的目的IP或目的端口,该属性是一个32位无符号整数,其LSB+1表示是否更改响应消息的源端口不同于相应请求的目的端口、其LSB+2表示是否更改响应消息的源IP不同于相应请求的目的IP 

    示例:STUN服务器使用IP1IP2两个IP3478、3479两个端口创建出4UDP socket,分别为usocket1(绑定IP13478、usocket2(绑定IP13479)、usocket3(绑定IP23478)、usocket4(绑定IP23479)。若STUN客户端向该STUN服务器usocket1发送Binding请求消息并且其CHANGE-REQUEST属性的LSB+11LSB+2位置0,这时STUN服务器使用usocket2向客户端返回Binding响应消息(usocket2usocket1绑定的IP相同,端口不同);若STUN客户端向该STUN服务器的usocket1发送Binding请求消息并且其CHANGE-REQUEST属性的LSB+11LSB+2位置1,这时该STUN服务器使用usocket4向客户端返回Binding响应消息usocket4usocket1绑定的IP不同,端口也不同);若STUN客户端向该STUN服务器的usocket1发送Binding请求消息时不包括CHANGE-REQUEST属性或包括但其LSB+10LSB+2位置0,这时STUN服务器直接使用usocket1向客户端返回Binding响应消息。

    2.2 SOURCE-ADDRESS

    表示STUN服务器STUN客户端返回Binding响应消息时实际使用的本端IP与端口号,用于判断客户是否处于多级NAT后面。

    2.3 CHANGED-ADDRESS

    在STUN服务器STUN客户端返回Binding响应时,固定返回该属性,有点类似于备选STUN IP与端口的意思,实际上是STUN服务器在收到Binding请求消息时,不管该请求消息是否包含CHANGE-REQUEST属性、也不管其值如何,都假如CHANGE-REQUEST属性的LSB+1置1与LSB+2位置1,这时用于发送相应响应消息所使用的IP或端口即构成CHANGED-ADDRESS属性的值

    2.4 MAPPED-ADDRESS

    STUN客户端发送Binding请求消息给STUN服务器,STUN服务器端通过recvfrom读取该请求消息的同时其第5个参数获取到的该请求消息的源地扯即为MAPPED-ADDRESS,由服务器通过Binding响应消息返回给客户端,若客户端位于NAT之后,通常是NAT设备转换后的地扯(多级NAT是从客户端至服务器方向上最后一级NAT转换后的地扯),否则是其本身地扯(是公网地扯)。

    2.5 RESPONSE-ADDRESS

    该属性表示STUN客户端向STUN服务器发送Binding请求后,希望服务器回复响应消息时所采用的目标IP与端口。

    2.6 REFLECTED-FROM

    STUN服务器收到Binding请求后,若该请求包括RESPONSE-ADDRESS,其响应必须包括REFLECTED-FROM,若前述Binding请求的完整性由UserName验证并且该UserName由Shared Secret Request这个请求所对应的响应获取,哪么REFLECTED-FROM属性的值为Shared Secret Request这个请求的源IP源端口;若前述UserName不是由Shared Secret Request所获得的,哪么REFLECTED-FROM属性的值为获取UserName的实体的源IP源端口;否则如果前述Binding请求不包括UserName属性,哪么REFLECTED-FROM属性的值为Binding请求的源IP与源端口。其目的是提供可追溯性,这样一个 STUN 服务器就不可能被用作拒绝服务攻击的一个反射器。

  • 相关阅读:
    向linux内核中添加外部中断驱动模块
    uboot中添加FIQ中断及相关问题
    访问内存中一个绝对地址
    ftp & tftp & vsftpd
    selinux基础
    ssh & screen
    Python自动化测试-unittest
    firewalld基础
    oracle体系结构-逻辑存储结构
    Oracle体系结构
  • 原文地址:https://www.cnblogs.com/oldmanlv/p/5643060.html
Copyright © 2011-2022 走看看