int major = reader.read(VERSION_BITS);
int minor = reader.read(VERSION_BITS);
ProtocolVersion version = new ProtocolVersion(major, minor);
int epoch = reader.read(EPOCH_BITS);
long sequenceNumber = reader.readLong(SEQUENCE_NUMBER_BITS);
int length = reader.read(LENGTH_BITS);
// delay decryption/interpretation of fragment
byte[] fragmentBytes = reader.readBytes(length);