One or more non-transitory computer-readable media storing executable instructions that, when executed by at least one processor (111, 203), cause the at least one processor to: transmit, to a different system via a first connection that uses a first transport layer protocol, one or more first data packets, wherein the first transport layer protocol is a reliable protocol; determine that the first connection is broken or interrupted; based on determining that the first connection is broken or interrupted, buffer one or more second data packets that are unable to be sent to the different system via the first connection; attempt to establish a second connection to the different system, wherein the second connection uses a second transport layer protocol that is different from the first transport layer protocol, wherein the second transport layer protocol is an unreliable protocol; based on determining that the attempt to establish the second connection was successful, synchronize, between a system and the different system, one or more acknowledgement messages for the second data packets and, as part of synchronizing the one or more acknowledgement messages for the second data packets, transmit, receive, or flush one or more buffered data packets starting with a next-expected message sequence number; based on a change from the first transport layer protocol to the second transport layer protocol, change from a first encryption protocol to a second encryption protocol, wherein the first encryption protocol and the second encryption protocol are higher in a stack than the first transport layer protocol and the second transport layer protocol; and based on synchronizing the one or more acknowledgement messages, transmit, to the different system via the second connection that uses the second transport layer protocol, one or more third data packets. transmit, to a different system via a first connection that uses a first transport layer protocol, one or more first data packets, wherein the first transport layer protocol is a reliable protocol; determine that the first connection is broken or interrupted; based on determining that the first connection is broken or interrupted, buffer one or more second data packets that are unable to be sent to the different system via the first connection; attempt to establish a second connection to the different system, wherein the second connection uses a second transport layer protocol that is different from the first transport layer protocol, wherein the second transport layer protocol is an unreliable protocol; based on determining that the attempt to establish the second connection was successful, synchronize, between a system and the different system, one or more acknowledgement messages for the second data packets and, as part of synchronizing the one or more acknowledgement messages for the second data packets, transmit, receive, or flush one or more buffered data packets starting with a next-expected message sequence number; based on a change from the first transport layer protocol to the second transport layer protocol, change from a first encryption protocol to a second encryption protocol, wherein the first encryption protocol and the second encryption protocol are higher in a stack than the first transport layer protocol and the second transport layer protocol; and based on synchronizing the one or more acknowledgement messages, transmit, to the different system via the second connection that uses the second transport layer protocol, one or more third data packets.