Во первых:
RDP != VNC, TeamViewer - так как RDP работает в отдельной сессии.
На одном сервере может быть несколько подключений под RDP, они не видят экранов друг друга, их клавишы/мышь передаются независимо, у каждого в свою сессию.
Во вторых:
http передавать, например команды, нажатые клавиши и т.д. через JSON, картинки типа рабочий стол в png/jpg. Зачем для этого использовать отдельный протокол?
http - протокол нижнего уровня.
Если вы поверх него каким то образом собираетесь передавать клавишы и пр. - вам нужно будет придумать поверх http
свой протокол
В третьих:
http текстовый протокол, не бинарный. Он довольно много передает лишней информации.
Для того чтобы обеспечить комфортную работу через сеть, чтобы нажал кнопку и увидел отзыв - лишние звенья в передаче данных ни к чему.
В четвертых:
http не очень хорош как протокол оперативного двустороннего обмена (что и вызвало появление WebSocket).
В пятых:
Team Viewer - http
Это не так
В шестых:
Зачем они используют разные протоколы?
Ну давайте все будем использовать ту технологию что придумана когда-то.
Ну например, ездить на автомобилях без пневматических шин, с деревянными колесами.
Множество протоколов возникает:
а) как процесс совершенствования, как решение каких то дополнительных уникальных проблем.
б) некоторые протоколы, как протокол TeamViewer - закрыты и недоступны для других разработчиков.
Но, к примеру, тот же VNC (это единственных из трех вами упомянутых TeamViewer, VNC, RDP - открытый протокол) - используется в разном софте. Например, в локально запущенных виртуальных машинах для подключения к консоли или у хостеров для подключения к "локальной" консоли сервера клиента.
А вообще: