the length of the packet in bytes, not including 'mac' or the 'packet_length' field itself., so, if that is the case why is it necessary to remove the blockSize + 4, and even then, why is this necessary, the socket.Receive() shouldn't offset the stream from the last position it was when it was read?