I would propose a format like this:
<<BodyLength:32/integer, TransactionID:32/integer, Body/binary>>
Or maybe a 16 bit uint is sufficient as the Transaction ID would be
reset to 0 when it reaches UINT16_MAX or UINT32_MAX.
<<BodyLength:32/integer, TransactionID:16/integer, Body/binary>>
- Simon Menke