固定長・可変長パケットについて
このページでは、固定長・可変長パケットの扱いについて説明します。
Note
固定長・可変長ともに、テスト終了時にパケットとして記録されていない残ったデータを 1 パケットとして記録します。
固定長パケット
固定長パケットでは、[受信パケットサイズ] 分のデータを受信するたびに 1 パケットとして記録します。
[受信パケットサイズ] を超えたデータは次のパケットとして記録されます。
可変長パケット (受信間隔指定)
可変長パケット (受信間隔指定) では、1 つ目のデータ受信完了から一定時間内に受信した通信データを 1 パケットとして記録します。
受信から確定までの時間間隔は ms 単位で指定します。
受信間隔時間内で [受信パケットサイズ] を超えた場合は、[受信パケットサイズ] までを 1 パケットとして記録します。
その場合も受信間隔のリセットは行われません。
可変長パケット (パケット解析)
可変長パケット (パケット解析) では、パケットの先頭と終端を検出して 1 パケットとして記録します。
先頭位置を検出した際に、検出した先頭位置より前に受信していたデータがある場合は、それらのデータを 1 パケットとして記録します。
パケットの先頭位置と終端位置の検出にはいくつかの方法があります。
パケットの先頭位置の検出
パケットの先頭位置の検出方法には、先頭マーカーで検出する方法があります。
先頭マーカーで先頭位置を検出する
受信データの中からマーカーに一致するデータ位置をパケットの先頭として検出します。
以下は、[先頭マーカー] に 0x27,0x39 (2byte のバイト列) を指定した場合の検出例です。
その他の方法で先頭位置を検出する
[先頭マーカー] を設定しない場合、パケットの先頭位置は受信データの先頭位置になります。
パケットの終端位置の検出
パケットの終端位置の検出方法には、
- 終端マーカーで検出する方法
- 長さフィールドを解析して検出する方法
の 2 つの方法があります。
終端マーカーで終端位置を検出する
受信データの中からマーカーに一致するデータ位置をパケットの終端として検出します。
以下は、[終端マーカー] に 0x4B,0x5D (2byte のバイト列) を指定した場合の検出例です。
長さフィールドを解析して終端位置を検出する
受信データを解析してパケット長を読み取り、パケットの終端位置を検出します。
以下は、各種設定項目を表の通りに指定した場合の検出例です。
| 設定項目 | 指定値 |
|---|---|
| 長さフィールドが示す対象 | 可変長フィールドのみ |
| オフセット | 1 |
| サイズ | 1 |
| エンディアン | Big Endian |
| 可変長フィールド以外のフィールド合計サイズ | 4 |
その他の方法で終端位置を検出する
[終端マーカー] と [長さフィールド] を設定しない場合でも、[先頭マーカー] が設定されていれば、パケットの終端位置は次の先頭マーカーの検出位置までとなります。
以下は、[先頭マーカー] に 0x27,0x39 (2byte のバイト列) を指定し、[終端マーカー] と [長さフィールド] を設定しない場合の検出例です。
その他の設定項目
次の設定項目を指定して、パケットを確定できずに受信データが蓄積され続けることを防止できます。
最大受信パケットサイズ
受信データが [最大受信パケットサイズ] を超えた時点で、パケットを確定して記録します。
[最大受信パケットサイズ] を超えたデータは次のパケット検出の対象になります。
以下は、[最大受信パケットサイズ] に 10 を指定し、11byte 以上のデータを受信した場合の検出例です。
受信タイムアウト時間
パケットの先頭位置を検出してから [受信タイムアウト時間] が経過した時点で、パケットを確定して記録します。
[受信タイムアウト時間] までパケットとして記録され、残りの受信データがある場合は次のパケット検出の対象になります。
以下は、[受信タイムアウト時間] に 100 (ms) を指定し、パケットの先頭位置を検出してから、終端位置を検出しないまま 100ms が経過した場合の検出例です。