Skip to content

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。

Atomの詳細な構造

CCCCLLLLというAtomのヘッダがあったとします。 CCCCはコマンド文字列。LLLLはこのAtomが持つ内容のバイト数です。

これ単体だけなら先の例にあるPCPヘッダの先頭8バイトの部分です。

ところがAtom長を表わすLLLLの部分で(受信してリトルエンディアンから戻したあとに)先頭ビットにおいて1が立っていたとき、 LLLLはこのAtomがいくつの子Atomで構成されているかを示します。