Click on image if not clear |
As we discussed about how a connection being established between two devices in TCP ( please refer the topic 3 way handshake concept ), The next immediate step is to start transferring data packets. It just happen like this.
Step 1. Establishing Connection
A -->>-->>-->>-->>-- Synchronization -->>-->>-->>-->>-- B
A --<<--<<--Acknowledgement + Synchronization--<<--<<--B
A-->>-->>-->>-->>--Acknowledgement-->>-->>-->>-->>--B
A ---<<--<<--<<---Connection Established---<<--<<--<<---B
Step 2. Data Transferring
A -->>-->>-->>-->>-->>--Packet 1-->>-->>-->>-->>-->>--B
A--<<--<<--<<--<<--Acknowledgement 2--<<--<<--<<--<<--B
Remember that when B receives the packet number 1, B send Acknowledgement number 2
A--->>-->>-->>-->>---Packet 2, 3, 4, 5--->>-->>-->>-->>---B
A--<<--<<--<<--<<--Acknowledgement 6--<<--<<--<<--<<--B
A->>-->>-->>---Packet 6, 7, 8, 9, 10, 11, 12, 13-->>-->>-->>-B
A--<<--<<--<<--<<--Acknowledgement 11--<<--<<--<<--<<--B
See the above incident, A sends packet number 6 to 13 but B sends the acknowledgement number 11. That means B has only received packets up to number 10. Then A have to send lost packets again.
A->>-->>-->>-->>---Packet 11, 12, 13, 14->>-->>-->>--->>--B
A--<<--<<--<<--<<--Acknowledgement 15--<<--<<--<<--<<--B
Likewise A always wants to finish sending packets as possible as early. So A gradually increase the number of packets sending in one time. But at a certain level B gets busy and fails to handle all the packets, Then B send a message to A to say that the number of packets sending in one time is too much, so please decrease the number of packets. Then A decrease the number of packets and in such case the data flowing rate is increasing and decreasing automatically. If you observe the data flowing rate via a graphical chart you can see the rate is going up and down like this.
This process calling windowing (automatic flow control) in TCP