Модель уровней TCP/IP
Вторая основная модель разделения протоколов на уровни не была разработана комитетом по стандартам, а появилась в результате исследований, приведших к появлению стека протоколов TCP/IP. После небольшой доработки модель МОС может быть приспособлена для описания схемы деления на уровни в TCP/IP, но базовые предпосылки этих схем сильно различаются, что позволяет говорить об их различии.
На концептуальном уровне ПО TCP/IP организовано в виде 4 уровней, опирающихся на пятый уровень оборудования. Рисунок 10.5 показывает концептуальные уровни, а также форму, в которой передаются данные между ними.
Концептуальный уровень | Объекты, передаваемые между уровнями |
Прикладной (ftp, email, http, telnet) | <---------Сообщения или потоки |
Транспортный (tcp, udp,) | <---------Пакеты транспортного протокола |
Межсетевой (ip, icmp) | <---------Дейтаграммы IP |
Уровень канала данных (arp, ethernet, …) | <---------Кадры конкретной сети |
· Уровень канала данных. ПО TCP/IP самого низкого уровня состоит из уровня интерфейса с сетью, ответственного за прием IP-дейтаграмм и передачу их по конкретной сети. Интерфейс с сетью может состоять из драйвера устройства (когда сеть - это ЛВС, к которой машина присоединена напрямую) или сложной подсистемы, использующей свой протокол канального уровня (когда сеть состоит из коммутаторов пакетов, взаимодействующих с ГВМ, используя HDLC).
· Прикладной уровень. На самом верхнем уровне пользователи вызывают прикладные программы, которые обращаются к сервисам, доступным в среде Интернета TCP/IP. Приложение взаимодействует с протоколами транспортного уровня для передачи или приема данных. Каждая прикладная программа выбирает тип транспортировки, который ей требуется - либо последовательность отдельных сообщений, либо непрерывный поток байт. Прикладная программа передает данные транспортному уровню в требуемой форме для доставки.
· Транспортный уровень. Основной задачей транспортного уровня явялется обеспечение взаимодействия между прикладными программами. Такое взаимодействие часто называется межконцевое (end-to-end). Транспортный уровень может управлять потоком информации. Он может также обеспечивать надежную передачу, гарантируя, что данные прибыли без ошибок и в порядке их передачи. Для этого он заставляет принимающую сторону посылать обратно подтверждения, и повторно передает потерянные пакеты. Транспортное ПО делит передаваемый поток данных на небольшие части( называемые пакетами согласно терминологии ISO) и передает каждый пакет вместе с адресом назначения следующему уровню. Транспортный уровень должен принимать данные от нескольких прикладных программ и посылать их более нижнему уровню. Для этого он добавляет дополнительную информацию к каждому пакету, включая коды, идентифицирующие прикладную программу, пославшую его, и прикладную программу-получателя, а также контрольную сумму. Принимающая машина использует контрольную сумму для проверки целостности принятого пакета, а код назначения - для идентификации прикладной программы, которой он должен быть передан.
· Межсетевой уровень. Как мы уже видели, Межсетевой уровень управляет взаимодействием между машинами. Он принимает запрос на посылку пакета от транспортного уровня вместе с указанием машины, на которую этот пакет должен быть послан. Он инкапсулирует пакет в IP-дейтаграмме, заполняет заголовок дейтаграммы, использует алгоритмы маршрутизации для определения того, можно ли послать дейтаграмму напрямую, или следует послать ее шлюзу, и передает дейтаграмму соответствующему интерфейсу с сетью. Межсетевой уровень также обрабатывает приходящие дейтаграммы, проверяет их корректность, и использует алгоритм маршрутизации для того, чтобы решить, нужно ли обработать дейтаграмму локально или ее следует переправить дальше. Для дейтаграмм, адресованных локальной машине, ПО межсетевого уровня удаляет заголовок дейтаграммы и определяет, какой из транспортных протоколов будет обрабатывать пакет. Наконец, межсетеовй уровень посылает сообщения об ошибках ICMP по мере необходимости и обрабатывает все приходящие сообщения ICMP.