Я думаю, что вы смешиваете и сопоставляете различные части интернет-стека. Следуя пятислойной сетевой модели (есть также семислойная модель , которую вы можете сравнить),
- Уровень приложений: многие, включая HTTP, RPC и т. Д.
- Транспортный уровень: TCP (существуют другие, включая UDP, ICMP)
- Сетевой уровень: IP
- Ссылочный слой
- Физический уровень
RPC будет находиться на уровне приложения, поэтому я не очень понимаю, как HTML будет задействован.
Относительно RPC:
Он (наряду с другими подобными протоколами, такими как RMI ) Java дает вам способ прозрачного вызова процедуры, расположенной на другом компьютере в сети, как если бы она была локальной. Это хорошо? Внешне это может показаться, что распределенные вычисления проще, но это может быть иллюзией. Потому что обращение с распределенной системой как с одним компьютером может быть очень опасным способом программирования.
Уолдо и др. очень хорошо описывают проблему (серьезно, это отличная статья). Распределенные системы имеют проблемы, которых нет в автономных системах: задержка; частичный сбой; разные модели доступа к памяти. Это «жесткие части» распределенных вычислений. RPC решает «простую часть»: сортировку и демарширование данных, а также обработку жестких частей, что, скорее всего, приводит к ложному ощущению безопасности.