1. A method for communicating with a remote system using Internet Protocol (IP) via a computer network, the method comprising: transmitting, by a flow control module configured on a device, a first data packet from a sender to a remote system, the transmitted first data packet including a first transport layer sequence number; transmitting, by the flow control module, a second data packet from the sender to the remote system, the second data packet including a second transport layer sequence number; transmitting, by the flow control module, a third data packet from the sender to the remote system, the third data packet including a third transport layer sequence number; retransmitting, by the flow control module, the first data packet from the sender to the remote system, the retransmitted first data packet including the first sequence number; maintaining, by the flow control module, an ordered list of sequence numbers in order of transmission, the list comprising an entry for each of the transmission of the first, second, and third data packets and the retransmission of the first data packet; receiving, by the flow control module from the remote system, a first acknowledgement packet, the first acknowledgement packet including one of: (i) the second sequence number to indicate receipt by the remote system of the second data packet, or (ii) the third sequence number to indicate receipt by the remote system of the third data packet; receiving, by the flow control module from the remote system, a second acknowledgement packet, the second acknowledgement packet including the first sequence number; and determining, by the flow control module, whether the received second acknowledgement packet acknowledges receipt by the remote system of one of: (i) the transmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the transmission of the first data packet, or (ii) the retransmission of the first data packet, responsive to the entry for the sequence number included in the first acknowledgement packet being closer in the ordered list to the entry for the retransmission of the first data packet.