Почему так происходит, например, по UA-IX летает 90-100 Мбит в секунда, а в Европу, а еще лучше в США — каких то 10-40-70 Мбит. Скорость передачи по TCP соединению очень зависит от ping’а, потому чтоTCP соединение имеет параметр гарантированной доставки, то есть каждый пакет TCP посылает подтверждение о приеме-доставке. Потому что TCP шлет подтверждения. Если ждать ответа на каждый пакет, никакой супер-быстрый канал до далекого сервера не даст большой скорости. А величина пинга как раз и зависит от количества промежуточных узлов. Если не ждать (как в udp) — начнут теряться пакеты, потому что где-то по дороге пропускная способность может оказаться несколько ниже, чем у вашей гигабитной сетевой. И от алгоритма, который выбирает оптимальную скорость передачи зависит очень многое. На данный момент правильное решение — cubic tcp для unix и Compound TCP (CTCP) для windows.
Compound TCP (CTCP) — алгоритм, разработанный Microsoft и впервые включенный в сетевой стек Windows Vista и Window Server 2008 TCP. Разработан для агрессивного увеличения TCP окна (congestion window) для оптимизации TCP скорости передачи данных при большой задержке (en:Bandwidth-delay_product) с минимальными отклонениями от стандарта (в отличие от HSTCP). Реализация существует для Linux, а также для Windows XP и Windows Server 2003 с помощью обновления.[1]