Сетевые уровни


Каждый уровень решает определенные задачи в сети и взаимодействует только с вышестоящим и нижестоящим уровнями. Изучающие TCP/IP часто смеются, когда слышат, что многоуровневая организация упрощает сетевые взаимодействия, тем не менее это так. Прямо сейчас важно запомнить, что каждый уровень взаимодействует только с двумя соседними уровнями, расположенными выше и ниже.

В классической диаграмме сетевых протоколов OSI представлено семь уровней. Это полностью законченная схема, охватывающая все ситуации. Однако Интернет — это только одна из ситуаций, и эта книга не посвящена работе в сети в общем. Мы ограничимся обсуждением таких сетей TCP/IP, как Интернет и типичные корпоративные сети, поэтому будем рассматривать только четыре уровня.

Физический уровень

Самый нижний уровень — физический. Он образован сетевой картой и проводом, оптоволокном или радиоканалом. Кроме того, этот уровень включает в себя коммутатор (switch), сетевой концентратор (hub) или базовую станцию, провода, идущие к маршрутизатору, а также оптоволокно, соединяющее ваш офис с телефонной компанией. Коммутатор телефонной компании так же является частью физического уровня, как и оптоволокно и провода, соединяющие континенты. Любые каналы связи являются частью физического уровня. С этого момента мы будем называть физический уровень проводом, хотя это может быть любая другая среда распространения информации.

Этот уровень — самый простой для понимания. Если провод не поврежден и соответствует требованиям, задаваемым физическим протоколом, то дело в шляпе. Если нет, дело табак. Без физического уровня работа сети становится невозможной, точка, конец истории. Одна из функций маршрутизаторов Интернета состоит в том, чтобы преобразовывать пакеты при переходе с физического уровня одного вида на физический уровень другого вида, например из Ethernet в T1/E1. На физическом уровне отсутствует какая-либо логика, он не способен принимать решения, все, что передается через этот уровень, исходит от уровня физического протокола.

Уровень физического протокола

На уровне физического протокола дело становится интереснее. Физический протокол обеспечивает преобразование информации в фактические нули и единицы, которые передаются через физический уровень соответствующим образом. Например, Ethernet использует адреса протокола управления доступом к среде (Media Access Control, MAC) и протокол разрешения адресов (Address Resolution Protocol, ARP); для коммутируемого соединения используется протокол «точка-точка» (Point to Point Protocol, PPP). В дополнение к популярным физическим протоколам Ethernet и PPP, FreeBSD поддерживает и другие протоколы, включая асинхронную систему передачи (Asynchronous Transfer Mode, ATM), протокол высокого уровня управления каналом передачи данных (High Level Data Link Control, HDLC) и протокол межсетевого обмена пакетами (Internetwork Packet Exchange, IPX), а также такие комбинации протоколов, как РРР через Ethernet (PPPoE), который используется в широкополосных сетях. Наличие поддержки всех этих протоколов в системе FreeBSD не означает, что она поддерживает все физические протоколы, которые когда-либо использовались. Если у вас имеются какие-то нетипичные требования, обращайтесь к документации по вашей версии FreeBSD, чтобы узнать, поддерживаются ли требуемые протоколы.

Некоторые физические протоколы имеют реализации, поддерживающие самые разные физические уровни. Например, протокол Ethernet может использоваться для передачи данных по биаксиальным, коаксиальным кабелям; по витой паре САТЗ, САТ5, САТ6, САТ7; по оптоволоконным линиям; через радиоэфир и посредством почтовых голубей. С незначительными изменениями в драйверах устройств физический протокол может использоваться в любых типах линий передачи данных. Это один из примеров, как многоуровневая организация позволяет упростить реализацию сетевых взаимодействий. Далее мы подробно будем обсуждать протокол Ethernet как наиболее часто используемый для организации работы систем FreeBSD в сети. Разобравшись с протоколом Ethernet в системе FreeBSD, вы сможете управлять и другими протоколами, разумеется, как только вы начнете их понимать!

Физический протокол обменивается информацией с физическим уровнем и сетевым уровнем (уровнем логического протокола).

Сетевой уровень

«Сетевой уровень? Разве это не вся сеть целиком?»

Да, но сетевой уровень более специфичен. Он отвечает за обеспечение связи между узлами сети и отвечает на такие вопросы, как: «Где искать другие узлы сети?» и «Можно ли соединиться с каким-то конкретным узлом сети?». Этот логический протокол обеспечивает непротиворечивый интерфейс для программ, использующих сетевые соединения, независимо от типа физического уровня. Сетевой уровень Интернета основан на использовании протокола IP (Internet Protocol). В соответствии с протоколом IP каждому узлу сети присваивается уникальный адрес*, который называется IP-адресом, по которому он может быть обнаружен любым другим узлом в сети.

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

Транспортный уровень

Транспортный уровень имеет дело с реальными данными для реальных приложений и, возможно даже, для реальных людей. На транспортном уровне используются три основных протокола — ICMP, TCP и UDP.

Протокол управляющих сообщений Интернета (Internet Control Message Protocol, ICMP) управляет передачей сообщений, обеспечивающих взаимодействие между узлами сети с присвоенными IP-адресами. Если протокол IP — это способ добраться до требуемого адреса, то ICMP — это своего рода светофор и дорожный знак, обозначающий выезд на магистраль. В большинстве случаев протокол ICMP работает совершенно незаметно, и вам никогда не придется вспоминать о его существовании.

Другие, широко известные транспортные протоколы, — это протокол пользовательских дейтаграмм (User Datagram Protocol, UDP) и протокол управления передачей данных (Transmission Control Protocol, TCP). Насколько широко они распространены? Скажем так, комплекс протоколов Интернета вообще называется TCP/IP. Эти протоколы предоставляют такие возможности, как мультиплексирование по номеру порта и передачу пользовательских данных. UDP — это исключительно транспортный протокол, предоставляющий минимальный объем возможностей, необходимых для передачи данных через сеть. TCP обеспечивает более широкие возможности, такие как определение заторов и проверку целостности.

Помимо этих трех, существует еще множество протоколов, работающих поверх IP. Полный перечень транспортных протоколов, основанных на механизме IP, можно найти в файле /etc/protocols. Здесь не удастся отыскать протоколы, не использующие IP, такие как LAT компании Digital, но здесь перечислено огромное число протоколов, которые могут вам встретиться в реальном мире. Например, здесь, как показано ниже, присутствуют наиболее типичные для Интернета протоколы IP и ICMP:

Каждая строка в /etc/protocols состоит из трех основных полей: неофициальное название (1), номер протокола (2) и псевдонимы (3). Номер протокола используется в сетевых запросах для идентификации трафика. Вы увидите его, если воспользуетесь программой перехвата пакетов (sniffer) или по каким-либо причинам углубитесь в изучение своей сети. Как видно из фрагмента выше, протокол IP имеет номер 0, а протокол ICMP имеет номер 1 — если не это основа всего сущего, сложно представить, что могло бы быть ею! Протокол TCP имеет номер 6, а протокол UDP — 17. Кроме того, здесь же можно видеть комментарии (4), в которых приводится краткое описание каждого протокола.

Транспортный уровень взаимодействует с сетевым уровнем, лежащим ниже, и с приложениями — выше.

Приложения

Приложения также являются частью сети. Приложения посылают запросы на открытие сетевых соединений, передают данные в сеть, получают данные из сети и обрабатывают эти данные. Веб-броузеры, клиенты электронной почты, серверы JSP и т. п. — все это сетевые приложения. Приложения взаимодействуют только с сетевым уровнем и с пользователем. Проблемы на уровне пользователя и выше далеко выходят за рамки этой книги.*

Комментарии запрещены.