Канальный уровень
Главная его задача – удостовериться, что канал свободен и ничто не станет угрожать надежности передачи и целостности пакетов. В идеале протоколы канального уровня в паре с сетевым оборудованием должны проверить, является ли канал свободным для передачи данных, не имеется ли коллизий и т. п.
Такую проверку необходимо проводить каждый раз, поскольку локальная сеть редко состоит всего из двух компьютеров, хотя даже в этом случае канал может быть занят. Обнаружив, что канал свободен, данные, которые необходимо передать другому компьютеру, делятся на более мелкие части – кадры. Каждый такой кадр снабжается контрольной суммой и отсылается. Приняв этот кадр, получатель проверяет контрольные суммы и, если они совпадают, принимает его и отправляет подтверждение о доставке. В противном случае кадр игнорируется, фиксируется ошибка, которая отправляется получателю, и кадр передается заново. Так, кадр за кадром, происходит передача всего объема данных.
Канальный уровень также описывает алгоритмы работы в конкретной физической среде, например при использовании витой пары или оптоволокна. Сюда же включаются и правила прокладки кабеля.
Как и в случае с физическим уровнем, канальный также имеет различия для проводных и беспроводных сетей. Связано это со спецификой сетевого оборудования. Так, беспроводное оборудование на данный момент работает только в полудуплексном режиме, а это означает, что одновременно может вестись только прием или только передача. Этот факт резко снижает эффективность обнаружения коллизий и, соответственно, скорость передачи данных в беспроводных сетях.
Поскольку модель ISO/OSI жестко регламентирует действия каждого уровня, то разработчикам пришлось немного модернизировать протоколы канального уровня для работы в беспроводных сетях. В частности, в случае беспроводной передачи данных используются протоколы CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) или DCF (Distributed Coordination Function).
Протокол CSMA/CA характеризуется тем, что избегает коллизий при передаче данных, используя явное подтверждение доставки, которое говорит о том, что пакет доставлен и он не поврежден.
Работает это следующим образом. Когда один компьютер собирается передать данные другому, то всем станциям сети посылается короткое сообщение (ready to send, RTS), содержащее в себе информацию о получателе и времени, необходимом для передачи данных. Получив такой пакет, все компьютеры прекращают передачу данных на указанное время. Получатель отсылает отправителю сообщение о готовности приема данных (clear to send, CTS). Получив его, компьютер-отправитель высылает первую порцию данных и ждет подтверждения доставки пакета. После подтверждения доставки передача данных продолжается. Если же подтверждение не пришло, компьютер-отправитель повторно передает конкретный пакет.
Это гарантирует доставку пакетов данных, но в то же время заметно снижает скорость передачи данных. Именно поэтому беспроводные сети всегда были медленнее проводных и таковыми останутся надолго, если не навсегда. Чтобы хоть как-то повысить скорость, один из протоколов канального уровня производит фрагментацию (разделение на фрагменты) пакетов, что увеличивает шанс их передачи с удачным исходом, исключая повторную пересылку.
Сетевой уровень
Как и канальный, сетевой уровень занимается передачей информации. Однако между ними есть существенная разница: канальный уровень может передавать данные между компьютерами, которые подключены с использованием одной топологии. Если сеть является комбинированной, за работу принимается сетевой уровень.
Данные в сетевом уровне делятся на порции, которые называются пакетами. Перед тем как начать передачу данных другому компьютеру, происходит преждевременная настройка связи, заключающаяся в выборе пути, по которому будут передаваться данные. Этот процесс называется маршрутизацией. Выбор нужного маршрута – одна из основных функций сетевого уровня. Невозможно выбрать идеальный путь, поскольку рано или поздно на одном из отрезков может повыситься трафик, что приведет к увеличению времени передачи пакетов. Поэтому нужный путь выбирается по среднему значению всех необходимых параметров: пропускной способности, интенсивности трафика, дальности и скорости передачи, ее надежности и т. п.
Как правило, при выборе маршрута используются маршрутизаторы. В их таблицах хранится информация о скорости передачи между отдельными отрезками сети, трафике, среднем времени передачи и т. д., основываясь на которой протоколы сетевого уровня могут выбрать оптимальный путь прохождения данных.
Организация сетевого уровня может осуществляться как программно, так и аппаратно.
Транспортный уровень
Идеальную сеть создать невозможно – хоть где-то, но произойдет отклонение от требований ее построения. Если сеть достаточно большая и включает несколько маршрутизаторов, то это не только усложняет ее, но и приводит к ее ненадежности.
Основная задача транспортного уровня – обеспечить требуемую степень надежности при передаче информации между выбранными компьютерами. Транспортный уровень может делать это пятью способами. Каждый из них отличается не только защищенностью данных при пересылке, но и временем их доставки или возможностью исправления возникающих ошибок. Поэтому, начиная с данного уровня, выбор варианта доставки может производить программа, то есть непосредственно пользователь. Зачем назначать максимальные предосторожности перед отправкой и во время передачи данных, если сеть характеризуется хорошим качеством и низкой вероятностью появления ошибок? Логично выбрать наиболее простой способ из пяти существующих. И наоборот, если в сети часто происходят коллизии, которые приводят к потере информации, следует использовать способ, который гарантирует вам доставку данных в любом случае.
Транспортным уровнем можно управлять программно, а не только аппаратными средствами.
Сеансовый уровень
Сеансовый уровень контролирует передачу пакетов между компьютерами. Осуществляя синхронизацию принятых и отправленных пакетов, протоколы сеансового уровня отслеживают недостающие и передают их заново. За счет того что передаются только недостающие пакеты, достигается повышение скорости.
Уровень представления данных
Чтобы урегулировать процессы отправки и получения информации между двумя компьютерами, существует уровень представления, который приводит ее к единому синтаксическому стандарту, поэтому именно здесь эффективно использовать разнообразные методы шифрования данных, чем и занимаются многие протоколы.
Прикладной уровень
Этот уровень отвечает за связь с прикладными программами. Он представляет собой обычный набор протоколов, с помощью которых можно осуществлять доступ к любым ресурсам сети.
Таким образом, пройдя все семь уровней, сообщение пользователя пополняется служебной информацией (заголовками) каждого из них. Аналогично, попав к нужному получателю и опять пройдя все семь уровней, информация очищается от всей служебной информации.
3.2. Сетевой протокол
В предыдущем разделе была кратко рассмотрена модель ISO/OSI, которая описывает работу любого сетевого оборудования и сети в целом. Однако это всего лишь модель, рисунок на бумаге. Чтобы все это начало работать, необходим механизм, ее реализующий. Таким механизмом является протокол передачи данных, а если точнее, множество протоколов.
Таким образом, протокол – набор правил, использование которых делает возможной передачу данных между компьютерами. Все эти правила работают в рамках модели ISO/OSI и не могут отступать от нее ни на шаг, поскольку это может повлечь за собой несовместимость оборудования и программного обеспечения.
Поскольку каждый из уровней модели ISO/OSI обладает своими особенностями, то реализация всех этих особенностей невозможна в рамках одного протокола. Мало того, она даже невыгодна, поскольку значительную часть логики можно разрабатывать на уровне аппаратного обеспечения, что приводит к максимально быстрой обработке данных. Исходя из этих соображений было разработано множество узконаправленных протоколов, каждый из которых выполняет свою задачу и делает это с максимальной отдачей и быстродействием.
Все протоколы можно разделить на низкоуровневые и высокоуровневые.
Низкоуровневые реализованы давно, и никаких кардинальных изменений в них не вносится, что за длительное время их использования позволило найти и устранить все возможные дыры и ошибки в их работе.
Примечание
Низкоуровневые протоколы реализуются на аппаратном уровне, что позволяет добиться максимального быстродействия и безошибочности.
Что касается высокоуровневых протоколов, то их разрабатывают и совершенствуют постоянно. В этом нет ничего плохого, даже наоборот: всегда существует возможность придумать новый, более эффективный способ передачи данных.
Примечание
Как правило, высокоуровневые протоколы реализуются в виде драйверов к сетевому оборудованию для разных операционных систем.
Существует множество разных протоколов, каждый из которых имеет свои особенности. Одни из них узконаправленные, другие имеют более широкое применение. Разрабатываются несколькими фирмами, поэтому неудивительно, что каждая из них создает свой собственный стек (набор) протоколов. Хотя эти стеки по умолчанию между собой несовместимы, существуют дополнительные протоколы, являющиеся мостами между ними, что позволяет использовать в одной операционной системе несколько несовместимых между собой протоколов.
Следует также упомянуть тот факт, что не все протоколы могут применяться в одинаковых условиях. Бывает, применение одного из них выгодно для небольшой группы компьютеров одноранговой сети и крайне невыгодно для большого количества машин сети на основе сервера с несколькими маршрутизаторами и общим выходом в Интернет.
Наибольшую популярность приобрели такие стеки протоколов, как NetBIOS/ NetBEUI, IPX/SPX, TCP/IP и др. Более подробно познакомиться с их возможностями вы сможете ниже.
Протокол NetBIOS
NetBIOS (Network Basic Input/Output System) – один из первых сетевых протоколов, разработанный в 1984 году с целью создания интерфейса передачи сообщений по локальной сети, как одноранговой, так и на основе сервера.
Для передачи сообщений по сети NetBIOS используются логические имена компьютеров. Когда компьютер заходит в сеть, он не только сообщает об этом всем остальным, но и заносит имена всех подключенных к сети компьютеров в свою динамическую таблицу.
В силу своей простоты NetBIOS является одним из самых быстрых протоколов, и это его сильная сторона.
На самом деле NetBIOS не является полноценным протоколом, поскольку описывает только программную часть передачи данных – набор сетевых API-функций. Это означает, что, используя его, можно только подготовить данные для передачи. Физическая же передача осуществляется только с помощью любого транспортного протокола. В частности, обычно в паре с протоколом NetBIOS используется транспортный протокол NetBEUI.
Плюсом этой технологии является непривязанность к транспортному протоколу, что позволяет использовать любой другой подходящий для этих целей протокол. Кроме того, неоспоримым достоинством является его быстродействие.
Недостаток же заключается в том, что для полноценной работы NetBIOS требуется, чтобы на всех компьютерах сети стоял одинаковый транспортный протокол, иначе машины не смогут синхронизироваться. Еще один минус протокола – отсутствие поддержки маршрутизации, без которой не обходится любая сеть сложной топологии. Именно поэтому протокол NetBIOS, как правило, находит свое применение только в сетях малого размера, обычно в одноранговых.
Протокол NetBEUI
NetBEUI (NetBIOS Extended User Interface) – транспортный протокол, «брат» NetBIOS, его расширение. Однако он обладает большей надежностью доставки сообщений и устойчивостью к ошибкам. Достигается все это путем подтверждающих пакетов, каждый раз присылаемых в ответ на полученное сообщение. Кроме того, до начала передачи устанавливается логическая связь между компьютером-отправителем и компьютером-получателем, что уже гарантирует доставку пакетов.
Еще один механизм, обеспечивающий надежность передачи данных, – механизм, отслеживающий время «жизни» пакета (TTL). Если по истечении этого времени компьютер-получатель не пришлет подтверждение о доставке очередного пакета данных, компьютер-отправитель отсылает порцию данных повторно. Аналогично повторная передача происходит и в случае, если пакет оказался поврежденным и компьютер-получатель его отклоняет, о чем и сообщает компьютеру-отправителю.
Так же как и NetBIOS, NetBEUI не поддерживает маршрутизацию в сети, что не позволяет эффективно использовать его скорость и применять в глобальных сетях. Тем не менее этот протокол является одним из основных компонентов NT-систем и его установка происходит автоматически.