So is a connection really just the maintained state in both the sender and receiver machines. What is maintained in that state? The ACK flags and the IP of the other machine?
The IP, port and sequence numbers (which is basically a starting random number + number of bytes sent/received) of both sides of the connection, and this is maintained by both sides.