General remarks/questions with regard to the information being stored in class Frame:
I see that you usually tend to separate out different bit-flags into their individual pike member variables of type int. Case in point: fin, rsv1, rsv2, rsv3 and mask.
Why don't you choose something closer to the wire-format where you use:
int flags;
enum { FIN = 0x80, RSV1 = 0x40, RSV2 = 0x20, RSV3 = 0x10 }
and then test for fin using: flags & FIN etc. ?
It's not like we require an ultra-userfriendly API to the basic frame flags. It just needs to efficient and readable.