What's the typical sequence of events in a TCP connection? Let's say Alice is opening a TCP session with Bob. (Enjoy the sparkling ASCII graphics.)
Alice Bob (open phase) SYN ---> <--- SYN+ACK (no data in packets here) SYN+ACK ---> (data transfer) PSH ---> (PSH packets have data) <--- ACK (Bob is just ACKing without sending data back) PSH+ACK ---> <--- PSH+ACK (ACKs can be sent along with data) PSH+ACK ---> ... (close phase) FIN ---> <--- FIN+ACK (also no data in packets here) FIN+ACK ---> (closed)
At this point the connection remains in TIME_WAIT state for a time to prevent stray packets from this connection from being accepted