Концептуальные уровни протокольного ПО
Представляйте себе, что модули протокольного ПО на каждой машине как бы поставлены друг на друга и находятся на разных уровнях, как на рисунке 10.1 Каждый уровень отвечает за одну из частей большой проблемы.
----------------- ----------------- | ОТПРАВИТЕЛЬ | | ПОЛУЧАТЕЛЬ | |---------------- |---------------- | Уровень n | | Уровень n | |---------------| |---------------| | .... | | .... | |---------------| |---------------| | Уровень 2 | | Уровень 2 | |---------------| |---------------| | Уровень 1 | | Уровень 1 | |_______________| |_______________| | ^ | | ---V--------------------------|--- | СЕТЬ | ----------------------------------
Рисунок 10.1 Концептуальная организация протокольного ПО в виде уровней.
Концептуально, посылка сообщения от прикладной программы на одной машине к прикладной программе на другой машине означает последовательную передачу сообщения вниз через соседние уровни протокольного ПО на машине получателя, передачу сообщения по сети и передачу сообщения вверх через соседние уровни протокольного ПО на машине получателя.
На практике, протокольное ПО гораздо более сложное, чем это может показаться на основании рисунка 10.1. Каждый уровень принимает решение о корректности сообщения и выбирает соответствующее действие на основании типа сообщения или адреса назначения. Например, один из уровней на принимающей машине должен решить, оставить сообщение или передать его дальше другой машине. Другой уровень должен решить, какая прикладная программа должна принять сообщение.
Чтобы понять разницу между концептуальной организацией протокольного ПО и деталями реализации, рассмотрим их сопоставление, показанное на рисунке 10.2. Концептуальная диаграмма на рисунке 10.2а показывает Межсетевой уровень между высокоуровневым протокольным уровнем и уровнем сетевого интерфейса. Реальная диаграмма на рисунке 10.2б показывает, что ПО IP может взаимодействовать с несколькими модулями протоколов высокого уровня и с несколькими сетевыми интерфейсами. Хотя диаграмма концептуального разделения протоколов на уровни не показывает все детали, она помогает объяснить базовые идеи. Например, рисунок 10.3 показывает уровни протокольного ПО, используемые сообщением, пересекающим три сети. Диаграмма показывает только уровни интерфейса с сетью и Межсетевого Протокола в шлюзах, так как только эти уровни требуются при получении, маршрутизации и отправке дейтаграмм. Мы понимаем, что любая машина, присоединенная к двум сетям, должна иметь два модуля интерфейса с сетью, хотя диаграмма концептуального разделения на уровни показывает только один уровень интерфейса с сетью в каждой машине.
---------------------- ------------ ------------ ------------ | уровень протоколов| |Протокол 1| |Протокол 2| |Протокол 3| | высокого уровня | ---------\-- -----|------ --/--------- ---------------------- \ | / | уровень межсетево-| \ -----|------ / | го протокола | |Модуль IP | ---------------------- / ------------\ | уровень интерфейса| / | \ | с сетью | ------------ ------------ ------------ ---------------------- |Интерфейс1| |Интерфейс2| |Интерфейс3| (а) ------------ ------------ ------------ (б)
Рисунок 10. 2 Сопоставление разделения на концептуальные уровни (а) и реальной ситуации с организацией ПО, использующей несколько сетевых интерфейсов ниже IP и несколько протоколов выше него (б).
Как показывает рисунок 10.3, отправитель на исходной машине передает сообщение, которое уровень IP помещает в дейтаграмму и посылает по сети 1. На промежуточных машинах дейтаграмма передается вверх до уровня IP, который отправляет ее обратно вниз и из машины( в другую сеть). Только когда она достигает конечного назначения, машина заставляет IP выделить сообщение и передать его на верхние уровни протокольного ПО.
------------- ------------- ------------- ------------- |Отправитель| | | | | |Получатель | | | | | | | | | ^ | ------V------ | | | | ------|------ | другие ...| | | | | | другие ...| ------------- ------------- ------------- ------------- | Уровень IP| |Уровень IP| | Уровень IP| | Уровень IP| ------------- ------------- ------------- ------------- | Интерфейс | | Интерфейс| | Интерфейс | | Интерфейс | ---------|--- -^-------|-- --^--------|- ---^--------- | | | | | | --V------| -V------|- V------|-- / \ / \ / \ | Сеть 1 | | Сеть 2 | | Сеть 3 | \ / \ / \ / ---------- ---------- ----------
Рисунок 10.3 Путь сообщения, пересекающего Интернет от отправителя через две промежуточные машины к получателю. Промежуточные машины только посылают дейтаграмму до уровня IP в ПО.