> char[8]: 'kate\0\0\0\0' | kate This is incorrect, should be: char[9]: '\x80kate\0\0\0\0' | kate As Theora does, each packet has a first byte for the packet type (MSB set for headers). The padding with 4 zeros rather than 3 is due to, er, historical reasons :)