This is a more generic problem actually in data communication theory, not just a SQL Server thing. One way to tackle it would be to do a 3 or 5 way handshake in the start and find the median time of one ACK. Then use that as Delta for all future communications.
In SQL Server case, you could run a very simple query like SELECT 1
and check how much time it takes to get back results. One pitfall here is to avoid using any low-level mechanism like TCP (in case u have control of the server side too) because executing a query will make sure the total delta you compute includes the time for SQL Server to receive the query and parse it etc. as well.