Модель OSI

58

В целях формализации процесса взаимодействия открытых систем OSI (Open System Interconnection) Международная организация по стандартизации (International Organization for Standardization, ISO) разработала для стандартизированной сети модель, которая заменила бы TCP/IP, DECNet и другие протоколы как основной сетевой протокол, использующийся в Интернете. Однако из-за сложности протокола OSI созданы и внедрены в эксплуатацию лишь немногие реализации. TCP/IP был гораздо проще, и поэтому он широко используется и сейчас. Но многие новые идеи протокола OSI можно обнаружить в IPv6, следующей версии IP.

Хотя протокол OSI не получил широкого распространения, семиуровневая модель OSI имела огромный успех, и она теперь используется как справочная модель, чтобы описать различные сетевые протоколы и их функциональные возможности.

Уровни модели OSI выделяют основные задачи, которые должны выполняться сетевыми протоколами, и описывают взаимодействие сетевых приложений. У каждого уровня есть особое назначение, и каждый уровень связан с уровнями, находящимися непосредственно выше и ниже его. OSI определяет следующие семь уровней:

На следующем рисунке показана связь между двумя машинами. Здесь можно увидеть, как данные опускаются по стеку протоколов (protocol stack) на отправителе и поднимаются по нему на получателе. Сообщение, отправленное приложением первой машины, содержащей букву D. Прикладной уровень (уровень 7) присоединяет к сообщению заголовок (названный на рисунке Н7) и передает сообщение представительскому уровню (уровень 6), который сначала добавляет к сообщению Н6, а затем передает его сеансовому уровню (уровень 5). Это продолжается до тех пор, пока сообщение со всеми его заголовками не достигнет физического уровня (уровень 1) и не будет передано получателю. На получающей стороне каждый уровень выполняет всю необходимую обработку и, удалив соответствующий заголовок, передает сообщение вверх на следующий уровень. В конце концов приложение-получатель получает доступ к исходным данным, отправленным приложением первого компьютера:

Модель OSI

Теперь, когда нам стала понятна концепция семи уровней, мы можем рассмотреть функциональность каждого уровня более подробно. Начнем с самого низа и будем продвигаться вверх.

Физический уровень содержит физическую среду, в том числе требования к кабелям, соединители, спецификации интерфейсов, спецификации концентраторов, повторителей и т. д. На этом уровне точно определяется, какой физический сигнал будет использоваться для посылки "1", а какой будет представлять "0".

МАС-адрес, о котором уже рассказывалось в предыдущей статье, относится к уровню 2. Узлы локальной сети отправляют друг другу сообщения, используя IP-адреса, а они должны транслироваться в соответствующие МАС-адреса канальным уровнем. Протокол разрешения адресов (Address Resolution Protocol, ARP) транслирует IP-адреса в МАС-адреса. Кэш, содержащий известные МАС-адреса, ускоряет этот процесс, и его можно исследовать с помощью утилиты arp. Команда arp -а показывает МАС-адреса всех недавно использованных узлов в кэше ARP.

Утилита arp также позволяет установить соответствие между IP-адресами и МАC-адресами, с тем чтобы ARP-запросы для МАС-адресов больше не требовались. Однако это соответствие будет нарушено при замене сетевой платы, поэтому им следует пользоваться осторожно.

Другие обязанности канального уровня состоят в отправке и получении сообщений и обнаружении ошибок. В Ethernet также требуется обнаруживать конфликты, что мы уже обсуждали.

Коммутатор сети действует на канальном уровне, фильтруя сообщения в соответствии с МАС-адресами их получателей.

Уровнем выше над канальным уровнем находится сетевой уровень. На уровне 3 для соединения с другими узлами используется логическая адресация. МАС-адреса уровня 2 могут использоваться только внутри локальной сети, а обращаясь к узлам глобальной сети, надо использовать адресацию уровня 3. Internet Protocol (IP) — это протокол уровня 3; для идентификации узлов сети он использует IР-адреса. Маршрутизаторы выполняют маршрутизацию трафика между сетями на уровне 3.

На сетевом уровне хосты идентифицируются логическими адресами. На транспортном уровне идентифицируется приложение через так называемую конечную точку (endpoint). В протоколе TCP конечная точка задается комбинацией номера порта (port number) и IP-адреса.

Транспортный уровень различается в зависимости от того, используем ли мы надежную или ненадежную связь. При надежной связи, если сообщение было отправлено, но не было корректно получено, вырабатывается ошибка, в то время как при ненадежной связи сообщение отправляется, но никакой проверки, было ли оно вообще получено, не выполняется. При надежной связи транспортный уровень отвечает за отправку подтверждений на пакеты данных, что позволяет повторно передавать сообщения в случае искажения или потери данных, браковать дублирующие сообщения и т. д.

Сетевая связь на транспортном уровне может также различаться в зависимости от того, ориентирована ли она на соединения, или соединения отсутствуют:

Протокол TCP использует ориентированный на соединения механизм связи, в то время как в UDP (User Datagram Protocol) используется механизм связи без организации соединений. Ориентированная на соединения связь является надежной, поскольку в этом случае отправляются подтверждения и сообщения посылаются повторно, если данные не получены или по какой-либо причине они были искажены.

Связь без установления соединений может быть полезна при широковещательной передаче, когда сообщения отправляются нескольким узлам. В этом случае доставка сообщения не гарантируется. Если необходим надежный обмен сообщениями, надежность может обеспечить протокол более высокого уровня, подключенный поверх механизма без установления соединения.

В модели OSI сеансовый уровень определяет обслуживание приложения, например, вход в приложение и выход из приложения. Сеанс представляет собой виртуальное (логическое) соединение между приложениями. Соединение сеансового уровня не зависит от расположенного ниже физического соединения на транспортном уровне, виртуальное соединение может существовать дольше, чем соединение на транспортном уровне. Для одного соединения сеансового уровня может потребоваться несколько соединений транспортного уровня.

Эти функциональные возможности мы сравниваем с возможностями, которые предоставляют сеансовые объекты ASP.NET. Сеансовые объекты существуют, пока сеанс не закончится по тайм-ауту (обычно через 20 минут), независимо от ТСР-соединений более низкого уровня.

Представительский уровень используется для форматирования данных в соответствии с требованиями приложений. На этом уровне обычно выполняются шифрование, дешифрование и сжатие.

Прикладной уровень—самый верхний уровень модели OSI. Этот уровень содержит приложения, в которых используются сетевые средства. Приложения могут выполнять такие задачи, как передача файлов, печать, электронная почта, Web-браузинг и т. д. Учебные приложения, которые мы будем создавать, принадлежат этому уровню.

Пройди тесты
Лучший чат для C# программистов