Thanks Michael for the reply. And yes, your points are absolutely valid.
We do not assume anything at the client/server as such, we just read the byte-streams, and generate (MQTT) packets out of bytestreams as and when the starting- and ending- boundaries of a (new) MQTT-packet are received. Still, I believe all my 3 questions (step a, step b, and the 8-point story in step c) are independent of this, and would like to hear from you experts as to if my understanding of all those 3 steps is correct, including the all important assumption *Implicit in this workflow is my assumption that SSL too builds up a packet for every BIO_write done over "bio1". * I say it the most important, because our application is MQTT-based, and all our communication is request/response based; we send a packet, and expect an acknowledgement. In other words, if my implicit assumption is correct, then every "BIO_write(bio1)" would generate a complete SSL-packet, which would be available at "bio2" instantly and synchronously - ready to be transferred over the wire. Again, would be thankful from the bottom of my heart, to hear confirmations/rejections regarding my theories in step a), step b) and 8-point-story in step c) as per my previous email. Thanks and Regards, Ajay On Mon, Oct 10, 2016 at 2:39 AM, Michael Wojcik <michael.woj...@microfocus.com> wrote: >> From: openssl-users [mailto:openssl-users-boun...@openssl.org] On Behalf >> Of Ajay Garg >> Sent: Sunday, October 09, 2016 14:12 >> >> Also, for all my cases, Nagle's algorithm has been disabled on the >> client as well as the server, so every write (at client/server) >> constitutes a packet-transferred. > > This assumption is incorrect. Nagle is not the only factor which interferes > with a 1-to-1 mapping between application sends and (IP) packets on the wire. > The peer's receive window, the interface and path MTUs, fragmentation, > transient network failures ... many things can either split an application > message into multiple IP packets or even multiple TCP segments, or cause > multiple application messages to be coalesced into a single TCP segment > (which usually is also a single IP packet, now that path MTU determination > usually works properly). > > You should never assume TCP is anything other than a byte-stream service. An > application that makes any assumptions about how its send operations > translate into TCP segments or IP packets is asking for trouble. > > -- > Michael Wojcik > Distinguished Engineer, Micro Focus > > > > -- > openssl-users mailing list > To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users -- Regards, Ajay -- openssl-users mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users