Компьютерные сети

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

Возможно, современный Интернет является крупнейшей инженерной системой, когда-либо созданной человечеством. Она состоит из сотен миллионов соединенных компьютеров, линий связи и коммутаторов; с миллиардами пользователей, которые подключаются через ноутбуки, планшеты и смартфоны; и с множеством новых подключенных устройств, таких как датчики, веб-камеры, игровые консоли, бытовая техника.

Что собой представляет Интернет?

Существует два ответа на этот вопрос.

  • Первый подход, мы можем описать Интернет через аппаратные и программные компоненты.

  • Второй подход, мы можем описать Интернет на языке сетевой инфраструктуры, предоставляющей службы для распределенных приложений.

Распределённое приложение – это программа, состоящая из нескольких взаимодействующих частей, каждая из которых, как правило, выполняется на отдельном компьютере сети.
Первый подход
омпьютерная сеть (вычислительная сеть) — система, обеспечивающая обмен данными между вычислительными устройствами через физическую среду передачи данных. Сети классифицируются по ряду признаков, например, по территориальной распространённости:

  • LAN - локальные сети, имеющие замкнутую инфраструктуру до выхода на поставщиков услуг. Термин «LAN» может описывать и маленькую офисную сеть, и сеть уровня большого завода. Локальные сети являются сетями закрытого типа, доступ к ним разрешён только ограниченному кругу пользователей, для которых работа в такой сети непосредственно связана с их профессиональной деятельностью.
  • WAN - глобальная сеть, покрывающая большие географические регионы, включающие в себя как локальные сети, так и прочие телекоммуникационные сети и устройства. Глобальные сети являются открытыми и ориентированы на обслуживание любых пользователей.
Подробнее о классификациях читайте здесь.

Хост - это вычислительное устройство - узел сети (компьютер, сервер, смарфон).

Хосты дополнительно подразделяются на две категории: клиенты и серверы. Сегодня большинство серверов, с которых мы получаем результаты поиска, электронную почту, веб-страницы и видео, находятся в больших центрах обработки данных (дата-центрах). Например, Google имела 30–50 дата-центров на 2016 год, причем во многих из них находится более сотни тысяч серверов.

Интернет — это компьютерная сеть типа WAN, которая связывает между собой сотни миллионов хостов по всему миру.
Хосты соединяются вместе с помощью сети линий связи и коммутаторов пакетов. Линии связи бывают множества типов, по разным линиям данные могут передаваться с разными скоростями, причем скорость передачи линии измеряется в битах в секунду (бит/c).

Когда в одной конечной системе имеются данные для отправки в другую, передающая конечная система разбивает передаваемые данные на части (пакеты) и посылает через сеть в конечную систему назначения, где данные снова собираются в по частям.,

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

Важно, что Интернет-приложения выполняются на хостах. Распределенные приложения, выполняющиеся на разных конечных системах, должны передавать данные друг другу. И здесь мы подходим к главной теме, которая ведет к альтернативному способу описания Интернета как платформы для приложений.

Каким образом программа, выполняющаяся на одной конечной системе, отдает команду Интернету доставить данные в другую программу, выполняющуюся на другой конечной системе?

Ответ: Хосты, подсоединенные к Интернету, предоставляют программный интерфейс - т.е возможность общаться приложениям с разных хостов по неким общим правилам.

Пример: Алиса хочет отправить письмо Бобу, пользуясь почтовой службой. Само собой разумеется, что наша героиня не может просто написать письмо (или данные) и бросить его из окна. Вместо этого почтовая служба требует, чтобы Алиса поместила письмо в конверт, написала полностью фамилию и имя Боба, его адрес и почтовый код, заклеила конверт, приклеила марку в верхнем правом углу и, наконец, бросила конверт в почтовый ящик. Таким образом, у почтовой службы есть свой собственный интерфейс и протокол (набор правил), которые должна соблюдать Алиса, чтобы ее письмо доставили Бобу.

Конечно, почтовая служба предоставляет своим клиентам более чем одну услугу: срочная доставка, подтверждение получения, обычная почта и многое другое. Подобным образом в Интернете предлагается множество служб для приложений. Когда вы разрабатываете Интернет-приложение, вы также можете выбрать для него одну из служб Интернета.


Что такое протокол?

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

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

Пример: Рассмотрим, что мы делаем, когда хотим спросить у кого-нибудь, который час. Назовем его социальный протокол.
Если люди выполняют разные протоколы (например, если один человек воспитан, а другой нет или если один знает, что такое время, а другой не имеет о нем представления), протоколы не взаимодействуют, и никакую полезную работу выполнить невозможно. То же самое справедливо в сетях — для выполнения задачи двум (или более) взаимодействующим объектам необходимо выполнять один и тот же протокол.
Маршрутизация и Адресация
Каждый хост в Интернете имеет свой адрес, называемый IP-адресом. Когда одна конечная система (источник) пытается отправить пакет на другую, то она включает в заголовок пакета IP-адрес места назначения. Как и в случае с почтовыми адресами, он имеет иерархическую структуру. Когда пакет прибывает на маршрутизатор, находящийся в сети, тот проверяет часть пакета, содержащую адрес места назначения и в соответствии с ним направляет пакет по необходимому пути.

IP-адрес уникально идентифицирует узел в сети.

  • IPv4 адрес - представляет собой 4 байта (32 бита). В десятичной записи IP-адрес состоит из 4 чисел, разделенных точками, каждое из которых лежит в диапазоне от О до 255. Например 195.34.32.11.
  • IPv6 адрес - представляет собой 16 байт (128 бит). Например: 2001:0DB8:AA10:0001:0000:0000:0000:00FB
Многоуровневая архитектура
Перед тем как попытаться систематизировать наши знания архитектуры Интернета, давайте обратимся к аналогии из мира людей. В нашей повседневной жизни мы все имеем дело со сложными системами. Представьте себе, что кто-нибудь попросил вас описать, например, как организована система воздушных сообщений. Как бы вы стали описывать такую сложную структуру, которая включает в себя агентство по продаже авиабилетов, службу по проверке багажа, сотрудников терминалов, летный персонал, парк воздушных судов, а также международные диспетчерские службы? Один из возможных способов состоит в том, чтобы показать набор действий, которые вы производите (или которые производятся для вас), когда вы совершаете авиаперелет. Сценарий такого авиаперелета показан на рисунке.
Тут мы сразу замечаем аналогию с функционированием компьютерных сетей: авиакомпания доставляет вас от исходного пункта до пункта назначения. Пакет в Интернете тоже доставляется от хоста-источника.

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

Для больших и сложных систем, которые постоянно обновляются, способность изменять реализацию предоставляемых услуг (сервисов), не затрагивая другие компоненты системы, является еще одним важным преимуществом многоуровневой структуры.
Уровни протоколов
Структура сетевых протоколов организована с помощью уровней. Каждый протокол принадлежит какому-то определенному одному уровню, точно так же, как каждая функция в архитектуре воздушной линии. Уровни протоколов могут быть реализованы в программном или аппаратном обеспечении либо в их комбинации.
Стек протоколов Интернета (а) и эталонная модель OSI (б)
Прикладной уровень

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

  • HTTP (обеспечивающий запрос и передачу веб-документов)
  • SMTP (отвечающий за сообщения электронной почты)
  • DNS (domain name system, система доменных имен)

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

На этом уровне передаются сообщения.

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


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

  • Протокол TCP предлагает приложениям службы с установлением соединения. Эти службы обеспечивают надежную доставку сообщений прикладного уровня получателям, а также контроль переполнения (то есть регулирование скорости потока)

  • Протокол UDP предоставляет приложениям службы без установления соединения. При этом не гарантируется надежность передачи, нет контроля переполнения и контроля перегрузок.

Мы назовем порцию данных транспортного уровня сегментом.

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


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

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

Пример протоколов:

  • IPv4/IPv6 - протокол интернета, обеспечивает доставку пакетов данных между любыми узлами сети через произвольное число промежуточных узлов.
  • OSPF - протокол динамической маршрутизации.

Канальный уровень


Чтобы переместить пакет от одного узла (хоста или маршрутизатора) к следующему на маршруте, сетевой уровень использует службы канального уровня; На этом уровне передаются кадры. Например цепочка узлов в сети проходит по разным линиям связи, и на каждой из них кадры могут быть обработаны различными протоколами канального уровня. Например, на одном участке маршрута дейтаграмму обрабатывает протокол Ethernet, а на другом — протокол PPP. Таким образом, различные протоколы канального уровня предоставляют различные службы для сетевого уровня.

Примеры протоколов:

  • ARP - протокол в компьютерных сетях, предназначенный для определения MAC-адреса по IP-адресу другого компьютера.
  • PPP - это двухточечный протокол канального уровня, который используется для установления соединения между двумя устройствами. Протокол PPP позволяет шифровать данные, реализует аутентификацию и сжатие данных.
  • PPPoE - описывает процесс передачи кадров канального протокола PPP через сети, построенные по технологии Ethernet.
  • Технология DSL. Это целый набор протоколов и стандартов, описывающих взаимодействие между устройствами на физическом и канальном уровнях модели. Средой передачи данных технологии DSL является медный кабель.
  • IEEE3 (Ethernet). Технология Ethernet включает в себя набор стандартов и протоколов, описывающих взаимодействие между устройствами как на физическом, так и на канальном уровнях.
Физический уровень
Предназначен для передачи отдельных битов кадра между этими узлами. Протоколы физического уровня опять же зависят от используемой линии связи и от реальной среды передачи этой линии (медная витая пара, одномодовое оптоволокно и т.д.). Например, Ethernet поддерживает множество протоколов физического уровня: один для витой медной пары, другой для коаксиального кабеля, третий для оптоволоконного и так далее. В каждом из этих случаев биты передаются по линии связи различными способами.

Каналы передачи данных:

  • Медная витая пара - является наиболее дешевой и распространенной средой. На практике более 99% кабелей, соединяющих различные телефонные устройства с телефонными коммутаторами, представляют собой именно ее. Многие из нас встречались с ней либо дома, либо на работе. Витая пара состоит из двух изолированных медных проводов, каждый из которых имеет толщину около 1 мм, заключенных в обычную спиральную оболочку. Скорость передачи данных для ЛВС, использующих витую пару, на сегодняшний момент варьируется в пределах от 10 Мбит/с до 10 Гбит/с. Зависит скорость от толщины провода, а также от расстояния между источником и приемником.
Коаксиальный кабель. Так же как и витая пара, коаксиальный кабель состоит из двух медных проводников, только эти проводники расположены не параллельно, а концентрически (или коаксиально). С помощью такой конструкции, а также благодаря специальной изоляции и экранирования, коаксиальный кабель позволяет достичь высоких скоростей передачи данных. Он часто используется в системах кабельного телевидения. Сети на основе коаксиального кабеля обеспечивают передачу со скоростью до 10 Мбит/с. Максимальная длина сегмента лежит в диапазоне от 185 до 500 м.
Оптоволоконный кабель. Оптоволокно — это тонкий, гибкий кабель, по которому распространяются световые импульсы, представляющие собой биты информации. Один оптоволоконный кабель может передавать данные на очень значительных скоростях: от десятков до сотен гигабит в секунду. Они не подвержены электромагнитным помехам, имеют очень низкий уровень затухания сигнала на расстояниях до 100 километров, а также устойчивы к механическим воздействиям. Эти характеристики сделали оптоволоконный кабель, в частности, предпочтительной средой передачи данных для межконтинентальных линий связи. однако высокая стоимость оптических устройств — таких как передатчики, приемники и коммутаторы — делает невыгодным их применение для передачи данных на короткие расстояния, например, в ЛВС, либо в сетях домашнего доступа. Оптические носители (Optical Carrier, OC) предлагают скорости передачи от 51,8 Мбит/с до 39,8 Гбит/с.
  • Наземные радиоканалы. В радиоканалах сигналы передаются посредством электромагнитных волн радиодиапазона. Такая среда передачи очень привлекательна тем, что она не требует физического носителя, может обеспечивать соединение с мобильными пользователями, передачу сигнала на достаточно дальние расстояния, при этом сигнал способен проникать сквозь стены и другие препятствия. Наземные радиоканалы могут быть классифицированы по трем группам: функционирующие на очень коротких расстояниях (1 или 2 метра); каналы локального распространения, обычно работающие на расстояниях от десяти до нескольких сотен метров; каналы дальнего распространения сигнала, действующие на расстояниях в десятки километров.

  • Спутниковые радиоканалы. Спутниковая связь соединяет два или более наземных приемопередатчика сверхвысокочастотного (СВЧ) диапазона, известных как наземные станции. Спутник принимает сигнал на одной полосе частот, восстанавливает его с использованием ретранслятора и передает на другой частоте. Используются два типа спутников: геостационарные и низкоорбитальные.

    Геостационарные спутники постоянно находятся над одной и той же точкой Земли. Это достигается за счет размещения спутника на орбите в 36 000 километров над поверхностью Земли. Такое огромное расстояние от земной станции до спутника и обратно к другой земной станции приводит к существенной задержке распространения сигнала до 280 мс. Тем не менее спутниковые каналы связи, которые могут работать на скоростях в сотни мегабит в секунду, часто используются в районах, где нет кабельного доступа в Интернет.

    Низкоорбитальные спутники размещаются намного ближе к Земле и вращаются вокруг нее (так же, как Луна). Они могут общаться как друг с другом, так и с земными станциями. Чтобы обеспечить непрерывное покрытие, на орбите необходимо разместить достаточно много спутников. В настоящее время разрабатывается целый ряд проектов низкоорбитальных спутниковых систем связи. Спутниковые низкоорбитальные технологии могут быть широко использованы для доступа в Интернет в будущем.
Схема стека взаимодействия протоколов:
Модель OSI
Давайте рассмотрим два дополнительных уровня, представленных в эталонной модели OSI — уровень представления и сеансовый уровень.

  • Основная роль уровня представления — обеспечить сервис, позволяющий взаимодействующим приложениям интерпретировать данные, которыми они обмениваются. Это включает сжатие данных, их шифрование (название говорит само за себя), а также описание, эти службы позволяют приложениям не заботиться о внутренних форматах, в которых данные представлены/сохранены, и которые могут отличаться от одного компьютера к другому.
  • Сеансовый уровень обеспечивает разграничение и синхронизацию данных в процессе обмена, предоставляет средства для контроля за сеансом и его восстановление в случае разрыва соединения.
Отсутствие этих двух уровней эталонной модели OSI в стеке протоколов Интернета вызывает пару интересных вопросов: разве службы, предоставляемые этими уровнями, не так важны? Что если приложению необходимы эти службы? Интернет отвечает на эти вопросы одинаково — на усмотрение разработчика приложения. Он сам должен решить, важна конкретная служба или нет, и в случае, если она действительно важна, он же решает, как встроить такую функциональность в приложение.
Инкапсуляция
На рисунке показан путь, который проходят данные от отправляющей конечной системы вниз по стеку протоколов этой системы, затем вверх и вниз по протоколам коммутатора и маршрутизатора, и затем вверх по уровням протоколов принимающей конечной системы. Как мы с вами обсудим позднее в этой книге, и маршрутизаторы, и коммутаторы канального уровня занимаются коммутацией пакетов. Подобно конечным системам, аппаратное и программное обеспечение данных устройств также организовано в виде уровней. Но, в отличие от конечных систем, маршрутизаторы и коммутаторы не используют все уровни стеков протоколов. Они обычно работают на нижних уровнях.

Это означает, например, что маршрутизаторы в Интернете могут работать с протоколом IP (с протоколом третьего уровня), в то время как коммутаторы канального уровня не способны это делать. Они не могут распознавать

IP-адреса, но зато работают с адресами второго уровня, такими как адреса Ethernet. Обратим внимание, что хосты поддерживают все пять уровней, то есть можно сделать вывод, что вся сложность архитектуры Интернета ложится на плечи конечных устройств сети.

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