tombo2-progress’s diary

できるだけ毎日1時間を切り取ってここに晒す。誤字脱字気にしない。日本語が崩壊するのも気にしない。最終的にまとめて本ブログに書く

ステートを持つとしてどうパースするのか

ステートを持って、packetをパースすることにした。

server greetingを受けてるまでのip:portの組からのパケットは全部破棄するとして、ステートマシンは独自に作らないとならない。 実際MySQL serverがやるようにパースすればよいが、高負荷環境ではtcpdumpでもパケットロストが発生するので、十分にパケットを処理できない場合にどう処理するかは悩みどころ。

実際問題server greetingが来るまでリセットさせてパケットを破棄するしかないように思える。

今の所通常のquery, prepared_statementで8ステート作っているが、他のパケットもパースしようとするとかなり大変。