Well, it would just be a matter of creating your header in a string format, etc. Then place that header at the beginning. For example, I might have an enum that tells me the contents of the byte array in the first element. In this case, a "1" would indicate a business object. You could make this as long as you need since you would be in control of the header. The second part of the header may indicate, in bytes, the length of the serialized BO.
Dim header As String = "1|"
Dim bo() As Byte
Dim mem As New System.IO.MemoryStream()
Dim headerInBytes() As Byte
'-- Serialize the BO to a byte array
bo = MyBO.SerializeToByteArray()
'-- Create the header
header &= bo.Length.ToString()
'-- Place an ending tag on the header
header &= "|"
headerInBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(header)
'-- Create the full byte array
mem.Write(headerInBytes, 0, headerinBytes.Length)
'-- Add the BO to the byte array
mem.Write(bo, 0, bo.Length)
'-- Convert the stream into a byte array
mem.Seek(0, Begin)
Dim r() As Byte = mem.ToArray()
So when you get the byte array on the server side (or whereever) you already know what to expect in the header. So you can parse it out of the array (convert it back into a string or whatever you expect) and then you know what to do with the rest of the array.