itmo_conspects

Телекоммуникационные системы и технологии

Курс знакомит с сетевым мониторингом, конфигурацией сетевых интерфейсов, маршрутизацией, обработкой пакетов и прочим. Курс преимущественно сделан для работы с ОС GNU/Linux

Лекция 1. Задачи сетевой коммуникации. Модель OSI

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

Помимо этого надо учесть технические аспекты:

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

В начале развития сетевых операционных систем большинство сетевых решений были проприетарными: компании продавали проприетарные оборудование и ПО для сетевого взаимодействия (то есть решения с монолитной архитектурой)

Военные США не желали зависеть от одного поставщика сетевого оборудования, поэтому Международной организацией по стандартизации (ISO) в конце 70-ых была разработана модель OSI - открытая модель сетевой коммуникации

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

  1. Прикладной уровень
  2. Уровень представлений
  3. Сеансовый уровень
  4. Транспортный уровень
  5. Сетевой уровень
  6. Канальный уровень
  7. Физический уровень

Модель OSI

Данные проходят через уровни, обрастая заголовками, содержащие такую информацию, как адрес отправителя, получателя и другое. После канального уровня в конце кадра (фрагмента данных) добавляется DT (Data Trailer), обозначающий конец кадра

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

Большинство сетевых стеков реализуют эту похожую на эту модель. Например, в модели TCP/IP уровней 4: прикладной, транспортный, сетевой, канальный

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

Сегментирования

Несмотря на достаточное абстрагирование от реализаций, модель OSI обладает недостатками:

Подробно поговорим про функции уровней:

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

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

В программе Wireshark можно проанализировать сетевой трафик устройства. Если выбрать какой-нибудь кадр, то можно увидеть его заголовки:

Frame 722: 45 bytes on wire (360 bits), 45 bytes captured (360 bits) on interface \Device\NPF_{8B3A2192-8B36-11F0-8DE9-0242AC120002}, id 0
Ethernet II, Src: Router_98:92:f1 (4c:c6:4c:98:92:f1), Dst: 16:d2:51:89:f3:ab (16:d2:51:89:f3:ab)
Internet Protocol Version 4, Src: 198.51.100.68, Dst: 198.18.0.139
Transmission Control Protocol, Src Port: 60493, Dst Port: 443, Seq: 23254, Ack: 1, Len: 5

Здесь мы можем заметить IP и TCP протоколы и Ethernet, соответствующие сетевому, транспортному и канальному уровням


В наше время для большинства устройств определены два адреса:

Физический адрес нужен для идентификации устройства в пределах локальной сети, а сетевой - в пределах глобальной сети

На сетевом уровне пакету добавляются IP-адреса отправителя и получателя, а на канальном - MAC-адреса отправителя и получателя

Допустим, что есть 3 локальных сети, соединенных маршрутизаторами:

Взаимодействие сетевого и канального уровней

Для простоты здесь используется другой формат физических и сетевых адресов. Если мы хотим отправить пакет от 1.23 к 3.135, то:

  1. Пакет направляется в маршрутизатор E4:5D:3A. При первом подключении узла AF:45:32 к маршрутизатору, узлу присваивается сетевой адрес 1.23, в свою очередь узел запоминает, что, чтобы отправить пакет за пределы своей сети, нужно передать его маршрутизатору
  2. Далее маршрутизатор смотрит на свою таблицу маршрутизации. Там описан следующий шаг в цепочке, чтобы достичь целевой узел. Пакет передается через другой интерфейс маршрутизатора 2.1 в маршрутизатор 2.2
  3. Там маршрутизатор A3:1B:9E понимает, что адрес узла находится в локальной сети и, используя физические адреса, передает нужному узлу пакет

Благодаря абстракции между сетевым и канальным уровнем пропадает надобность от уникальности физических адресов - в нашей системе два узла с адресом AF:45:32. Также в локальной сети 2.X физические адреса могут иметь другой формат

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

Лекция 2. Физический уровень сетевого стека

От чего зависит скорость передачи данных по кабелю? На скорость передачи могут влиять:

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

На физическом уровне передаче могут мешать:

По проводу можно передавать два типа сигнала:

Приемник сам решат, как обрабатывать сигнал, получаемый по проводу, поэтому тип сигнала - это всего лишь интерпретация

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

По Шеннону скорость передачи данных равна H log2(1 + S / N), где H - полоса пропускания фильтра, S - мощность сигнала, N - мощность шума

По Найквисту скорость 2H log2 V, где V - количество дискретных уровней

Увеличение полосы пропускания фильтра (например, использование платиновых проводов) - дорого. Увеличение количества дискретных уровней делает невозможным их различать и приводит к проблемам с аналоговым сигналом

Однако, если разложить цифровой сигнал с помощью преобразования Фурье, то можно получить ряд гармоник - синусоид и косинусоид, которые в сумме повторяют форму цифрового сигнала

Преобразование Фурье

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

Если для линии связи измерить отношение мощность выходного сигнала от входного для разных частот сигнала, то можно получить такую зависимость

АХЧ

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


Теперь двоичный сигнал нужно закодировать. Если несколько методов физической кодировки:

Помимо физического кодирования можно сделать логическое. Логическое кодирование нужно для обнаружения ошибок и улучшение условий передачи. Например, кодирование 4B/5B использует лишний бит для дополнительной информации:

16-ричная система 2-чная система 4B/5B код /
0 0000 11110
1 0001 01001
2 0010 10100
3 0011 10101
4 0100 01010
5 0101 01011
6 0110 01110
7 0111 01111
8 1000 10010
9 1001 10011
A 1010 10110
B 1011 10111
C 1100 11010
D 1101 11011
E 1110 11100
F 1111 11101
Символ 4B/5B код Сообщение
H 00100 Ошибка передачи
I 11111 Ожидание
J 11000 Начало потока
K 10001 Начало потока
L 00110 Начало потока
Q 00000 Потеря сигнала
R 00111 Сброс
S 11001 Набор
T 01101 Конец потока

Код 4B/5B сделан так, чтобы при передачи 4 бит хотя бы дважды происходила смена уровня сигнала


С развитием качества коммуникаций отдельные кабельные системы для различных сервисов превратились в универсальные системы с гарантированной полосой пропускания, модифицируемостью, простотой эксплуатации

Появились различные стандарты (TIA/EIA-568, TIA/EIA-569, ISO/IEC 11801, ANSI/TIA-606), по который должны разрабатываться системы в зданиях. Они в основном определяют характеристики линий связи (амплитудно-частотная характеристика, полоса пропускания, затухание), правила монтажа и эксплуатации, требования к проектирования и тестированию

Далее появился термин СКС:

Структурированная кабельная система (СКС) - универсальная кабельная система здания, объединяющая в себе множество информационных сервисов, таких как локально вычислительные, телефонные сети, системы видеонаблюдения и так далее

Для СКС существует ряд терминов:

Пассивным оборудованием СКС считаются кабели, сплайсы, шнуры и перемычки, соединительное оборудование (такое как коммутационные панели, коробки, телекоммуникационные розетки)

Кабели бывают:

Также кабели бывают с разной оболочкой, разной толщины, для разной среды использования и так далее

Лекция 3. Локальные сети на примере Ethernet

Для чего же нужен канальный уровень?

Каналы разделяются по:

Но если у нас к одному подключены несколько узлов, то встает вопрос, как отличать, кому какой пакет данных направляется. Для этого есть подходы к управлению передачей:

Как можно заметить, коммутация пакетов - универсальный подход, который работает, когда число узлов в одном канале неизвестно заранее, поэтому именно он используется в протоколе Ethernet

Считается, что Ethernet был разработан в 1973 году Робертом Меткалфом в компании Xerox. Далее Ethernet был подробно описан в стандарте IEEE 802.3, а именно кодирование, формат кадров и прочее

Ethernet использует технологию CSMA/CD (Carrier Sense Multiple Access with Collision Detection - множественный доступ с прослушиванием несущей частоты и обнаружением коллизий). Она подразумевает алгоритмы для приема и передачи пакетов, причем если один и тот же пакет пришел дважды, то он обрабатывается один раз.

Прием в CSMA/CD происходит так:

  1. Приемник ждет, пока не обнаружит сигнал на линии
  2. При обнаружении приемник устанавливает синхронизацию, читает данные с канала и ждет ограничителя (Data Trailer)
  3. Если ограничитель обнаружен и адрес приема совпадает с тем, что в заголовке, то данные переходят наверх по уровню в стеке модели

Передача устроена сложнее:

  1. Вводится параметр Interpacket gap (IPG) или Interframe gap (IFG) - минимальный интервал между передаваемыми пакетами. Для скорости 10 Мбит/с - это 9.6 мкс, для 100 Мбит/с - 0.96 мкс, для 1 Гбит/с - 96 нс и так далее
  2. Далее пакет собирается, узел ждет, пока не закончится передача другого узла в канале, если такова есть
  3. Ждем, пока не пройдет минимальный интервал IPG с момента последней передачи
  4. Передаем биты кадра. Если во время передачи бита не был обнаружен прием другого пакета, то передавать следующие биты, пока они не закончатся
  5. Если во время передачи был обнаружен прием, то есть произошла коллизия, то:

    • Всем узлам передается Jam-сигнал, чтобы все знали, что произошла коллизия
    • Далее вычисляется время ожидания до следующей отправки по формуле P = L * T, где T - количество времени для отправки 512 битов (для 10 Мбит/с - это 51.2 мкс), L - случайное число из диапазона от 0 до 2^N, где N - текущее число попыток, при этом L <= 1023
    • После ожидания отправка повторяется заново

    Если количество попыток превысило 16, то отправка считается неудачной

CSMA/CD

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


Для идентификации в локальной сети на канальном уровне у узла есть MAC-адрес, состоящий из 6 байт, то есть 6 октет, то есть 48 бит

Первые три байта являются идентификатором производителя (OUI, Organizationally Unique Identifier или MFG от Manufacturing) - , а последние, NIC (Network Interface Controller), идентифицирует сам сетевой контроллер

Идентификатор производителя выдается институтом IEEE (их можно посмотреть на standards-oui.ieee.org/oui/oui.txt), а идентификатор контроллера - уникальный для устройств производителя, отсюда каждый MAC-адрес глобально уникален. В этом случае седьмой бит MAC-адреса будет равен 0. Пример такого адреса - 54:f2:03:92:93:c9

Большинство драйверов сетевых карт могут изменить MAC-адрес, но тогда седьмой бит обязан быть равен 1, что означает, что устройство с таким MAC-адресом администрируется локально. Пример такого адреса - 1e:1d:69:7e:51:22

Если в адресе получателя восьмой бит равен 0, то передача происходит только узлу с этим адресом, все остальные узлы в домене коллизий обязаны проигнорировать кадр

Если же восьмой бит равен 1, то передача считается мультивещательной, и ее примут те узлы, которые настроены принимать кадры на этот адрес, таким образом, можно передавать кадры определенной группе узлов. Пример такого адреса - 51:ed:cb:0b:83:ba

Адрес получателя FF:FF:FF:FF:FF:FF считается особым и означает, что кадр предназначен всем узлам в локальной сети

Современные устройства умеют рандомизировать MAC-адреса для большей безопасности

Разберем формат кадра Ethernet:

  1. MAC-адрес получателя
  2. MAC-адрес отправителя
  3. Ethertype - тип формата кадра как двухбитное число
  4. Полезная нагрузка размером от 42 байт до 1500 байт
  5. 4 байт контрольной суммы, найденные через алгоритм циклического избыточного кода (CRC, cyclic redundancy check)

Всего существует несколько типов формата:

Ethernet-заголовок

Как можно заметить, протокол Ethernet почти не создает нагрузку на пропускную способность: из 1518 байт под полезную нагрузку выделено 1500, то есть 98.8%


Физических стандартов Ethernet существует много:

Суффикс означает вариант реализации, например T - витая пара (от Twisted pair)

В качестве оборудования используют

Для повторения сигналов существуют два прибора:

Лекция 4. Коммутаторы сетей Ethernet

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

Если домен коллизий меньше, то с меньшей вероятностью она случается, тем самым не занимая время канала на ожидание

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

Однако, если подсоединить два каких-то коммутаторов и отправить пакет, то этот пакет из одного коммутатора перейдет к другому, потом к самому же себе через другой путь и отправлен заново, то есть дублирован в сети

Неконтролируемое дублирование широковещательного сигнала называется широковещательным штормом

Широковещательный шторм

Поэтому для построения топологически сложных сетей нужно что-то более хитрое, чем простой коммутатор


Сетевой адаптер - ключевое устройство для доступа вычислительного узла к сети. Он характеризуется:

Концентраторы, повторители и медиаконверторы:

Коммутаторы работают на более высоком уровне:

При этом маршрутизатор (или роутер) объединяет узлы на сетевом уровне, использую адресную информацию в заголовке сетевого уровня. При получении кадр раскрывается до содержимого на сетевом уровне, а затем заново упаковывается, используя другие адреса сетевого уровня

Коммутатор L3 нельзя полностью считать роутером, так как роутер способен работать с разными канальными протоколами и иметь более сложные функции (например, VPN)

Коммутаторы делятся также по конструкции: настольные, стоечные (rack mount, 19 дюймов в ширину), промышленные (на din-рейку). Коммутаторы могут иметь слоты расширения, например, по стандарту GBIC (Gigabit Interface Converters) или SFP (Small Form-factor Pluggable)

Коммутатор характеризуется:

Скорость коммутатора могут ограничивать:


Помимо коммутации коммутатор также может:

Возможности коммутатора

Также коммутаторы делятся на:

Они отражают уровни иерархии коммутаторов

Лекция 5. Стек TCP/IP

Стеком TCP/IP называют набор упорядоченных сетевых протоколов. Он был назван в честь двух широкораспространенных протоколов:

Стек TCP/IP является открытым и платформонезависимым, поэтому он получил такое широкое распространение

В 1967 году начался проект ARPA (Advanced Research Projects Agency), в 1972 году появился ARPANET - сеть, соединявшая 30 узлов. В 1980-1981 годах были опубликованы в рамках работы протоколы IP, TCP, UDP

Далее TCP/IP был переработан из монолитной архитектуры в слоенную (наподобие модели OSI), а его реализация была включена в операционную систему BSD

Так как BSD распространялась в университетах, стек TCP/IP получил распространение в университетах. К концу 80-ых годов ARPANET стала называется Internet (Interconnected networks) и объединяла университеты и научные центры США, Канады, Европы

В 1992 появляется WWW, World Wide Web, основанный на протоколе HTTP

В стек TCP/IP входят 4 уровня:

Уровни TCP/IP

На транспортном уровне в основном используются два протокола:

Сейчас стек TCP/IP развивается благодаря комитету IETF (Internet Engineering Task Force, Инженерный совет Интернета) и документа RFC (Request for Comments)

В стеке TCP/IP адресация установлена на разных уровнях

Уровень Адрес Пример
Прикладной Доменное имя из DNS itmo.ru
Транспортный Номер порта TCP или UDP 443
Сетевой IP-адрес 192.0.2.227
Канальный MAC-адрес 16:52:91:ff:13:c4

Рассмотрим механизм установления соединения, например, при доступе к сайту google.com

  1. Для начала компьютеру с браузером и серверу Google назначаются IP-адреса, пусть это будут 198.18.55.205 и 203.0.113.209. Так как браузер использует TCP, то на сервере будет открыт порт TCP 80, которые в операционной системе привязан к веб-приложению

  2. Далее при отправке запроса браузер запрашивает случайный свободный порт у ОС выше 1024, пусть это будет 29384

  3. Библиотека, реализующая TCP, формирует пакет и включает в него порты отправителя 29384 и получателя 80
  4. Библиотека, реализующая IP, формирует пакет и включает в него адреса 198.18.55.205 и 203.0.113.209
  5. Далее пакет идет по протоколу Ethernet на сервер, там обрабатывается, аналогично формируется ответ на основе заголовков пришедшего пакета и отправляется обратно
  6. После этого браузер получает пакет от сервера и отправляет еще один, заключив тем самым тройное рукопожатие и устойчивое соединение
  7. Теперь в пакете можно передавать данные

Заметим, что у клиента порт случайный, а у сервера заранее был известен


В протоколе IP есть возможность указать тип рассылки:

Cast types

Долгое время популярным остается четвертая версия протокола IP - IPv4. IPv4-адрес состоит из 4 байтов (октетов) и записываются так: W.X.Y.Z, где W, X, Y, Z - числа от 0 до 255

Таким образом, пространство IPv4 адресов занимает 2^32 адресов (около 4 миллиардов)

Адрес делится на две части - адрес сети, до которой пакет надо доставить, и адрес конкретного узла внутри сети

Адреса делятся двумя способами:

Также существуют специальные IP-адреса

Еще были зарезервированы несколько диапазонов адресов классов A, B и С, которые не маршрутизированы в Интернет. Такие адреса называют частными или серыми:

Еще существует маска “wildcard mask” - 4 байта, с помощью которых можно настроить фильтрацию трафика на специальные адреса. В этой маске 0 значит, что разряд в адресе получателя должен совпадать с разрядом адреса-образца


Количество IPv4-адресов мало, поэтому появился IPv6

Адрес IPv6 представляет собой 128 бит, записанных в формате x:x:x:x:x:x:x:x, например, 2001:0db8:00af:abcd:0000:0000:0000:0034

Ведущие нули при этом убирают, а группы нулей сокращают до ::: 2001:db8:af:abcd::0034

В IPv6 есть только префиксные маски, по умолчанию префикс - 64

Типы адресов делятся на:

Адресов для широковещания нет, чтобы снизить нагрузку на сеть

Также специальные адреса:

Лекция 6. Протокол IPv4

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

Для этого у узла должен быть IP-адрес. Для протокола IP четвертой версии адрес состоит из 4 байт, например, 240.19.64.22

Далее при известных адресах получателя и отправителя для пакета формируется заголовок. Заголовок состоит из таких полей

Заголовок дополняется нулями в конце так, чтобы занимаемое число байт было кратно 4

IPv4-заголовок

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

Также маршрутизатор можно иметь разную максимальную длину пакета (MTU, Maximum transmission unit). Чтобы уметь передавать большие пакеты до 65000 байт, нужно их фрагментировать - разделить на маленькие, которые можно передать, а на приемнике их собрать. Для этого в заголовке используются:

Например, есть пакет длиной 5140 байт, тогда он разобьется на 4 фрагмента (пусть MTU = 1500):

Идентификатор Размер пакета Флаг DF Флаг MF Смещение пакета
345 1500 0 1 0
345 1500 0 1 185
345 1500 0 1 370
345 700 0 0 555

Суммарно пакет вырос на 60 байт - 3 размера IP-заголовков дополнительных фрагментов

Лекция 7. Соединение IP сетей

Как же пакеты узнают путь, через какой путь им идти, чтобы достичь узла назначения. Для решения этого есть 2 подхода:

  1. Маршрутизация (Routing)
  2. Трансляция адресов (NAT, Network Address Translation)

Маршрутизация

Маршрутизация - процесс определения маршрута следования информации в сетях связи. Чтобы такое провернуть, нужно:

Сеть представляет собой взвешенный граф, поэтому нужен наиболее оптимальный маршрут с наименьшими задержкой, потерей пакетов, длиной, нагруженностью и стоимостью

Маршрутизацией занимаются маршрутизатор, они бывают:

Для осуществления маршрутизации маршрутизатор хранит таблицу маршрутизации, в основном она содержит:

В Windows такую таблицу можно посмотреть с помощью команды route print:

===========================================================================
Список интерфейсов
  2...0a 00 27 00 00 02 ......VirtualBox Host-Only Ethernet Adapter
  5...1c 15 e5 cc 68 99 ......Qualcomm WCN685x Wi-Fi 6E Dual Band Simultaneous (DBS) WiFiCx Network Adapter
 13...2e 15 e5 cc 68 98 ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
 57...fa 11 c7 9f 1e 89 ......Hyper-V Virtual Ethernet Adapter
===========================================================================

IPv4 таблица маршрута
===========================================================================
Активные маршруты:
Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
          0.0.0.0          0.0.0.0      203.0.113.1    203.0.113.199   9257
          0.0.0.0          0.0.0.0     198.18.108.1     172.28.18.50     35
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
        192.0.0.0    255.255.240.0         On-link        192.0.0.50    291
       192.0.0.50  255.255.255.255         On-link        192.0.0.50    291
      192.0.0.255  255.255.255.255         On-link        192.0.0.50    291
     198.18.108.0    255.255.255.0         On-link      198.18.108.1    281
     198.18.108.1  255.255.255.255         On-link      198.18.108.1    281
   198.18.108.255  255.255.255.255         On-link      198.18.108.1    281
      203.0.113.0        255.0.0.0         On-link     203.0.113.199    257
    203.0.113.199  255.255.255.255         On-link     203.0.113.199    257
    203.0.113.255  255.255.255.255         On-link     203.0.113.199    257
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link      198.18.108.1    281
        224.0.0.0        240.0.0.0         On-link     203.0.113.199    257
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link        192.0.0.50    291
  255.255.255.255  255.255.255.255         On-link      198.18.108.1    281
  255.255.255.255  255.255.255.255         On-link     203.0.113.199    257
===========================================================================
Постоянные маршруты:
  Сетевой адрес            Маска    Адрес шлюза      Метрика
          0.0.0.0          0.0.0.0      203.0.113.1    9256
===========================================================================

IPv6 таблица маршрута
===========================================================================
Активные маршруты:
 Метрика   Сетевой адрес            Шлюз
  1    331 ::1/128                  On-link
  1    331 ff00::/8                 On-link
===========================================================================
Постоянные маршруты:
  Отсутствует

В Linux такую таблицу можно посмотреть командой route. В ней будут присутствовать для каждой записи флаги:

Маршруты при отправке выбираются так:

Далее по шлюзу выбранной записи из таблицы отправляется пакет


Таблицы бывают статическими, динамическими внутренними и динамическими внешними

Один из старых протоколов RIP2 используется для обмена таблиц маршрутизации между роутерами. Работает он довольно просто:

  1. Роутеры подключаются, формируют базовую таблицу маршрутизации на основе соседей
  2. Один из роутеров передает всем подключенным узлам свою таблицу
  3. Далее другой роутер принимает ее, объединяет со своей и удаляет дубликаты с большей метрикой

Проблемой RIP2 является то, что любая связь имеет вес 1, то есть маршрут является коротким, если он состоит из меньшего числа узлов, а не из большей пропускающей способности каналов и нагруженности

Максимальная метрика равна 16 - тогда считается, что маршрут недоступен

Проблемы RIP2 решились протоколом OSPF, который использует алгоритм Дейкстры для поиска путей

Трансляция адресов

Трансляция адресов (Network Address Translation, NAT) обеспечивает связь хостов из немаршрутизируемой сети во внешнюю IP-Сеть. Трансляция бывает:

Трансляция также бывает в виде публикации адреса, клиентского NAT и публикации порта

Клиентский NAT

Лекция 8. Протокол IPv6

Протокол IPv6 начал разрабатываться в 1996 году. В 1998 году был выпущен стандарт RFC 2460, в котором описан протокол IPv6. В 2010 году появилось четвертое поколение мобильной связи 4G

В 2011 году последняя сеть /8 была выдана комитетом IANA (Internet Assigned Numbers Authority). 6 июня 2012 года состоялся всемирный запуск Интернета IPv6

Переход на IPv6 нужен был, так как IPv4-адреса закончились (несмотря на то, что есть трансляция адресов) и протокол IPv4 имел свои недостатки

Рассмотрим, как IP адреса распределяются конечным пользователям. Белые IP-адреса выделяются комитетом IANA организациям RIR (Regional Internet Registry), привязанных к определенному региону

Всего организаций RIR пять:

Далее адреса от RIR раздаются LIR (Local Internet Registry) - локальным организациям (обычно это институты, провайдеры связи или корпорации), а от них провайдерам и конечным пользователям

Последняя сеть /24 была выделена в 2019 году европейским RIPE NCC. Сейчас все IPv4-адреса (не считая зарезервированных и класса E) заняты и перераспределяются организаторами-операторами

Помимо малого числа адресов протокол IPv4 имеет еще недостатки:


Заголовок IPv6-пакета состоит из следующих полей:

Заголовок IPv6-пакета

Помимо адреса, IPv6 также имеет такие изменения:

Адрес IPv6 состоит из 128 бит. Они бывают:


В отличии от IPv4, где автоконфигурирование осуществляется по протоколу DHCP, в IPv6 есть 3 варианта автоконфигурирования:

Также, с приходом DHCPv6 стало возможным выделять не один IPv6-адрес, а диапазон с префиксом. Роутер (обобщенно Customer Premises Equipment) подключается к сети провайдера, делает широковещательный запрос на делегацию IP-адресов самостоятельно. DHCP-сервер выдает префикс роутеру, а роутер сам может раздавать адреса узлам в сети. Такой подход называется Prefix Delegation


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

Используется, но:

Однако важно учесть:

Лекция 9. Конфигурация с помощью DHCP и ICMP

Для работы сетевого узла ему нужно знать:

Чтобы базово настроить узел, а именно присвоить ему IP-адрес в сети, можно применить один из трех подходов:

Для централизованной конфигурации и создали протокол DHCP (Dynamic Host Configuration Protocol), основным назначением которого является управление адресным пространством сети

Чтобы сетевому клиенту выдать узел, в сети должен быть подключен центральный DHCP-сервер, который управляет пулом (то есть пространством) адресов

Протокол DHCP создавался как расширение протокола BOOTP, использовавшегося ранее для IP-конфигурации сетевых узлов, поэтому DHCP-сервер использует порт UDP 67, а DHCP-клиент - 68

Алгоритм работы протокола DHCP таков:

Работа DHCP

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

В последнем пакете сервера указано время аренды адреса T. После времени T адрес становится недействительным и его нужно заново запрашивать. Однако его можно продлить:

DHCPv4

Формат DHCPv4-пакета выглядит так:

Формат DHCP

Он имеет следующие поля:

Помимо DHCPDISCOVER, DHCPOFFER, DHCPREQUEST и DHCPACK существуют другие сообщения:


В локальной сети может не оказаться DHCP-сервера, а, так как широковещание не маршрутизируется, используют агенты ретрансляции DHCP (DCHP relay), которые пересылаются пакеты DHCP-серверам

Агенты ретрансляции могут знать про сервера, поэтому адреса в IP-пакете заменяться на те, маршрутизация к которым возможна, поэтому достаточно одного в локальной сети и в маршруте до DHCP-сервера

DHCPv6

Для работы в IPv6-сетях протокол DHCP доработали, и появился DHCPv6. В нем:

Также появились два режима работы:

Также изменились сообщения:

  1. SOLICIT - используется клиентом для поиска серверов (аналог DHCPDISCOVER)
  2. ADVERTISE - DHCPv6-сервер сообщает о себе в ответ на SOLICIT (аналог DHCPOFFER)
  3. REQUEST - клиент запрашивает параметры у конкретного сервера
  4. CONFIRM - клиент подтверждает, что получил адрес
  5. RENEW - клиент просит сервер, от которого уже получил параметры, продлить время их действия
  6. REPLY - ответ сервера с параметрами или подтверждение ранее выданных параметров (аналог DHCPACK)
  7. RELEASE - клиент сообщает серверу об освобождении ранее полученного адреса
  8. DECLINE - клиент отклонил предложенный адрес, так как его уже кто-то использует
  9. INFORMATION-REQUEST - запрос от клиента к серверу на выдачу опций, но не адреса

Также помимо SOLICIT -> ADVERTISE -> REQUEST -> REPLY появился механизм ускоренной выдачи адресов (Rapid Commit) SOLICIT -> REPLY, которая включается опцией в заголовке

Как было упомянуто, DHCPv6 позволяет выделять диапазон сети роутеру клиента (то есть Customer Premises Equipment), чтобы сам роутер мог делегировать адреса узлам в подсети

Также в DHCPv6 стало возможным несколькими способами производить конфигурацию:

Лекция 10. Транспортные протоколы UDP, TCP, QUIC

Задача транспортного уровня - это диспетчеризация данных между приложениями и обеспечение гарантий доставки

В TCP/IP эту роль выполняют протоколы TCP (Transmission Control Protocol) и UDP (User Datagram Protocol)

Адресов транспортного уровня в стеке TCP/IP является номер порта. Порты, как и сокеты, выдаются операционной системой, поэтому операционная система может свободно передать нужный пакет, если на узле есть два разных IP-адреса с одинаковыми портами. Порты для TCP и UDP могут совпадать.

Номера портов для серверов фиксированы. Есть порты, определяемые стандартами RFC (такие как 80 для HTTP) и неофициальные. Номера портов для клиентов - произвольные и больше 1024

Порт с номером 0 разрешен для использования в UDP, но запрещен в TCP, хотя в операционных системах 0 означает, что сама ОС должна выбрать свободный порт

UDP

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

Заголовок UDP-дейтаграммы

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

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

Протокол UDP используется протоколом DNS, для стриминга видео и аудио и в сетевых видеоиграх

TCP

Протокол TCP описан множеством стандартов RFC и используется для:

Заголовок TCP-сегмента выглядит так:

Заголовок TCP-сегмента


Но как же в TCP обеспечиваются гарантии доставки? Отправлять по одному пакету и ждать подтверждения не оптимально, так как задержка может быть большой. Поэтому отправляются несколько сегментов таких, что их размер не превышает размер окна. Как только сегмент подтверждается получателем, его объем вычитается из размера окна

Размер окна - это параметр операционной системы и обычно равен 64 кБ. Поздние RFC предполагают изменять окно на основе статистике: если подтверждения успешно доставляют, то окно увеличивается

Однако, если пакет потерялся, применяются следующие стратегии:


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

Открытие соединения

Из этого следует, что можно сделать DOS-атаку: просто посылать на сервер только первый сегмент и не отправлять последующий. У сервера заканчиваются открытые сокеты, ожидающие второй сегмент от клиента и он больше не может открывать последующие соединения. Решением этого является уменьшение таймера (еще один параметр ОС), после которого неустановленное соединение раньше сбрасывается

Соединение закрывается аналогично:

Таким образом, каждая сторона закрывает свою часть логического соединения

Закрытие соединения

Однако соединение у получателя не сразу закрывается после получения FIN, чтобы успешно дошли заблудившиеся пакеты или чтобы восстановить соединение (сейчас восстановление не применяется). Обычно такое время составляет 30, 60 или 120 секунд

В общем, автомат состояний TCP-сокета выглядит так:

Состояния TCP-соединения


Самая мякотка протокола TCP - регулирование скорости. Чтобы все дошло, нужно ограничивать скорость, так как она меняется в зависимости от:

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

Если отправитель получает сообщение о повторной отправке, то считается, что наступила ситуация “перегрузки”, и уменьшается интенсивность отправления, так называемое окно перегрузки (Congestion Window). Окно перегрузки позволяет согласовать полную загрузку виртуального соединения и текущие возможности канала, минимизируя потери пакетов при перегрузке

Когда роутер понимает, что буфер заканчивается, устанавливает флаг ECN в поле “Тип службы” в заголовке IP-пакета. Получатель получает его, понимает, что промежуточные узлы перегружены, поэтому в заголовке TCP-сегмента ставит флаг ECN

Алгоритмов контроля перегрузки множество: CUBIC TCP, BBR TCP, Highspeed TCP, H-TCP, TCP Hybla, TCP-Illinois, TCP Low Priority, TCP Vegas, TCP NewReno, TCP Veno, TCP Westwood+, YeAH-TCP

Увеличение окна перегрузки обычно происходит так:

Размер окна перегрузки

Помимо этого, есть еще один механизм. Если у получателя буфер для TCP-сегментов почти заполнен, то в сегменте подтверждения отправляет в заголовке объем свободного буфера (поле “Размер окна”). Отправитель посылает ровно столько сегментов, сколько осталось в буфере, и, не посылая ничего, ждет, пока придут подтверждения

QUIC

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

Перерабатывать TCP или делать что-то новое - слишком дорого из легаси-кода. Поэтому специалисты из Google решили сделать прослойку между быстрым UDP и прикладным уровнем - протокол QUIC

До этого в HTTP/1.0 применялась параллельная загрузка частей веб-страницы по разным TCP-соединениям. Такое активное взаимодействие создавало значительную нагрузку на сеть: избыточные рукопожатия, множества открытых сокетов у сервера обслуживают одного клиента и так далее

В HTTP/2.0 решили сделать одно TCP-соединение, но с мультиплексированием, то есть файлы веб-страницы передаются по одному TCP-соединению, а HTTP управляет, какие сегменты принадлежат каким файлам. Проблема появилась тогда, когда какой-либо пакет теряется (например, ненужная картинка), то окно перегрузки уменьшается, и скорость падает (проблема Head-of-line-blocking)

В Google решили сделать протокол QUIC, который находится в пользовательском пространстве ОС, является прокси над UDP и решает задачи TCP более проще. На его основе сделан HTTP/3.0. К тому же протокол QUIC понимает семантику данных, поэтому скорость не падает при потери второстепенных данных

Чтобы QUIC внедрить, нужна поддержка со стороны сервера и клиента. Со стороны клиента нужна поддержка приложения или браузера (QUIC поддерживается браузерами Firefox, Safari и на основе Chromium) и сервера (Nginx и другие, которые поддерживают HTTP/3.0)

Сетевой стек для HTTP

Лекция 11. Безопасность сети

Сетевая безопасность является комплексным процессом, реализующимся на нескольких уровнях сетевого стека

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

Физический уровень

На физическом уровне в первую очередь реализуется ограничение доступа к оборудованию. Большинство операционных систем предоставляют базовые механизмы аутентификации пользователей, однако их реализация часто имеет уязвимости (например, Windows хранит хеши паролей без соли)

В конечном итоге, как с угоном машины, для профессионального специалиста это всего лишь замедляет проникновение злоумышленника

Также применяют ЭМ-защиту для защиты Wi-Fi сигнала и физическое отключение неактивных портов оборудования в структурированной кабельной системе

Физические протоколы не предполагают шифрования (помимо Wi-Fi, но Wi-Fi не ограничен кабелем), поэтому передаваемые по медным или оптическим кабелям данные на этом уровне изначально уязвимы к перехвату

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

На канальном уровне можно:

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

На сетевом уровне применяются:

Файрволл (или Брандмауэр, сетевой экран, сетевой фильтр) получил название от кирпичной стены, защищавшей деревянное здание от огня другого горящего здания

С помощью файрволла осуществляется ограничение подключений, фильтрация транзитного трафика и активная защита

Файрволл представляет из себя

Правила могут храниться как

Также помимо файрволла применяют механизм демилитаризованной зоны (DMZ, Demilitarized Zone) - изолированного сетевого сегмента, расположенного между внутренней доверенной сетью (например, корпоративной локальной сетью) и внешней ненадежной сетью (например, Интернетом). Демилитаризованная зона не дает злоумышленнику, скомпрометировавшему такой сервер, сразу же попасть во внутреннюю сеть с конфиденциальными данными

Пакет в файрволле проверяется по значения в полях заголовков протоколов IP, TCP, UPD и других, а потом к нему применяются действия, такие как:

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

Самая распространенная утилита iptables работает так: есть 5 таблиц

Каждая таблица имеет свой ряд цепочек, которые применяются в ходе обработки пакетов

iptables

Фильтры для iptables настраиваются так:

# для таблицы filter и цепочки INPUT
# TCP-сегменты от отправителя 8.8.8.8:53 получателю 192.168.1.1
# ПРИНИМАТЬ
iptables -t filter -A INPUT -p tcp -s 8.8.8.8 --sport 53 -d 192.168.1.1 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты от отправителя 10.0.0.1/32:8080
# ПРИНИМАТЬ
iptables -t filter -A INPUT -p tcp -s 10.0.0.1/32 --dport 8080 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты на порты 18070 и 18081
# ПРИНИМАТЬ
iptables -t filter -A INPUT -p tcp --dport 18070:18081 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты на порт 8080
# ПРИНИМАТЬ
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# для таблицы filter и цепочки OUTPUT
# TCP-сегменты на порт 8080
# ПРИНИМАТЬ
iptables -A OUTPUT -p tcp --dport 8080 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты, пришедшие на интерфейс eth1 на порт 3306,
# СБРАСЫВАТЬ
iptables -A INPUT -i eth1 -p tcp --dport 3306 -j DROP

# для таблицы filter и цепочки INPUT
# TCP-сегменты, пришедшие на интерфейс eth1 на порт 22
# и не с адреса 10.0.0.4,
# СБРАСЫВАТЬ
iptables -A INPUT -i eth1 -p tcp -s !10.0.0.4 --dport 22 -j DROP

Также iptables может проверять флаги протокола TCP, например, чтобы инициатором соединения был только один из хостов:

# для таблицы filter и цепочки INPUT
# TCP-сегменты, в которых из флагов FIN, SYN, RST и ACK 
# есть только флаг SYN, на порт 80
# ПРИНИМАТЬ
iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN --dport 80 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты, в которых из флагов SYN и ACK 
# есть только флаг ACK, на порт 80
# ПРИНИМАТЬ
iptables -A INPUT -p tcp --tcp-flags SYN,ACK ACK --dport 80 -j ACCEPT

Вместо списка можно указать все флаги, ALL, или ни одного, NONE. Также для TCP-сегментов есть специальные состояния: состояние NEW - это только флаг SYN, состояние ESTABLISHED - флаги SYN+ACK, ACK или FIN+ACK и другие

iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i venet0 -p udp-m state --state NEW,ESTABLISHED --dport 10206 -j ACCEPT
iptables -A OUTPUT -o venet0 -p udp-m state --state ESTABLISHED --sport 10206 -j ACCEPT

iptables позволяет пометить пакеты (например, по флагам), что упрощает дальнейшую фильтрацию:

Помимо этого iptables позволяет делать трансляцию адресов. Для этого в операционной системе Linux, нужно включить пересылку IPv4-пакетов:

sysctl -w net.ipv4.ip_forward=1

Далее применяются правила


Сохранять правила можно так:

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Как можно заметить, правила для IPv4 и для IPv6 разные, за что iptables критикуют. Далее правила можно применить из файла:

iptables-restore < /etc/iptables/rules.v4

Пакет iptables-persistent позволяет автоматически загружать при включении системы правила из файлов /etc/iptables/rules.v4 и /etc/iptables/rules.v6

Другие механизмы

Другая утилита, fail2ban, считывает логи подключений, обнаруживает подозрительные случаи и блокирует доступ для этих IP-адресов

Помимо защиты основного сервера можно поставить приманку (Honeypot, горшок с медом) - сервер, который выдает себя за реальный, и, из-за чрезмерного доступа к которому, злоумышленник обнаруживается

Такие механизмы называются системами обнаружения вторжений (IDS, Intrusion Detection System). Более продвинутые системы, системы предотвращения вторжений (IPS, Intrusion Prevention System), способны автоматически защищаться от вторжений и нарушения безопасности

Широкое распространения имеют DoS-атаки (Denial-of-service, отказ в обслуживание), в которых целью является довести сетевой узел до отказа, то есть ситуации, в которых добросовестные пользователи не смогут получить к ней доступ

DoS-атаки от одного узла легко распознать, а с нескольких сотен намного тяжелее - такие имеют имя распределенных DoS-атак (или DDoS, Distributed DoS)

DoS-атаки могут проводиться на разные уровни сетевого стека:

Лекция 12. DNS

DNS (Domain Name System) - технология, позволяющая по доменному имени узнать IP-адрес сервера и наоборот

Домен (или доменное имя) - область пространства имён сети Интернет, которая обозначается уникальным доменным именем, обслуживается набором серверов доменных имён и централизованно администрируется

DNS была описана Полом Мокапетрисом в 1984 году стандартами RFC 882 и RFC 883. Позже выходило множество стандартов, описывающих DNS

DNS использует свой протокол, для передачи пакетов которого используется UDP или TCP и порт сервера 53. Формат DNS-пакет такой:

Далее идут секции запросов, ответов, авторитетных и дополнительных записей

Имена запрашиваемых ресурсов передаются с нуль-терминатором

Формат DNS

Чтобы DNS-клиенту получить запись о IP-адресе, ему нужно обратиться к DNS-серверу. DNS-сервера бывают:

Сервера отвечают за зоны - пространства записей, где соотнесены IP-адреса и домена

Сами доменные имена представляют из себя дерево. Это дерево начинается с имени ., которое называют корневым доменом:

Домены

Эта точка в реальной жизни опускается в виду ее очевидности

От него идут домены первого уровня, они бывают национальными (ccTLD, country code Top Level Domain), определенные стандартом ISO 3166, такие как .ru, .su, .рф, и тематические, такие как .com (коммерция), .gov (government, правительство), .net (network, сеть) и другие

Дальше идут домены домены второго уровня, такие как itmo.ru, а за ними третьего, четвертого и так далее.

На весь домен (так называемый FQDN, Fully Qualified Domain Name) действует ограничение в 255 октет, а длина имени между точками должна быть не меньше 63 октет

Помимо этого, существуют зарезервированные имена, такие как example.com, example.org, example.net и другие

Также существует зона обратного просмотра, созданная для разрешения доменного имени по IP-адресу: Z.Y.X.W.in-addr.arpa., где W.X.Y.Z - IPv4-адрес


За корневую зону отвечают корневые сервера. Они управляются ICANN (Internet Corporation for Assigned Names and Numbers) и их всего 13:

Имя IPv4-адрес IPv6-адрес Компания Местоположение
a.root-servers.net 198.41.0.4 2001:503:ba3e::2:30 Verisign Inc. США
b.root-servers.net 170.247.170.2 2801:1b8:10::b University of Southern California, Information Sciences Institute США
c.root-servers.net 192.33.4.12 2001:500:2::c Cogent Communications США
d.root-servers.net 199.7.91.13 2001:500:2d::d University of Maryland США
e.root-servers.net 192.203.230.10 2001:500:a8::e NASA (Ames Research Center) США
f.root-servers.net 192.5.5.241 2001:500:2f::f Internet Systems Consortium, Inc. США
g.root-servers.net 192.112.36.4 2001:500:12::d0d US Department of Defense (NIC) США
h.root-servers.net 198.97.190.53 2001:500:1::53 US Army (Research Lab) США
i.root-servers.net 192.36.148.17 2001:7fe::53 Netnod Швеция
j.root-servers.net 192.58.128.30 2001:503:c27::2:30 Verisign, Inc. США
k.root-servers.net 193.0.14.129 2001:7fd::1 RIPE NCC Нидерланды
l.root-servers.net 199.7.83.42 2001:500:9f::42 ICANN США
m.root-servers.net 202.12.27.33 2001:dc3::35 WIDE Project Япония

Помимо них, также есть реплики, копирующие записи этих серверов. Данные между репликами синхронизируются с помощью протокола TCP

IP-адреса корневых сервером записаны на каждом устройстве, которые способны разрешать доменные имя. Далее по полученным от них IP-адреса DNS-серверов зон ниже можно рекурсивно определить IP-адрес

На Linux утилита dig позволяет посмотреть DNS-записи. На Windows есть аналог nslookup. Всего существует множество типов записей:


Чтобы зарегистрировать свой домен, нужно внести его в централизованную базу данных (реестр) и заплатить регистратору денежку

Такой реестр содержит информацию о зарегистрированных доменных именах, данные администраторов доменов и другую информацию, необходимую для функционирования доменов

Регистратором доменных имен является аккредитованная организация, уполномоченная вносить записи в реестр. Для доменов .ru, .su и .рф аккредитовано 38 регистраторов Координационным центром национального домена сети Интернет

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

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

X. Программа экзамена

  1. Модель OSI. Уровни, их назначение, инкапсуляция-деинкапсуляция при передачи.
  2. Адресация на канальном и сетевом уровнях. Использование при передаче по составной сети.
  3. Понятие СКС. Уровни, основное пассивное оборудование, обеспечение пропускной способности.
  4. Локальные сети Ethernet. Канальный протокол.
  5. Коммутаторы L2, L3, их характерные особенности.
  6. Сети WiFi. Топологии. Канальный протокол. Алгоритм работы.
  7. Архитектура стека TCP/IP (уровни, назначение, потоки данных, примеры протоколов),
  8. Адресная информация в TCP/IP. Установление соедлинения.
  9. IPv4. Характеристика протокола. IP-адреса, деление на сети по классам и с помощью масок.
  10. IPv4. Заголовок, назначение полей. Фрагментация.
  11. IPv6. Характеристика протокола. Адреса IPv6.
  12. IPv6. Заголовок, назначение полей. MTU пути.
  13. ICMPv4. Описание протокола.
  14. ICMPv6. Механизмы RD, ND, EUI64.
  15. DHCPv4 и DHCPv6.
  16. Соединение IP сетей. Маршрутизация в IP. Передача данных через маршрутизаторы. Таблицы маршрутизации. Понятие метрики. Способы составления таблиц.
  17. Соединение IP сетей. Трансляция адресов.
  18. Система DNS.