A method, comprising: transmitting, from an upper layer protocol, ULP, of an initiator entity to a reliable transport protocol, RT, of the initiator entity, a plurality of push requests for pushing outgoing data packets to a target entity (920, 940) over a connection, and one or more pull requests for pulling incoming data packets from the target entity (920, 940) over the connection, the plurality of push requests including solicited and unsolicited push requests; determining, by the RT of the initiator entity, that at least one of the plurality of push requests is to be transmitted to the target entity (920, 940) as a solicited push request, transmitting, by the RT of the initiator entity to the target entity (920, 940), the at least one of the plurality of push requests and the one or more pull requests, and assigning, by the initiator entity (910, 930) to each of the plurality of push requests and the one or more pull requests a Packet Sequence Number, PSN, according to an order of transmission, the at least one of the plurality of push requests requesting first outgoing data packets to be stored at the target entity (920, 940) via a reliable transport, RT, protocol layer (330, 340), the RT protocol layer (330, 340) including a solicitation sublayer (332, 342) and a sliding window sublayer (342, 344), wherein the sliding window sublayer (342, 344) implements one or more sliding windows (410, 420) to keep track of a predetermined number of packets to be transmitted and acknowledged over the connection; receiving, by the RT of the initiator entity from the target entity (920, 940), one or more push grant packets in response to the at least one of the plurality of push requests; transmitting, by the RT of the initiator entity to the target entity (920, 940), the first outgoing data packets to be stored at the target entity (920, 940) in response to the one or more push grant packets; and sending, by the target entity (920, 940) to the RT of the initiator entity, at least two acknowledgement, ACK, packets indicating that outgoing data packets have been received and stored by the target entity (920, 940), wherein the at least two ACK packets reference one or more PSNs assigned by the initiator entity (910, 930) to each of the plurality of push requests, wherein the initiator entity (910, 930) keeps track of the assigned PSNs using the one or more sliding windows (410, 420), and wherein the at least two ACK packets are received by the RT of the initiator entity and an ACK packet is sent to the target entity for acknowledging data pulled from the target entity, in a second order different from the order of the plurality of transmitted push requests and the one or more pull requests. transmitting, from an upper layer protocol, ULP, of an initiator entity to a reliable transport protocol, RT, of the initiator entity, a plurality of push requests for pushing outgoing data packets to a target entity (920, 940) over a connection, and one or more pull requests for pulling incoming data packets from the target entity (920, 940) over the connection, the plurality of push requests including solicited and unsolicited push requests; determining, by the RT of the initiator entity, that at least one of the plurality of push requests is to be transmitted to the target entity (920, 940) as a solicited push request, transmitting, by the RT of the initiator entity to the target entity (920, 940), the at least one of the plurality of push requests and the one or more pull requests, and assigning, by the initiator entity (910, 930) to each of the plurality of push requests and the one or more pull requests a Packet Sequence Number, PSN, according to an order of transmission, the at least one of the plurality of push requests requesting first outgoing data packets to be stored at the target entity (920, 940) via a reliable transport, RT, protocol layer (330, 340), the RT protocol layer (330, 340) including a solicitation sublayer (332, 342) and a sliding window sublayer (342, 344), wherein the sliding window sublayer (342, 344) implements one or more sliding windows (410, 420) to keep track of a predetermined number of packets to be transmitted and acknowledged over the connection; receiving, by the RT of the initiator entity from the target entity (920, 940), one or more push grant packets in response to the at least one of the plurality of push requests; transmitting, by the RT of the initiator entity to the target entity (920, 940), the first outgoing data packets to be stored at the target entity (920, 940) in response to the one or more push grant packets; and sending, by the target entity (920, 940) to the RT of the initiator entity, at least two acknowledgement, ACK, packets indicating that outgoing data packets have been received and stored by the target entity (920, 940), wherein the at least two ACK packets reference one or more PSNs assigned by the initiator entity (910, 930) to each of the plurality of push requests, wherein the initiator entity (910, 930) keeps track of the assigned PSNs using the one or more sliding windows (410, 420), and wherein the at least two ACK packets are received by the RT of the initiator entity and an ACK packet is sent to the target entity for acknowledging data pulled from the target entity, in a second order different from the order of the plurality of transmitted push requests and the one or more pull requests.