「stun」の版間の差分
提供: 個人的記録
(→メッセージタイプの生成方法) |
(→メッセージ構造) |
||
| 3行目: | 3行目: | ||
[http://www.can.mydns.jp/~ryo/rfc/rfc5389-ja.txt RFC5389] を調べたメモ | [http://www.can.mydns.jp/~ryo/rfc/rfc5389-ja.txt RFC5389] を調べたメモ | ||
| − | == | + | == メッセージヘッダ構造 == |
{| class="wikitable" | {| class="wikitable" | ||
| 12行目: | 12行目: | ||
|2||メッセージタイプ||先頭2ビットは0固定。後ろ14ビットでクラスとメソッドを規定する(後述)。 | |2||メッセージタイプ||先頭2ビットは0固定。後ろ14ビットでクラスとメソッドを規定する(後述)。 | ||
|- | |- | ||
| − | |2||メッセージ長さ|| | + | |2||メッセージ長さ||20バイトのヘッダ長さは含まない。後続のattributeの長さをセットする。 |
|- | |- | ||
|4||マジック||0x2112A442 固定 | |4||マジック||0x2112A442 固定 | ||
2019年1月4日 (金) 07:16時点における版
STUN
RFC5389 を調べたメモ
メッセージヘッダ構造
| 長さ(バイト) | 項目名 | 説明 |
|---|---|---|
| 2 | メッセージタイプ | 先頭2ビットは0固定。後ろ14ビットでクラスとメソッドを規定する(後述)。 |
| 2 | メッセージ長さ | 20バイトのヘッダ長さは含まない。後続のattributeの長さをセットする。 |
| 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ビット |