Возможности уровней
Раз принято решение разделить задачу взаимодействия на подзадачи и организовать протокольное ПО в виде модулей, каждый из которых решает одну из подзадач, возникает вопрос: "какие возможности должен обеспечивать каждый модуль ?". На этот вопрос нелегко ответить по нескольким причинам. Во-первых, при заданном наборе целей и ограничений, приводящем к специфической задаче взаимодействия, можно выбрать организацию, оптимизирующую протокольное ПО для этой конкретной задачи. Во-вторых, даже при рассмотрении общих сервисов сетевого уровня, таких как надежная транспортировка, можно выбрать один из нескольких принципиально отличающихся друг от друга подходов для решения этой задачи. В-третьих, разработка сетевой( или межсетевой) архитектуры и организация протокольного ПО не связаны между собой; можно разрабатывать одно в отрыве от другого.