Домашняя сеть
Наверняка в последнее время вы часто слышите словосочетание "домашняя сеть". Может быть, вам даже предлагают подключиться к такой сети. Не пугайтесь: это явление нормальное и повсеместное. Домашние сети возникают как грибы после дождя, и это хорошо, так как позволяет пользователям компьютеров получать понравившиеся информационные услуги не только на работе, но и дома.
Стоит сразу оговориться, что слово "домашняя" в этом случае принимает несколько другое значение, чем обычно. Оно не имеет ничего общего с домашним уютом, домашними тапочками или халатом. В случае с сетями слово "домашняя" стоит ассоциировать со словом "домовая". Домовая сеть, то есть сеть, построенная в доме, между домами, между кварталами и т. п. Поскольку слово "домовая" звучит явно некрасиво, его место заняло слово "домашняя".
Таким образом, обычно домашняя сеть – это полноценная локальная сеть, однако построенная без строгого соблюдения топологий, стандартов и т. д. Почему так? Все очень просто. Поскольку жилая квартира – не офис, не каждый согласится буравить стены, пробивать оконные рамы и разрешать другие подобные действия, чтобы подключить свой компьютер (компьютеры) к сети. В этом случае создатели домашней сети, как правило, идут навстречу пользователям, предлагая им альтернативный вариант. Вот и получается, что компьютеры подключаются любым доступным (быстрым, дешевым, легко ремонтируемым) способом. Соответственно проводка, если таковая используется, может находиться в самых невероятных местах.
На практике чаще всего встречаются домашние сети, которые в своей основе используют топологию "звезда" с применением кабеля на основе витой пары и сетевого стандарта Ethernet 802.3 100Base-TX. Кроме того, здесь же уживаются и беспроводные, и оптоволоконные сегменты для удлинения сети.
Глава 5
Модель сетевого взаимодействия и основные сетевые протоколы
Если вы были последовательны, то уже успели познакомиться с основными типами и топологиями сетей, а также сетевыми стандартами. Как и любая другая область жизни и работы человека, все действия находятся под неусыпным контролем разного рода законов и стандартов. Иначе и быть не может, так как в противном случае начинается хаос. Например, благодаря этим стандартам производители знают, какими параметрами и функциями должно обладать производимое ими оборудование, чтобы работать в тех или иных условиях.
Что касается любого типа сети, она подчиняется своим правилам и стандартам, роль которых выполняют модель взаимодействий ISO/OSI и протоколы передачи данных.
Модель ISO/OSI
Пожалуй, ключевым понятием в стандартизации сетей и всего, что к ним относится, является модель взаимодействия открытых систем (Open System Interconnection, OSI), разработанная "Международной организацией по стандартизации" (International Standards Organization, ISO). На практике применяется название модель ISO/OSI.
Описываемая модель состоит из семи уровней (рис. 5.1), каждый из которых отвечает за определенный круг задач, осуществляя их с помощью заложенных в этот уровень алгоритмов – стандартов. Поскольку главная задача – выполнить глобальную цель, то уровни связаны между собой посредством интерфейсов (процедуры взаимодействия, протоколы). Таким образом, выполнив свою часть задачи, нижестоящий уровень передает готовые данные вышестоящему. Если эти сведения по какой-то причине не соответствуют шаблону, то они возвращаются обратно на предыдущий уровень для доработки. Получается, что, когда информация пройдет всю цепочку из семи уровней, на выходе будут готовые к "употреблению" данные.
Рис. 5.1. Уровни модели ISO/OSI
Главное отличие между проводными (Ethernet 802.3) и беспроводными (IEEE 802.11) сетями кроется только в двух нижних уровнях – физическом и канальном. Остальные уровни работают абсолютно одинаково и никаких отличий не имеют.
Рассмотрим уровни модели ISO/OSI подробнее.
Физический уровень
Физический уровень – самый первый, нижний уровень. Фактически он представляет собой аппаратную часть сети и описывает способ передачи данных, используя для этого любой имеющийся канал связи: проводной или беспроводной. Исходя из среды передачи данных должно использоваться соответствующее сетевое оборудование с соответствующими параметрами передачи данных, учитывая всевозможные особенности канала, такие как полосы пропускания, защита от помех, уровень сигнала, кодирование, скорость передачи данных в физической среде и т. п.
По сути, всю описанную работу вынуждено выполнять сетевое оборудование: сетевая карта, мост, маршрутизатор и т. д.
Физический уровень – один из уровней, который отличает беспроводные сети от проводных. Главная разница между ними – среда передачи данных. В первом случае это радиоволны определенной частоты или инфракрасное излучение, во втором – любая физическая линия, например коаксиал, витая пара, оптоволокно, электрическая проводка и т. д.
Канальный уровень
Главная задача канального уровня – удостовериться, что канал передачи данных готов к этой процедуре и ничто не станет угрожать надежности передачи и целостности передаваемых пакетов. В идеале протоколы канального уровня в паре с сетевым оборудованием должны проверить, является ли канал свободным для передачи данных, не имеется ли коллизий передачи и т. п.
Такую проверку необходимо проводить каждый раз, так как локальная сеть редко состоит всего из двух компьютеров, хотя даже в этом случае канал может быть занят. Если канал свободен, то данные, которые необходимо передать другому компьютеру, делятся на более мелкие части – кадры, каждый из которых снабжается контрольной сумой и отсылается. Приняв этот кадр, получатель проверяет контрольные суммы и, если они совпадают, принимает его и отправляет подтверждение о доставке. В противном случае кадр игнорируется, фиксируется ошибка, которая отправляется получателю, и кадр передается заново. Так происходит кадр за кадром.
Как и физический уровень, канальный уровень также имеет различия для проводных и беспроводных сетей, что связано со спецификой сетевого оборудования. Так, беспроводное оборудование на данный момент работает только в полудуплексном режиме, то есть одновременно может вестись только прием или только передача, что резко снижает эффективность обнаружения коллизий в сети и соответственно скорость передачи данных в беспроводных сетях.
Поскольку модель 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) о готовности приема данных, получив которое, компьютер-отправитель высылает первую порцию данных и ждет подтверждения о доставке пакета. После получения подтверждения о доставке передача данных продолжается. Если подтверждение о доставке не пришло, то компьютер-отправитель повторно передает конкретный пакет.
Такая система гарантирует доставку пакетов данных, но в то же время заметно снижает скорость передачи данных. Именно поэтому беспроводные сети по скорости всегда отставали и будут отставать от проводных. Тем не менее существуют способы повысить скорость передачи данных за счет оптимизации передачи служебных данных. Кроме того, появляются и новые беспроводные стандарты.
Сетевой уровень
Как и канальный, сетевой уровень занимается передачей информации. Однако между ними есть существенная разница: канальный уровень может передавать данные между компьютерами, подключенными с использованием одной топологии. Если сеть комбинированная, то задача выполняется на сетевом уровне.
Данные в сетевом уровне делятся на порции, которые называются пакетами. Перед началом передачи данных другому компьютеру происходит преждевременная настройка связи, заключающаяся в выборе пути, по которому будут передаваться сведения. Этот процесс называется маршрутизацией.
Выбор нужного маршрута – одна из основных функций сетевого уровня. Невозможно выбрать идеальный путь, так как рано или поздно на одном из отрезков может повыситься трафик, что приведет к увеличению времени передачи пакетов. Поэтому нужный путь выбирается по среднему значению всех необходимых параметров: пропускной способности, интенсивности трафика, дальности и скорости передачи, ее надежности и т. п.
Как правило, при выборе маршрута используется информация установленных в сети маршрутизаторов. В их таблицах хранится информация о скорости передачи между отдельными отрезками сети, трафике, о среднем времени передачи и т. д., основываясь на которой протоколы сетевого уровня могут выбрать оптимальный путь прохождения данных.
Организовать сетевой уровень можно как программно, так и аппаратно.
Транспортный уровень
Транспортный уровень можно отнести к высокому уровню, то есть к такому, управлять которым можно программно, а не только с помощью аппаратных средств.
Идеальную сеть создать невозможно – хоть где-то, но будет отклонение от требований построения. Если сеть достаточно большая и включает несколько маршрутизаторов, то это не только усложняет ее, но и приводит к увеличению ненадежности.
Основная задача транспортного уровня – обеспечить требуемую степень надежности при передаче информации между выбранными компьютерами. Транспортный уровень может делать это пятью способами. Каждый из них отличается не только защищенностью данных при пересылке, но и временем их доставки или возможностью исправления возникших ошибок. По этой причине, начиная с данного уровня, выбрать вариант доставки может программа, то есть непосредственно пользователь. Зачем использовать максимальные предосторожности перед отправкой и во время отсылки данных, если сеть характеризуется хорошим качеством и низкой вероятностью появления ошибок? Логично выбрать наиболее простой способ из пяти существующих. Наоборот, если в сети часто происходят коллизии, приводящие к потере информации, то следует использовать способ, гарантирующий доставку информации в любом случае.
Сеансовый уровень
Сеансовый уровень служит для контроля передачи пакетов между компьютерами. Синхронизируя принятые и отправленные пакеты, протоколы сеансового уровня отслеживают недостающие пакеты и передают их заново. За счет того что передаются только недостающие пакеты, достигается повышение скорости передачи данных.
Уровень представления данных
Чтобы урегулировать процессы отправки и получения информации между двумя компьютерами, существует уровень представления, отвечающий за приведение информации к единому синтаксическому стандарту. Именно здесь можно эффективно использовать разнообразные методы шифрования информации, чем и занимаются многие протоколы.
Прикладной уровень
Прикладной уровень отвечает за связь с прикладными программами. Это обычный набор протоколов, с помощью которых можно наладить доступ к любым ресурсам сети.
Таким образом, пройдя все семь уровней, сообщение пользователя пополняется служебной информацией (заголовками) каждого из них. Аналогично, попав к требуемому получателю и опять пройдя все семь уровней, информация очищается от всей служебной информации.
Что такое протокол и зачем он нужен
В предыдущем разделе была очень кратко рассмотрена модель ISO/OSI, которая описывает работу любого сетевого оборудования и сети в целом. Однако это всего лишь модель, рисунок на бумаге. Чтобы все это начало работать, необходим реализующий ее механизм, которым является протокол передачи данных, точнее, множество протоколов.
Таким образом, протокол – набор правил, используя которые можно передать данные между компьютерами. Все эти правила работают в рамках модели ISO/OSI и не могут отступать от нее ни на шаг, так как это может повлечь за собой несовместимость оборудования и программного обеспечения.
Поскольку каждый из уровней модели ISO/OSI обладает своими особенностями, реализация всех этих особенностей невозможна в рамках одного протокола. Мало того, она даже невыгодна, так как значительную часть логики можно создавать на уровне аппаратного обеспечения, что приводит к ускорению обработки данных. Исходя из этих соображений было разработано множество узконаправленных протоколов, каждый из которых выполняет свою задачу и делает это с максимальной отдачей и быстродействием.
Все протоколы можно разделить на низкоуровневые и высокоуровневые.
Низкоуровневые реализованы давно, и никаких кардинальных изменений в них не вносится, что за длительное время их использования позволило найти и устранить все возможные дыры и ошибки.
Примечание
Низкоуровневые протоколы реализуются на аппаратном уровне, что позволяет добиться максимального быстродействия и безошибочности.
Высокоуровневые протоколы разрабатывают и совершенствуют постоянно. В этом нет ничего плохого, даже наоборот: всегда существует возможность придумать новый, более эффективный способ передачи данных.
Примечание
Как правило, высокоуровневые протоколы реализуются в виде драйверов к сетевому оборудованию под разные операционные системы.
Существует множество разных протоколов, каждый из которых имеет свои особенности. Одни из них узконаправленные, другие имеют более широкое применение. Протоколы разрабатывают несколько фирм, поэтому неудивительно, что каждая из них создает свой собственный стек (набор) протоколов. Хотя эти стеки по умолчанию между собой несовместимы, существуют дополнительные протоколы, являющиеся мостами между ними, что позволяет использовать в одной операционной системе несколько несовместимых между собой протоколов.
Стоит также упомянуть, что не все протоколы могут применяться в одинаковых условиях. Случается, применение одного из них выгодно для небольшой группы компьютеров и крайне невыгодно для большого количества машин с несколькими маршрутизаторами и подключением к Интернету.
Наибольшую популярность приобрели такие стеки протоколов, как NetBIOS/NetBEUI, IPX/SPX, TCP/IP, DECnet и др.
Протокол NetBIOS/NetBEUI
NetBIOS
NetBIOS (Network Basic Input/Output System) – один из первых сетевых протоколов, разработанный в 1984 году для создания интерфейса передачи сообщений по локальной сети: как одноранговой, так и на основе сервера.
Чтобы передавать сообщения по сети NetBIOS, используются логические имена компьютеров. Когда такая машина заходит в сеть, она не только сообщает об этом всем остальным, но и заносит их имена в свою динамическую таблицу.
В силу своей простоты NetBIOS – один из самых быстрых протоколов, и это его сильная сторона.
На самом деле NetBIOS не является полноценным протоколом, так как описывает только программную часть передачи данных – набор сетевых API-функций. Это означает, что, используя его, можно только подготовить данные для передачи. Физическая же передача может осуществляться только с помощью любого транспортного протокола, например TCP.
Положительный момент этой ситуации – непривязанность к транспортному протоколу, что позволяет использовать любой подходящий для этих целей протокол. Кроме того, неоспоримым плюсом является его быстродействие.
Минус в том, что для полноценной работы NetBIOS требуется, чтобы на всех машинах сети стоял одинаковый транспортный протокол, иначе компьютеры не смогут синхронизироваться. Однако главный недостаток протокола – отсутствие поддержки маршрутизации, без чего не обходится любая мало-мальски развернутая сеть.
NetBEUI
NetBEUI (NetBIOS Extended User Interface) – транспортный протокол, "собрат" протокола NetBIOS. Однако он обладает большей скоростью доставки сообщений, надежностью и устойчивостью к ошибкам, что достигается путем подтверждающих пакетов, каждый раз присылаемых в ответ на полученное сообщение. При этом прежде всего в самом начале устанавливается логическая связь между компьютером-отправителем и компьютером-получателем, что уже гарантирует доставку пакетов.
Еще один момент надежности передачи данных – механизм, отслеживающий время "жизни" пакета (TTL). Если по его истечении компьютер-получатель не пришлет подтверждения о доставке очередного пакета данных, то компьютер-отправитель отсылает порцию данных повторно. Повторная отправка сведений аналогична предыдущей, и если пакет оказался поврежденным и компьютер-получатель его отклоняет, то он сообщает об этом компьютеру-отправителю.
Как и NetBIOS, NetBEUI не поддерживает маршрутизацию в сети, что не позволяет эффективно использовать его скорость и применять в глобальных сетях. Тем не менее этот протокол – один из основных компонентов NT-систем, и устанавливается он автоматически.
Протокол IPX/SPX
Протоколы IPX и SPX – представители стека протоколов, разработанных компанией Novell, которая в свое время являлась прямым конкурентом компании Microsoft. Конкуренция велась в области сетевых операционных систем: с одной стороны стояла операционная система Novell Netware, с другой – Windows NT. Соответственно каждая из этих систем использовала свой набор протоколов.
К сожалению, со временем Novell сдала свои позиции, и первенство завоевали сетевые версии операционных систем Windows NT. Тем не менее разработанные Novell протоколы используют до сих пор и будут использоваться еще очень долго.
Протоколы IPX и SPX являются продолжением протокола XNS компании Xerox, который не получил широкого распространения.
IPX/SPX представляет собой набор подпротоколов, каждый из которых может выполнять возложенную на него задачу на высоком уровне (рис. 5.2). Тем не менее два нижних уровня (физический и сетевой) реализуют стандартные протоколы Ethernet.