TCP не может "терпеть" потерю 50% пакетов. Он просто остановится по простой причине: он адаптирует свою скорость передачи в зависимости от потери пакетов. Когда пакеты потеряны, они, как понимают, указывают на перегрузку. Если вы отбрасываете 50% пакетов (скажем, с помощью правила случайного отбрасывания брандмауэра) независимо от трафика, он увидит постоянно снижающуюся пропускную способность.
Кроме того, я сомневаюсь, что интернет-провайдеры формируют ICMP против TCP. Кто-то может это сделать, поскольку есть действительно глупые люди, но это не имеет особого смысла. Большинство из них будет формировать целое соединение, или оно будет «формировать себя» из-за скопления. В любом случае пакеты обычно отбрасываются случайным образом.
Тем не менее, вы можете пропинговать с TCP, но есть несколько предостережений. Во-первых, просто отправьте исходный пакет по TCP-соединению, что вызовет ответ от сервера с открытым портом, но будет рассматриваться как попытка подключения. В идеале вы можете использовать службу "эхо" (TCP-порт 7) ... но на самом деле вы не можете, потому что теперь она везде отключена по умолчанию. В любом случае, если вы можете заставить кого-то включить его для вас на машине, которую вы хотите протестировать, программа может использовать это для проверки времени округления пакетов внутри TCP-соединения.
При этом, возможно, на вашем компьютере установлена команда «tracepath»; он похож на traceroute, но использует не TCP или ICMP, а UDP. Для TCP существуют различные утилиты, вы можете попробовать hping .