Короче, есть три случая.
1. Физический интерфейс ограничивает пропускную способность.
Если сетевой интерфейс ограничен, то это предел (duh:p), и задержка не имеет значения, как говорит @Ramhound.
2. Окно ограничено
Если настроенное максимальное окно TCP на обоих концах ограничивает, то
T <= min(rwnd,cwnd)/RTT
3. Потеря пакета ограничена
Потеря пакета также может ограничивать пропускную способность (ограничивая окно отправки). Из Макроскопического поведения алгоритма предотвращения перегрузки TCP мы узнаем, что мы можем получить верхнюю границу пропускной способности
T <= (MSS / RTT) * C/sqrt(p),
где p - коэффициент потери пакетов, а C - константа (объяснение см. в статье). Это не точно, есть ряд важных предположений, и разные разновидности TCP тоже влияют на это - но мы видим, что потеря пакетов влияет на пропускную способность.
Я не совсем понимаю, как это поможет вам написать программу на C #, но надеюсь, что это даст вам кое-что :)