-
Notifications
You must be signed in to change notification settings - Fork 18
PCPパケットの構造
Philmist edited this page Aug 11, 2017
·
3 revisions
間違っていたら修正か指摘お願いします。
- PCPでは1つの単位(パケットみたいなもの)をAtomと呼ぶ。
- Atom内で数値はリトルエンディアン(
0x010a0f
を表現するとき、逆順に読んで、0f|0a|01
と書かれる)。 - Atomはコマンド文字列(4文字の英小文字)とAtomを構成する内容のバイト数(32bit整数で表わされる)から構成される(先頭1ビットは長さとしては無視)。
- コマンド文字列の空きはnull文字で埋められる。
- Atomは子Atomを持つことが出来る。
- PCPのヘッダ(接続開始時に1回だけ送られる):
|p|c|p|\n|0x4|0x0|0x0|0x0|0x1|0x0|0x0|0x0|
←(流れる方向) - コマンドはPCP\n、内容は4バイト、中身(PCPプロトコルバージョン)は1。
CCCCLLLL
というAtomのヘッダがあったとします。
CCCC
はコマンド文字列。LLLL
はこのAtomが持つ内容のバイト数です。
これ単体だけなら先の例にあるPCPヘッダの先頭8バイトの部分です。
ところがAtom長を表わすLLLL
の部分で(受信してリトルエンディアンから戻したあとに)先頭ビットにおいて1が立っていたとき、
LLLL
はこのAtomがいくつの子Atomで構成されているかを示します。