"Надежный" не означает одно и то же для всех. Надежность для TCP означает, что если вы используете его в сетях с потерями или в сетях, которые повреждают и / или переупорядочивают пакеты, то вы не будете получать искаженные данные и по существу получите хорошие данные в конце.
Проблема в том, что TCP отстой, и хотя он работает в этих случаях, он просто ужасно медленный. Поэтому, когда вы используете сырой TCP на каналах, которые регулярно теряют 0,5% пакетов, вы получите гораздо меньшую производительность, чем теоретическая скорость передачи данных (link_data_rate / (1 - скорость потери пакетов)) на одном канале, из-за предположения TCP, что все потери пакетов вызваны перегрузкой.
TCP был разработан для сетей, которые редко теряют пакеты, поэтому TCP должен терпеть только потерю пакетов.
Одна из задач, связанных с надежной связью на втором уровне, заключается в основном здесь, чтобы компенсировать TCP-неудачу. Они не должны быть на 100% надежными, как TCP. Например, 802.11 допускает потерю пакета, если количество повторных передач превысит определенный порог, тогда как TCP не будет и будет повторять передачу вечно, пока приложение или пользователь не решат, что этого достаточно.
Надежная связь в слое 2 в основном для скорости. Например, в 802.11, механизм подтверждения также используется узлами, чтобы они могли уменьшить скорость модуляции, если ухудшается беспроводная связь. Когда 802.11 не может сделать ACK (например, для многоадресных кадров), он обычно использует самую низкую частоту модуляции, которая часто составляет 1 Мбит / с, чтобы получить максимальную надежность при огромных затратах скорости.
Иногда, когда у вас есть сеть с множеством крайне ненадежных каналов, вам может потребоваться надежность второго уровня, в противном случае весь путь может иметь много ненадежных каналов, а коэффициент потери пакетов пути может стать слишком высоким, чтобы быть полезным. Но это часто не так в ваших типичных сетях.
Исторически сложилось так, что TCP поднялся, потому что он позволял маршрутизаторам терять пакеты. Таким образом, маршрутизаторы были проще, быстрее, и глобальный результат состоял в том, что обработка надежности на конечных точках имела лучшую производительность, чем обработка в базовой сети.