「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ビット