Hello @David Maryo ,
welcome to this moderated Azure community forum.
The Azure IoT Hub ingests messages having a body, application properties and system properties, with a maximum size of 256KB for each incoming message. (You mention 65KB. Do you have a link for that?)
Device messages can even be batched until you read a size of 265KB so these are sent as one incoming message. The IoT Hub is then smart enough to split them into individual messages before routing them to other Azure services.
So, an IoT Hub message could contain one or more device messages.
The IoT Hub count in 4KB 'chunks' of an incoming message. An incoming message with a size less than 4KB is counted as one chunk. An incoming message with a size of 6KB is counted as two chunks.
So sending extremely large messages burns you faster through the daily supported amount of messages (aka chunks) (400.000 for a S1 with 1 unit).
The Azure IoT Edge edge hub module is responsible for sending messages to the IoT Hub. It has some mechanisms for batching in place already (see MaxUpstreamBatchSize) to communicate in a smarter way.
If you interested in the details, check out this blog post about stretching the IoT Edge performance limits.
I hope this makes it a bit easier to understand how the Azure IoT Hub works with messages and chunks.
If the response helped, do "Accept Answer". If it doesn't work, please let us know the progress. All community members with similar issues will benefit by doing so. Your contribution is highly appreciated.