【发布时间】:2017-03-12 02:27:17
【问题描述】:
我正在尝试根据RFC 5389 解码 STUN 成功响应:
如果 IP 地址族是 IPv6,则 X-Address 是通过获取映射的 IP 地址来计算的 按主机字节顺序,将其与魔法的串联进行异或 cookie 和 96 位交易 ID,并将结果转换为 网络字节序。
Magic cookie 是一个常数,它是 0x2112A442。
在我的例子中,交易 ID 是:0x6FA22B0D9C5F5AD75B6A4E43。
按主机字节顺序排列的我的 X-Address (IPv6) 是:
0x034A67D82F4B3657B193039A8BA8FDA1
我是否必须对主机字节顺序 X-Address 与网络或主机字节顺序中的 Magic Cookie 和事务 ID 的串联进行异或?
在第一种情况下,网络字节顺序连接等于:
0x2112A442 6FA22B0D9C5F5AD75B6A4E43
第一个字节 0x03 与 0x21 异或,最后一个字节 0xA1 与 0x43 异或
但在第二种情况下,主机字节顺序连接是:
0x434E6A5BD75A5F9C0D2BA26F 42A41221
第一个字节 0x03 与 0x43 异或,最后一个字节 0xA1 与 0x21 异或。
另一种可能的行为是,如果它将 Magic cookie 和事务 ID 单独转换为主机字节顺序,但它将它们连接起来并保留标头顺序:
0x42A41221 434E6A5BD75A5F9C0D2BA26F
第一个字节 0x03 与 0x42 异或,最后一个字节 0xA1 与 0x6F 异或。
【问题讨论】:
标签: xor stun endianness