There are three reasons for the difference:
1. For each connection, Synthetic Classic summarizes the total end-to-end time and the number of Bytes downloaded for all the objects downloaded within the connection. There can be multiple objects downloaded per connection. Each object will be marked for which connection it is from. For example:
The (C0) means it was downloaded from Connection 0.
That is why for Number of bytes downloaded, summing up all the columns will get twice what the waterfall chart reports:
3541017(the waterfall chart number)*2=7082034( the CSV calculation)
If only summing up the bytes downloaded for each connection or only for objects, you will get the same value.
2. The response time in the waterfall chart is not a mathematical summary but the actual time taken. If there are objects downloaded spontaneously, then the actual time is shorter than the mathematical summary.
3. The total end-to-end time is a different calculation than response time. Total end-to-end time is the time taken for all the objects within this connection to download. It only includes the actual time taken for 1st byte time and content download time. It is only part of total response time.
The DNS lookup time, Connection time, and SSL time are all displayed separately at the connection level. That is why you only see them listed for each connection but not for each object. These are real time, too, but again, the mathematical summary of all connection level time cannot reflect the scenarios that some objects for different connections are downloaded spontaneously or different connections are connected spontaneously.
In summary, the mathematical summary for object and connection level time cannot reflect or equal to the real response time.