「stun」の版間の差分
提供: 個人的記録
(→メッセージタイプの生成方法) |
|||
52行目: | 52行目: | ||
==== メッセージタイプの生成方法 ==== | ==== メッセージタイプの生成方法 ==== | ||
メッセージタイプはクラスとメソッドの合成で生成する。<br>クラスとメソッドを上位、下位に分割し以下のようにマッピングする。 | メッセージタイプはクラスとメソッドの合成で生成する。<br>クラスとメソッドを上位、下位に分割し以下のようにマッピングする。 | ||
− | {| | + | {| class="wikitable" |
!順序 | !順序 | ||
!値 | !値 | ||
|- | |- | ||
|0-1||0固定 | |0-1||0固定 | ||
− | |2-6||メソッドの上位5ビット| | + | |2-6||メソッドの上位5ビット |
− | |7||クラスの上位1ビット| | + | |- |
− | |8-14||メソッドの下位7ビット| | + | |7||クラスの上位1ビット |
− | |15||クラスの下位1ビット | + | |- |
+ | |8-14||メソッドの下位7ビット | ||
+ | |- | ||
+ | |15||クラスの下位1ビット | ||
|} | |} |
2019年1月4日 (金) 07:12時点における版
STUN
RFC5389 を調べたメモ
メッセージ構造
長さ(バイト) | 項目名 | 説明 |
---|---|---|
2 | メッセージタイプ | 先頭2ビットは0固定。後ろ14ビットでクラスとメソッドを規定する(後述)。 |
2 | メッセージ長さ | |
4 | マジック | 0x2112A442 固定 |
12 | トランザクションID | 乱数。トランザクションの識別に使用する |
メッセージタイプ
メッセージタイプは先頭2ビットが0固定。後ろ14ビットが2ビットのクラス、12ビットのメソッドで決まる。
クラス
クラスは以下の4種類である。
データ(0b) | 名称 |
---|---|
00 | リクエスト |
01 | エンデュケーション |
10 | 成功レスポンス |
11 | エラーレスポンス |
先頭1ビットがレスポンスを表すと思っておけばいい?
メソッド
値(0x) | メソッド名 |
---|---|
000 | Reserved |
001 | Binding |
002 | SharedSecret |
他のRFCで追加されているが、RFC5389の範囲ではこの3種類。実際に使用するのばbindingのみ。
メッセージタイプの生成方法
メッセージタイプはクラスとメソッドの合成で生成する。
クラスとメソッドを上位、下位に分割し以下のようにマッピングする。
順序 | 値 | ||
---|---|---|---|
0-1 | 0固定 | 2-6 | メソッドの上位5ビット |
7 | クラスの上位1ビット | ||
8-14 | メソッドの下位7ビット | ||
15 | クラスの下位1ビット |