Без заголовка
Протоколы -- это именно интерфейсы между наборами модулей. Модули (программные, а не данных), реализующие парсинг или синтез данных в формате семантик веба; модули реализующие набор протоколов каждого из уровней интернет-стека.
В учебниках каждый уровень видит только соседний и общается только через протокол. В жизни, конечно, всё кубарем -- каждый оптимизирует, как может (ибо чем универсальней протокол, тем он менее эффективен, и хочется просто залезть и сделать всё "руками", безо всяких "модулей". Так и делают, иногда документируя, а иногда и нет).
В программировании всё ещё сложней: в языках там различают гранулярность и модульность, плюс есть не столько модульность, сколько определение одних данных над другими (типа XML-RDF). Гранулярность синтаксическая, а модульность интерфейсная -- но хрен редьки не слаще. А про данные -- всё одно волнует набор модулей, реализующих синтаксис всех этих вложенных языков, парсеры да билдеры.
Так что стек протоколов это стек интерфейсов, а стек модулей реализует стек протоколов -- они никак не отождествляются. Это две стороны одной медали.