请问STUN协议中为什么前两位必须置零?

我在学习STUN协议中有些疑惑,官网在定义Message header时,在RFC5389就规定了前两位必须置零,根据官方的解释,是为了和其他协议复用同一个端口。

image.png

对此我非常好奇?

  • 这个other protocols 指的是哪个协议?
  • 什么情况下需要和不同协议复用同一个端口?

猜测:是为了兼容原有的RFC3489
但是我查看文档后发现。RFC3489的前两位就是00,压根无法区分RFC3489和RFC5389。
image.png

所以我很纠结,RFC5389中的other protocols到底指的哪个协议?

回复
阅读 1.4k
1 个回答

RFC5389 比 RFC3489 多了 TCP,但完全向后兼容,所以不需要区分二者。

其他协议就是字面意思上的其他协议啊……其他协议也侦听 3478 端口,就这么区分……其实也不靠谱,就是拍脑袋定的,因为也有一些协议报文头两比特也可能是 00(比如 NTP),这就还得是尽量别共用一个端口。

宣传栏