HTTP не является альтернативой TCP. Это протокол, построенный поверх TCP.
Пользовательские интерактивные протоколы могут быть намного более эффективными при реализации на TCP, чем на HTTP, потому что HTTP работает на довольно простой базе запросов / ответов.
На чистом TCP-соединении оба конца могут отправлять сообщения в любое время. По HTTP сервер не может активно отправить сообщение клиенту. Необходимо подождать, пока клиент отправит запрос.
Преимущество HTTP заключается в том, что он почти универсален: для всех языков существуют серверные и клиентские библиотеки, хорошо понятны механизмы кэширования и прокси-сервера, а также встроено множество механизмов согласования контента.
Так что это традиционный компромисс между абстракцией высокого уровня или нижнего уровня:
- низкоуровневая абстракция (TCP) обеспечивает высокую гибкость и возможность реализации практически всего, в то время как это не так просто для использования
- высокоуровневая абстракция (HTTP) предоставляет больше встроенных функций и их легче поддерживать, но добавить дополнительные функции сложнее