ACK будут поступать примерно один раз на два сегмента, которые вы отправляете (если все в порядке). Они сообщают вам, что клиент принял данные. Поэтому, полагая, что время поездки от клиента к серверу одинаковое, deltaAckNum/deltaT должно дать разумную оценку того, насколько велика средняя скорость. Очевидно, чем больше пакетов эти два сегмента ACK охватывают, тем лучше.
Вы можете получить оценку RTT в различные моменты времени, если вы посмотрите на параметр Timestamp - когда одна сторона отправляет временную метку в TSVal, другая передает ее в поле TSEcr возвращаемых пакетов. Хотя это не просто отсрочка от клиента к серверу, это помогает получить ощущение.
Хотя, есть несколько «но» говоря:
1), если вы специально не пытаются увеличить производительность передачи огромных файлов, потому что кто-то жаловался, что вполне может быть, что Узким находится в другом месте стека. (например, зависимость элементов друг от друга, которые требуют, чтобы все они были загружены, чтобы быть всегда видимыми и т. д.). Для отладки это будет полезно использовать YSlow.
2) Возможно, клиент находится за прокси-подобным промежуточным полем, который будет ACK для данных на уровне TCP для них, но сам по себе делает некоторые «умные» вещи (форматирование/фильтрация содержимого/etc и т. Д.).