Кратко о сетях
Этот материал продолжает серию статей, посвящённых семинарам внутреннего обучения, которые проводятся в IT-компании Nauka и служат для развития кругозора её сотрудников. Надеемся, что сведения, представленные в ней, могут быть полезными для школьников старших классов, студентов младших курсов ВУЗов, сотрудников IT-компаний, не связанных в своей работе с IT-инфраструктурой.
1. Сетевая модель OSI
Модель взаимодействия открытых систем (Open System Interconnection model) была разработана в конце 1970-х годов для описания архитектуры и принципов работы сетей передачи данных и является эталонной. Чуть позже она стала рабочим продуктом группы взаимодействия открытых систем Международной организации по стандартизации (ISO).
Данная модель имеет семь иерархических уровней и представлена на рисунке 1. Верхним уровнем является седьмой (прикладной), а нижним — первый (физический).
Рис. 1 — Модель OSI
В простейшем случае в сети взаимодействуют Отправитель, Получатель (устройства) и собственно передаваемые данные. Все то, что должно происходить при передаче и приеме данных, и описывает модель OSI.
На верхнем уровне информация представляется в виде данных, на нижнем — в виде бит. Процесс отправки данных и перевода их в последовательность бит называется инкапсуляцией (рис. 2). Обратный процесс перевода полученной на нижнем уровне последовательности бит в данные на верхнем, называется декапсуляцией (рис. 2). При инкапсуляции и декапсуляции данные, превращаясь в последовательность бит и последовательность бит, превращаясь в данные, проходят последовательно все семь уровней модели. При этом на каждом из них информация представляется в виде блоков данных протокола — PDU (Protocol Data Unit).
Рис. 2 — Инкапсуляция и декапсуляция данных
Первый уровень отвечает за обмен физическими сигналами между устройствами, например, компьютерами, в виде набора бит. У каждого из уровней имеется свой PDU, представляемый в форме, понятной на этом уровне. Только на уровнях с 5 по 7 ведётся работа непосредственно с данными. На первом уровне биты передаются по медным кабелям, оптоволокну или по воздуху (Bluetooth, Wi-Fi, GSM).
Второй уровень (канальный, Data Link Layer, L2) занимается адресацией при передаче данных. Он формирует из битов кадры с адресами отправителя и получателя и передаёт их на первый уровень для отправки получателю по сети. Данный уровень имеет два подуровня: MAC (Media Access Control — контроль доступа к среде) и LLC (Logical Link Control — контроль логической связи). MAC присваивает физические 48-битные MAC-адреса отправителю и получателю. LLC проверяет данные, при необходимости исправляет их и занимается их передачей. На канальном уровне активно используется протокол ARP (Address Resolution Protocol — протокол определения адреса). С его помощью MAC-адреса сопоставляются с 32-битными IP-адресами, работающими на третьем уровне, и наоборот, тем самым обеспечивается инкапсуляция и декапсуляция данных.
Третий уровень (сетевой, Network Layer, L3) отвечает за путь передачи данных. На нём логические адреса и имена преобразуются в физические, определяются кратчайшие маршруты, отслеживаются неполадки и «заторы» в сети. Протоколами сетевого уровня являются: IP (Internet Protocol)v4/IPv6, IPX (Internetwork Packet Exchange — протокол межсетевого обмена), X.25 (частично этот протокол реализован на уровне 2), IPsec (Internet Protocol Security). Кроме этого, на этом уровне работает множество протоколов маршрутизации, о которых пойдет речь позже.
Уровни модели OSI (Рисунок 1) можно условно разделить на две группы:
Media layers (уровни среды),
Host layers (уровни хоста).
Уровни среды (L1 — L3) занимаются передачей информации (по кабелю или воздуху) и используются сетевыми устройствами, такими как коммутаторы, маршрутизаторы и т.п. Уровни хоста (L4 — L7) используются непосредственно на устройствах, таких как стационарные компьютеры или мобильные устройства.
Четвёртый уровень (транспортный, Transport Layer, L4) является своего рода посредником между уровнями среды и хоста. Его главные задачи — транспортировка пакетов и контроль за целостностью или скоростью передаваемых данных. На этом уровне используются протоколы TCP (Transmission Control Protocol — протокол контроля передачи) и UDP (User Datagram Protocol) и множество других протоколов.
TCP обеспечивает надёжную непрерывную передачу данных, исключающую их потерю или нарушение порядка их поступления или дублирования, может перераспределять данные, разбивая большие порции данных на фрагменты и наоборот, склеивая фрагменты в один пакет. При передаче по протоколу TCP данные делятся на сегменты. Сегментом является часть пакета. Если приходит пакет данных, превышающий пропускную способность сети, то он делится на сегменты допустимого размера. Сегментация пакетов также требуется в ненадежных сетях, когда существует большая вероятность того, что большой пакет будет потерян.
UDP ограничивается контролем целостности данных в рамках одной датаграммы и не исключает возможности потери пакета целиком или дублирования пакетов. Этот протокол используется для передачи данных, наиболее чувствительных к задержкам, каковыми, например, являются мультимедийные данные. При передаче данных по протоколу UDP пакеты данных делятся на датаграммы, также являющиеся частью пакета. Главное отличие датаграмм от сегментов — их автономность. Каждая датаграмма содержит все необходимые заголовки, чтобы дойти до конечного адресата. Они не зависят от состояния сети, могут доставляться разными маршрутами и в разном порядке. При потере датаграмм или сегментов получаются «битые» куски данных, которые не получится корректно обработать. Но для мультимедийных данных это зачастую не так уж важно.
Первые четыре уровня — сфера деятельности сетевых инженеров, а уровни 5 — 7 — разработчиков.
Пятый уровень (сеансовый, Session Layer, L5) отвечает за поддержку сессии (сеанса связи): управляет взаимодействием между приложениями, открывает возможности синхронизации задач, завершения сеанса, обмена информации. Примером работы пятого уровня может служить видеозвонок по сети. Во время видеосвязи необходима синхронная передача двух потоков данных (аудио и видео). Если к разговору двоих человек прибавится третий, то получается уже конференция. В этом случае задачей пятого уровня является сделать так, чтобы собеседники могли понять, кто сейчас говорит.
Шестой уровень (представления данных, Presentation Layer, L6) отвечает за:
Четвёртый уровень (транспортный, Transport Layer, L4) является своего рода посредником между уровнями среды и хоста. Его главные задачи — транспортировка пакетов и контроль за целостностью или скоростью передаваемых данных. На этом уровне используются протоколы TCP (Transmission Control Protocol — протокол контроля передачи) и UDP (User Datagram Protocol) и множество других протоколов.
TCP обеспечивает надёжную непрерывную передачу данных, исключающую их потерю или нарушение порядка их поступления или дублирования, может перераспределять данные, разбивая большие порции данных на фрагменты и наоборот, склеивая фрагменты в один пакет. При передаче по протоколу TCP данные делятся на сегменты. Сегментом является часть пакета. Если приходит пакет данных, превышающий пропускную способность сети, то он делится на сегменты допустимого размера. Сегментация пакетов также требуется в ненадежных сетях, когда существует большая вероятность того, что большой пакет будет потерян.
UDP ограничивается контролем целостности данных в рамках одной датаграммы и не исключает возможности потери пакета целиком или дублирования пакетов. Этот протокол используется для передачи данных, наиболее чувствительных к задержкам, каковыми, например, являются мультимедийные данные. При передаче данных по протоколу UDP пакеты данных делятся на датаграммы, также являющиеся частью пакета. Главное отличие датаграмм от сегментов — их автономность. Каждая датаграмма содержит все необходимые заголовки, чтобы дойти до конечного адресата. Они не зависят от состояния сети, могут доставляться разными маршрутами и в разном порядке. При потере датаграмм или сегментов получаются «битые» куски данных, которые не получится корректно обработать. Но для мультимедийных данных это зачастую не так уж важно.
Первые четыре уровня — сфера деятельности сетевых инженеров, а уровни 5 — 7 — разработчиков.
Пятый уровень (сеансовый, Session Layer, L5) отвечает за поддержку сессии (сеанса связи): управляет взаимодействием между приложениями, открывает возможности синхронизации задач, завершения сеанса, обмена информации. Примером работы пятого уровня может служить видеозвонок по сети. Во время видеосвязи необходима синхронная передача двух потоков данных (аудио и видео). Если к разговору двоих человек прибавится третий, то получается уже конференция. В этом случае задачей пятого уровня является сделать так, чтобы собеседники могли понять, кто сейчас говорит.
Шестой уровень (представления данных, Presentation Layer, L6) отвечает за:
·
преобразование протоколов и кодирование/декодирование данных;
·
представление картинок (в JPEG, GIF, PNG и т.п.);
·
представление видео-аудио (MPEG, QuickTime);
·
шифрование данных, если при передаче их требуется защитить.
Седьмой уровень (прикладной, Application Layer, L7) — это то, с чем непосредственно взаимодействуют пользователи, своего рода графический интерфейс всей модели OSI. С другими уровнями пользователи практически не взаимодействуют. Основной задачей седьмого уровня является использование своих протоколов, чтобы пользователь мог видеть данные в понятном ему виде.
IT-компании активно используют модель OSI как эталон. Она используется, в частности, как инструмент при диагностике сетей. Если в сети что-то не работает, то гораздо проще определить уровень, на котором произошла неполадка, чем пытаться перестроить всю сеть заново.
Седьмой уровень (прикладной, Application Layer, L7) — это то, с чем непосредственно взаимодействуют пользователи, своего рода графический интерфейс всей модели OSI. С другими уровнями пользователи практически не взаимодействуют. Основной задачей седьмого уровня является использование своих протоколов, чтобы пользователь мог видеть данные в понятном ему виде.
IT-компании активно используют модель OSI как эталон. Она используется, в частности, как инструмент при диагностике сетей. Если в сети что-то не работает, то гораздо проще определить уровень, на котором произошла неполадка, чем пытаться перестроить всю сеть заново.
2. Что такое Ethernet
Ethernet — это семейство технологий пакетной передачи данных между устройствами для компьютерных и промышленных сетей. На сегодняшний день это самый распространенный протокол в мире, используемый для построения локальных сетей (LAN) и городских сетей (MAN). Протоколы Ethernet работают на канальном и физическом уровнях модели OSI, предоставляя средства для передачи данных между устройствами.
Существует несколько версий протокола Ethernet, работающих тем не менее по одному принципу. Ethernet использует кабельное соединение для передачи данных и использует адресацию MAC-адресацию для идентификации отправителя и получателя данных.
Технология Ethernet, если совсем упрощённо, работает следующим образом:
1. Отправитель создаёт кадр данных, содержащий информацию для отправки.
2. Кадр данных отправляется на сетевой адаптер Отправителя, который преобразует его в электрический или оптический сигнал, подходящий для передачи по соответствующему кабелю.
3. Сетевой адаптер отправляет сигнал по кабелю в коммутатор или маршрутизатор, который находится в той же локальной сети, что и Отправитель.
4. Коммутатор или маршрутизатор получает сигнал, проверяет адрес MAC получателя и направляет кадр данных к соответствующему Получателю.
5. Получатель получает кадр данных, проверяет чек сумму (FCS) и обрабатывает его.
Стандарты Ethernet определяют проводные соединения и электрические сигналы на физическом уровне, формат кадров и протоколы управления доступом к среде — на канальном уровне модели OSI. Ethernet в основном описывается стандартами IEEE группы 802.3. Ethernet стал одной из самых распространённых технологий ЛВС в середине 1990-х годов, вытеснив такие устаревшие технологии, как Token Ring, FDDI и ARCNET.
Далее весь материал статьи будет изложен для сетей Ethernet.
3. Коллизионный домен
Коллизией (Collision) в сети Ethernet называется искажение передаваемых данных, возникающее при их одновременной передаче несколькими рабочими станциями.
Коллизионным доменом называется сегмент сети, в котором возможно возникновение коллизий.
Простейшим коллизионным доменом является локальная сеть на основе концентратора (рис. 3). Концентратор (рис. 4) по сути представляет собой повторитель, распространяющий пакеты, передаваемые одним компьютером, остальным компьютерам сети. Недостатком такой сети является то, что передавать данные должен только один компьютер, а остальные должны его слушать. Если же в один и тот же момент данные передают несколько компьютеров, то случается коллизия. Вся сеть на основе концентратора является коллизионным доменом. Если компьютеров в такой сети немного, то она работает достаточно хорошо. Но при увеличении количества компьютеров в сети её работа ухудшается (замедляется).
Рисунок 3 — Локальная сеть с концентратором
Рисунок 4 — Концентратор от компании Bay Networks
В коллизионном домене один компьютер передаёт данные, а остальные их получают и могут либо реагировать, либо не реагировать, в зависимости от трафика (типа передаваемых пакетов). Возможными типами трафика являются:
·
Unicast –один компьютер передаёт данные только одному другому компьютеру;
·
Broadcast — один компьютер передаёт данные всем компьютерам сети;
·
Multicast — один компьютер передаёт данные нескольким конкретным компьютерам сети.
В данной сети типом трафика является Broadcast. Поэтому сеть требуется сегментировать, т.е. разбить большой коллизионный домен на некоторое количество мелких. Для разделения коллизионного домена на два первоначально использовался Bridge (Мост), имевший два порта, каждый из которых входил в состав своего коллизионного домена, и работавший на втором уровне модели OSI. Коллизии через мост не распространялись. Но очень быстро появилась и воплотилась в «железо» идея о том, что мост может иметь и много портов. Так появились коммутаторы (Switch), работающие на втором уровне модели OSI.
4. Коммутаторы
У коммутаторов каждый порт входит в состав своего коллизионного домена. Сеть на основе коммутатора (рис. 6) представлена на рисунке 5.
Рисунок 5 — Сеть на основе коммутатора
Рисунок 6 — Коммутатор от компании Cisco
Коммутатор преобразует получаемый портом поток бит от Отправителя в кадр Ethernet (рис. 7), в котором содержится MAC-адрес (рис. 8) Получателя и перенаправляет этот кадр на тот порт, к которому подключен Получатель. Для этого коммутатор содержит таблицу MAC-адресов устройств, подключенных к его портам (рис. 9).
Рисунок 7 — Кадр Ethernet
Кадр Ethernet содержит следующие поля:
·
Header (Заголовок):
o DST MAC (6 байт) — MAC — адрес Получателя;
o SRC MAC (6 байт) — MAC — адрес Отправителя;
o TYPE/LENGTH (2 байта) — вид протокола верхнего уровня, принимающего данные для последующей обработки после завершения работы Ethernet/длина (количество) в байтах данных, следующих за этим полем и предшествующих полю FCS;
o поля протокола LLC (Logical Link Control):
— DSAP (Destination Service Access Point, 1 байт) — адрес точки входа службы назначения;
— SSAP (Source Service Access Point, 1 байт) — адрес точки входа службы источника;
— Control (1 байт для режима LLC1 или 2 байта для режима LLC2);
·
Data — поле данных длиной от 46 до 1500 байт;
·
FCS (Frame Check Sequence, 4 байта) — «последовательность проверки кадра» — специальное значение, добавленное в конец кадра для выявления ошибок передачи на принимающей стороне (чаще всего применяется CRC).
Протокол LLC обеспечивает для технологий локальных сетей нужное качество услуг транспортной службы, передавая свои кадры либо дейтаграммным способом, либо с помощью процедур с установлением соединения и восстановлением кадров. LLC передает свой кадр вместе с адресной информацией об узле назначения соответствующему протоколу уровня MAC, который упаковывает кадр LLC в свой кадр (например, кадр Ethernet, см. Рисунок 7). В соответствии со стандартом IEEE 802.2 уровень управления логическим каналом предоставляет верхним уровням три типа процедур:
1. LLC1, Type1, connectionless — сервис без установления соединения и без подтверждения.
2. LLC2, Type2, connection-oriented — сервис c установлением соединения и с подтверждением.
3. LLC3, Type3 — сервис без установления соединения, но с подтверждением.
Рисунок 8 — МАС- адрес
MAC — адрес — это уникальный и неповторимый идентификатор устройства, подключенного к сети, который можно сравнить, например, с паспортом человека.
Пример MAC-адреса представлен на рис. 8. Адрес имеет длину в 48 бит, из которых:
·
22 бита — это идентификатор производителя сетевого устройства (OUI — Organizationally Unique Identifier),
·
24 бита — уникальный номер устройства, определяемый производителем,
·
ВС — бит, указывающий для какого получателя предназначен кадр — одиночного (0) или группового (1),
·
Local — бит, указывающий на принцип администрирования MAC — адреса:
o 0 — глобальный;
o 1 — локальный.
Пример таблицы MAC-адресов коммутатора представлен на рис. 9. В этой таблице присутствуют статические и динамические адреса. Статические адреса принадлежат самому коммутатору, а динамические — устройствам, подключенным к его портам.
Рисунок 9 — Пример таблицы MAC-адресов коммутатора
Коммутатор не пропускает Unicast-пакеты, но должен пропускать Broadcast-пакеты, поэтому все сетевые устройства (хосты) в коммутируемой сети являются одним Broadcast-доменом. Примером Broadcast- запроса является DHCP-запрос, используемый для получения хостом динамического IP-адреса от DHCP-сервера (рис. 10).
Рисунок 10 — Принцип работы DHCP
При подключении хоста к ненастроенной сети он начинает отправлять широковещательные пакеты определённого вида, чтобы достучаться до DHCP-сервера, о существовании которого он пока не знает. DHCP-сервер, получив такой пакет, отвечает на него предложением взять сгенерированный им IP-адрес. Хост получает данный IP-адрес и далее общается Unicast-пакетами.
Кроме DHCP, существует достаточное количество других протоколов, использующих широковещательный трафик. Из-за этого в сети могут возникнуть серьёзные проблемы, влияющие на её производительность, например, широковещательный шторм (если не настроен протокол Spanning Tree). Пример возникновения этого явления представлен на рис. 11.
Рисунок 11 — Пример возникновения широковещательного шторма
Хост А направляет широковещательный пакет на коммутатор A. Коммутатор А транслирует его коммутаторам В и С. Коммутатор С транслирует его коммутатору В, а коммутатор В — коммутатору С. Далее коммутатор А получает этот пакет от коммутаторов В и С обратно и процесс повторяется вновь и вновь. Если хост А продолжает направлять в сеть широковещательные пакеты, то вскоре сеть «захлёбывается».
Spanning Tree Protocol (Протокол покрывающего дерева) — протокол канального уровня (L2), основной задачей которого является устранение петель в топологии произвольной сети Ethernet, в которой есть один или более сетевых мостов или коммутаторов, связанных избыточными соединениями.
Кроме того, широковещательный шторм можно устранить введением в сеть устройства, работающего на третьем уровне модели OSI — маршрутизатора (Router, см. рис. 12), через который широковещательные пакеты самопроизвольно пройти не могут.
Рисунок 12 — В сеть добавлен маршрутизатор
Если коммутатор разделяет коллизионный домен на несколько доменов, то маршрутизатор делает то же самое с широковещательным доменом. Но достаточно давно появилось большое количество различных коммутаторов, поддерживающих работу на третьем уровне модели OSI. В первую очередь здесь речь идёт о магистральных коммутаторах, а не о коммутаторах рабочих групп.