Главная его задача удостовериться, что канал свободен и ничто не станет угрожать надежности передачи и целостности пакетов. В идеале протоколы канального уровня в паре с сетевым оборудованием должны проверить, является ли канал свободным для передачи данных, не имеется ли коллизий и т. п.
Такую проверку необходимо проводить каждый раз, поскольку локальная сеть редко состоит всего из двух компьютеров, хотя даже в этом случае канал может быть занят. Обнаружив, что канал свободен, данные, которые необходимо передать другому компьютеру, делятся на более мелкие части кадры. Каждый такой кадр снабжается контрольной суммой и отсылается. Приняв этот кадр, получатель проверяет контрольные суммы и, если они совпадают, принимает его и отправляет подтверждение о доставке. В противном случае кадр игнорируется, фиксируется ошибка, которая отправляется получателю, и кадр передается заново. Так, кадр за кадром, происходит передача всего объема данных.
Канальный уровень также описывает алгоритмы работы в конкретной физической среде, например при использовании витой пары или оптоволокна. Сюда же включаются и правила прокладки кабеля.
Как и в случае с физическим уровнем, канальный также имеет различия для проводных и беспроводных сетей. Связано это со спецификой сетевого оборудования. Так, беспроводное оборудование на данный момент работает только в полудуплексном режиме, а это означает, что одновременно может вестись только прием или только передача. Этот факт резко снижает эффективность обнаружения коллизий и, соответственно, скорость передачи данных в беспроводных сетях.
Поскольку модель 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 обладает своими особенностями, то реализация всех этих особенностей невозможна в рамках одного протокола. Мало того, она даже невыгодна, поскольку значительную часть логики можно разрабатывать на уровне аппаратного обеспечения, что приводит к максимально быстрой обработке данных. Исходя из этих соображений было разработано множество узконаправленных протоколов, каждый из которых выполняет свою задачу и делает это с максимальной отдачей и быстродействием.
Все протоколы можно разделить на низкоуровневые и высокоуровневые.
Низкоуровневые реализованы давно, и никаких кардинальных изменений в них не вносится, что за длительное время их использования позволило найти и устранить все возможные дыры и ошибки в их работе.
Примечание
Низкоуровневые протоколы реализуются на аппаратном уровне, что позволяет добиться максимального быстродействия и безошибочности.