Сети

Основы организации сетей

Основы организации сетей

1. Модель OSI

Уровень Назначение
7. Прикладной
Application
Отвечает за взаимодействие с приложением. Позволяет использовать в разработке приложения минимальный объем сетевого кода
6. Представление
Presentation
Уровень для выполнения действий связанных с форматированием данных (сжатие, шифрование, кодирование и тд)
5. Сеансовый
Session
Отвечает за установление соединения между двумя оконечными точками связи. Обеспечивает настройку правильных параметров для обеспечения двухсторонней связи между двумя приложениями (двумя приложениями на двух концах)
4. Транспортный
Transport
Обеспечивает взаимодействие двух прикладных программ. В зависимости от используемого протокола, на этом уровне могут выполняться функции обнаружения и устранения ошибок, установки и разрыва сеанса транспортного уровня, мультиплексирования, фрагментации и управления потоком данных
3. Сетевой
Network
Отвечает за логическую адресацию и определение маршрута между группами логических адресов
2. Канальный
Datalink
Нужен для физической адресации и управления интерфейсной платой
1. Физический
Physical
Отвечает за преобразование битов и байтов в электрические, оптические или радио сигналы

Уровень 7 - прикладной

Отвечает за взаимодействие с пользовательским приложением. Обычно обменивается данными не с самим приложением, а с сетевыми приложениями, которые применяются в пользовательском приложении. Например при использовании web, пользовательским приложением будет браузер, а сетевым приложением будет ПО протокола HTTP
Примерами протоколов этого уровня могут выступить http, ftp, telnet, smtp, pop3, imap, ssh

Уровень 6 - представление

На представительском уровне происходит модификация формата данных. Например чтобы отправить изображение по электронной почте нужно преобразовать это изображение в текст (ведь почтовый протокол smtp может передавать только текст). Для этого почтовый клиент может воспользоваться протоколом многоцелевых почтовых расширений internet (miltipurpose internet mail extensions - MIME). Также с помощью этого же протокола почтовый клиент получателя сконвертирует полученный текст обратно в изображение
Также этот уровень отвечает за сжатие, шифрование и многие другие действия

Уровень 5 - сеансовый

К числу наиболее широко применяемых протоколов сеансового уровня относятся rpc, ldap и netbios
Понять смысл этого уровня сложнее всего, потому что в выполнении функций этого уровня могут учавствовать и протоколы других уровней. В модели tcp/ip эту функцию чаще всего выполняет транспортный уровень

Уровень 4 - транспортный

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

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

Связь с установлением логического соединения предусматривает установление соединения между двумя компьютерами еще до начала передачи пользовательских данных. Это позволяет обеспечить двухстороннюю связь. Другими словами протокол предуматривает передачу служебных пакетов благодаря которым получатель может понять что вскоре к нему поступят данные, на эти служебные пакеты ("предупреждения") получатель отвечает подтверждающим пакетом. Это обеспечивает возможность предварительно удостовериться что связь между хостами возможна

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

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


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

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

Но и в этом методе есть недостатки (видно на схеме)
uAYIMG_0505r.jpg

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

Уровень 3 - сетевой

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

Уровень 2 - канальный

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

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

Физическая адресация - все устройства должны иметь физический адрес, обычно это mac-адрес. Физический адрес должен быть уникальным. Он должен однозначно отличать одно устройство от любых других устройств в мире
Mac-адрес это 48 битное число, которое записывается в виде 12 шестнадцатиричных цифр (например 01-02-03-ab-cd-ef). Первые 6 шестнадцатиричных цифр обозначают изготовителя устройста, а последние 6 конкретное устройство

Физический адрес определенного типа (не обязательно mac) является обязательным компонентом пакета на канальном уровне

Обнаружение ошибок - для обнаружения ошибок и искажений во время передачи пакета в конец пакета перед отправкой дописывается концевик с контрольной суммой (fcs). Метод с применением fcs предусматривает использование циклического избыточного кода. После прибытия пакета к получателю, получатель извлекает из пакета fcs и вычисляет новое значение fcs для полученных данных. Если извлеченное и вычисленное значения не совпадают, то этот пакет отбрасывается (за устранение ошибок отвечают протоколы более высокого уровня. Как правило транспортный)

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

Уровень 1 - физический

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


Важное значение с точки зрения организации сетей имеет модель DOD (department of defense). Именно она лежит в основе протоколов tcp/ip

Основы организации сетей

2. Локальные сети Ethernet и беспроводные локальные сети

Топология

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

Существует множество способов соединения сетевых устройств. Выделяют следующие топологии:

Полносвязная

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

Ячеистая

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

Общая шина

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

Звезда

В сети, построенной по топологии типа «звезда», каждая рабочая станция подсоединяется кабелем (витой парой) к концентратору, или хабу (англ. hub). Концентратор обеспечивает параллельное соединение ПК и, таким образом, все компьютеры, подключенные к сети, могут общаться друг с другом

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

Кольцо

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

Также существует большое количество дополнительных способов соединения:

Дуплекс, полудуплекс, симплекс

Дуплекс

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

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

Полудуплекс

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

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

Явление, когда несколько передающих узлов пытаются в один и тот же момент времени осуществлять передачу, называется коллизией и при методе управления доступом CSMA/CD считается нормальным, хотя и нежелательным явлением

Симплекс

Реализующее симплексный режим оборудование может передавать информацию только в одну сторону

Проблемы при передаче сигнала

Затухание - сигнал в витой паре со временем затухает и портится. Это происходит из-за сопротивления меди и различных помех. Поэтому длина провода в среднем ограничена 100 метрами

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

Электромагнитные помехи - обычно локальные сети строятся на основе UTP (unshielded twisted-pair), которые не защищены от электромагнитных помех. При передаче по кабелю электрических импульсов создается могнитное поле, это поле воздействует на другой кабель, в котором от этих импульсов генерируются импульсы, а это ложные сигналы

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

Адресация Ethernet

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

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

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

PDU - protocol data unit

Основы коммутации ethernet

Коммутатор ethernet обрабатывает и регистрирует mac-адреса фреймов и заполняет ассоциативную таблицу. В этой таблице отображается связь между mac-адресами и портами. Таблица называется CAM-таблицей (content-addressable memory). Далее коммутатор направляет фреймы в соответствии с этой таблицей. А пока коммутатор не знает куда именно нужно послать фрейм, он шлет его во все порты кроме того из которого он его получил (лавинная рассылка)

Основным преимуществом коммутации является то что она позволяет разделить сеть на несколько доменов коллизий. Доменом коллизий называется участок на котором организован многостанционный доступ и поэтому могут возникать коллизии

Беспроводные локальные сети

В беспроводных сетях нельзя использовать CSMA/CD, так как обнаружить коллизию невозможно. При передаче сигнала приемник находится близко к собственному передатчику, который передавая сигналы заглушает любые другие сигналы. Поэтому используется CSMA/CA (CD - обнаружение коллизий, CA - предотвращение коллизий)

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

Также есть способ RTS/CTS (rts - request to send, cts - clear to send). Перед передачей устройство шлет точке доступа фрейм rts и ожидает от него в ответ cts. Такой способ позволяет предупредить другие устройства (которых не видит передающее устройство, но видит точка доступа) вблизи точки доступа о том что она собирается принимать данные от передающего устройства

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


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

Основы организации сетей

5. Основные сведения о наборе протоколов TCP/IP

Протоколы

Книга по сетям
Остановился здесь

Сайт по цискам

Список протоколов


Уровень Тип данных Функции Примеры
7.Прикладной
(application)
Данные Доступ к сетевым службам HTTP, FTP, POP3, WebSocket
6.Представления
(presentation)
Данные Представление и шифрование данных ASCII, EBCDIC
5.Сеансовый
(session)
Данные Управление сеансом связи RPC, PAP, L2TP
4.Транспортный
(transport)
Сегменты/Дейтаграммы
(segment)/(datagram)
Прямая связь между конечными пунктами и надёжность TCP, UDP, SCTP, PORTS
3.Сетевой
(network)
Пакеты
(packet)
Определение маршрута и логическая адресация IPv4, IPv6, IPsec, ICMP
2.Канальный
(data link)
Биты/Кадры
(bit)/(frame)
Физическая адресация PPP, Ethernet, ARP

PPP

Point-to-Point Protocol — Двухточечный протокол канального уровня (Data Link) сетевой модели OSI. Обычно используется для установления прямой связи между двумя узлами сети. В нем нет коммутации (как в ethernet) подразумевается что два устройства соединены одним кабелем. Поэтому фрейм протокола меленький (а в ethernet большой, потому что в ethernet указываются mac-адресы)

PPP фактически представляет собой набор набор протоколов. Некоторые из них:

HDLC

Может быть использован в соединениях с множественным доступом, но в настоящее время в основном используется в соединениях точка-точка

http://ciscotips.ru/ppp
http://ciscotips.ru/hdlc

Таблица с какого-то сайта, выделил в ней то что осознал (вроде)

Основа для сравнения HDLC (Cisco edition) PPP
Расширяется до Протокол канального уровня высокого уровня Двухточечный протокол
Тип протоколов Бит-ориентированный протокол Байт-ориентированный протокол
Используется в Только синхронный носитель Синхронный, а также асинхронный носитель
Аутентификация Нет предоставления аутентификации Обеспечивает аутентификацию
Динамическая адресация Не предлагает динамическую адресацию Динамическая адресация используется
Реализовано в Двухточечные и многоточечные конфигурации Только двухточечные конфигурации
Совместимость с другими протоколами Не может работать с устройствами сторонних производителей (так как есть доп. поле (в cisco-версии hdlc)) Совместим с устройствами не от Cisco также

Потестил оба протокола, на вид одинаковые.


Ethernet II

Формат кадра

700px-Ethernet_Type_II_Frame_format.svg.png

Настроил dhcp по этому видео

Ethernet работает по умолчанию, поэтому достаточно пингануть любой узел и icmp запрос будет упакован в ethernet.


ARP

Протокол позволяет определить mac-адрес по ip-адресу.
Так как arp ниже сетвого уровня, то его пакеты не проходят через маршрутизаторы (только через коммутаторы).
ARP-таблица хранит в себе соответствие mac-адреса и ip-адреса

Формат arp кадра
arp.png

Перед icmp запросом проходит arp запрос, чтобы узнать какому узлу (какому mac-адресу) пренадлежит запрашиваемый (в icmp) ip-адрес.

ARP-запрос (who has ip-adress) - это мультикаст пакет (в переделах l2 сегмента)
Screenshot-from-2019-10-24-20-20-26.png
ARP-ответ (это я)
Screenshot-from-2019-10-24-20-20-52.png


В arp-пакете поле target mac address заполняется нулями и отправляется в сеть
2020-07-13-090946_566x259_scrot.png


После установки net-tools в linux появится команда arp. С помощью нее можно смотреть arp-таблицу arp -a
Также с ее помощью можно редактировать arp-таблицу

IPv4

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

Screenshot-from-2019-10-24-20-45-33.png

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

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


IPv6

ipv6-header-format.jpg

IPSec

ICMP

ICMP-packet-structure.png

Используется для диагностики и отслеживания ошибок в работе сети. Например когда при отправке ip пакета произошла ошибка, отправителю будет отослан icmp пакет с информацией об ошибке. В теле icmp пакета как правило содержится ip пакет с которым возникла проблема (такой ответ отправляет роутер который сгенерировал ошибку [то есть не смог выполнить задачу])

Пример. При telnet'e на несуществующий адрес был получен icmp ответ
2020-07-13-092956_1039x788_scrot.png

traceroute как раз работает за счет icmp. Хост отправляет ip пакет с ttl 1 и первый на пути пакета роутер уменьшая ttl получает в нем 0 и генерирует ошибку которая в пакете icmp уходит обратно, и так далее увеличивает ttl в каждом последующем пакете пока не дойдет до конечного получателя

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

Redirect - когда маршрутизатор получает пакет и исходя из своей таблицы маршрутизации понимает что отправителю выгоднее слать через другой маршрутизатор (например когда отправитель и получатель в одной сети), то сначала этот маршрутизатор направит полученный пакет в соответствии со своей таблицей маршрутизации, а потом отправит отправителю icmp сообщение о том чтобы он изменил свою талицу маршрутизации и выбрал более выгодный маршрут

UDP

user datagram protocol - не имеет средств управления потоком, упорядочивания пакетов, исправления ошибок и не устанавливает логическое соединение (но он имеет механизм обнаружения ошибок (чексумма)). Всвязи с этим этот протокол чрезвычайно эффективный по скорости передачи. Также из-за простоты заголовков на его обработку не приходится тратить много вычислительных ресурсов по сравнению с tcp

fig8_UDP.jpg

TCP

Этот протокол имеет функции не предусмотренные в udp. Такие как установление логического соединения и передача с применением окон (передача с применением окон позволяет контролировать поток данных и исправлять ошибки)

Полученные от вышестоящего протокола данные делятся на сегменты и отправляются ниже

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

Для работы tcp используются соеднинения. То есть перед началом передачи данных устанавливается соединение, а после передачи оно разрывается (закрывается)

r00220010702mul01_02.gif

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

Для определения размера окна перегрузки используется механизм AIMD (additive increase/multiplicative decrease). Работает так: если перегрузки нет, то к размеру окна прибавляется значение (размер сегмента), если случилась перегрузка, то размер окна умножается на некоторое значение (как правило это 0.5, то есть размер окна делится пополам)

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

Этот механизм имеет линейный рост размера окна, для ускорения используют алгоритм медленного старта. В нем рост экспоненциальный и вместе с aimd график размера окна выглядит так
2020-07-14-043021_1419x766_scrot.png

Скользящее окно - это окно управления потоком, его размер задается получателем в зависимости от размера буфера получателя. Отправляется отправителю в сегментах подтверждения

В отличие от метода "остановка и ожидание", метод скользящего окна не подразумевает подтверждения на каждый сегмент, вместо этого подтверждается сразу порция сегментов (одним пакетом)

2020-11-24-102034_918x538_scrot.png

При куммулятивном подтверждении подтвеждается получение следующего сегмента и значит что все сегменты до него успешно получены. То есть если отправлен 1Гб и в середине потерялся сегмент, то получатель подтвеждает 500М и отправитель переотправляет вторые 500М несмотря на то что они уже есть у получателя (но они не считаются потому что потерялся 1 сегмент)

Чтобы этого избежать существует выборочное подтверждение, оно подтверждает диапазоны принятых сегментов. При выборочном подтверждении в описаном ранее кейсе нужно будет переотправить 1 сегмент вместо 500М


Пример на картинках:

Зеленым выделено то что отправлено, но еще не подтверждено
2020-11-24-102435_890x380_scrot.png

После того как часть отправленных сегментов подтверждена
2020-11-24-102612_881x365_scrot.png

Мы можем передвинуть окно
2020-11-24-102657_891x388_scrot.png

И дослать данных
2020-11-24-102727_888x387_scrot.png


Становится понятно почему возникают потери на длинных расстояниях (из-за перегрузок на промежуточных узлах)


Если получатель "захлебывается", то он может отправить отправителю [TCP Window Full]
Размер окна равен нулю (приостановить передачу данных)

DHCP

Протокол динамической конфигурации хостов

Позволяет динамически назначать ip-адреса хостам в сети

Работает по схеме клиент сервер

Клиент шлет в сеть широковещательный запрос DISCOVER (на ff:ff:ff...)
DHCP сервер отвечает ему ответом OFFER с предложением ip-адреса (адресация по mac-адресу)
Клиент шлет dhcp серверу запрос REQUEST с ip-адресом (либо с предложенным либо с другим)
DHCP сервер отвечает ему пакетом ACK (если все окей)

Также кроме ip-адреса протокол dhcp позволяет передать клиенту множество других параметров (передаются как опции):

Ip-адреса выдаются на ограниченный срок, а потом продлеваются (либо выдаются другие)

Процесс получения адреса:

  1. Когда клиент загружается (или хочет присоединиться к сети), он начинает четырехэтапный процесс для получения аренды. Он запускает процесс с широковещательным (broadcast) сообщением DHCPDISCOVER со своим собственным MAC-адресом для обнаружения доступных серверов DHCPv4. Поскольку у клиента нет способа узнать подсеть, к которой он принадлежит, у сообщения DHCPDISCOVER адрес назначения IPv4 адреса -255.255.255.255. А поскольку у клиента еще нет настроенного адреса IPv4, то исходный IPv4-адрес - 0.0.0.0
  2. Сообщение DHCPDISCOVER находит серверы DHCPv4 в сети. Поскольку клиент не имеет IPv4 информации при загрузке, он использует широковещательные адреса 2 и 3 уровня для связи с сервером
  3. Когда DHCPv4-сервер получает сообщение DHCPDISCOVER, он резервирует доступный IPv4-адрес для аренды клиенту. Сервер также создает запись ARP, состоящую из MAC-адреса клиента и арендованного IPv4-адреса DHCP сервер отправляет связанное сообщение DHCPOFFER запрашивающему клиенту, как одноадресная передача (unicast), используя MAC-адрес сервера в качестве исходного адреса и MAC-адрес клиента в качестве адреса доставки
  4. Когда клиент получает DHCPOFFER с сервера, он отправляет обратно сообщение DHCPREQUEST. Это сообщение используется как для получения, так и для продления аренды. Когда используется для получения аренды, DHCPREQUEST служит в качестве уведомления о принятии выбранных сервером параметров, которые он предложил, и отклонении предложения от других серверов. Многие корпоративные сети используют несколько DHCP серверов, и сообщение DHCPREQUEST отправляется в виде широковещательной передачи, чтобы информировать все серверы о принятом предложении
  5. При получении сообщения DHCPREQUEST сервер проверяет информацию об аренде с помощью ICMP-запроса на этот адрес, чтобы убедиться, что он уже не используется и создает новую ARP запись для аренды клиента, а затем отвечает одноадресным DHCPACK-сообщением. Это сообщение является дубликатом DHCPOFFER, за исключением изменения поля типа сообщения. Когда клиент получает сообщение DHCPACK, он регистрирует информацию и выполняет поиск ARP для назначенного адреса. Если ответа на ARP нет, клиент знает, что адрес IPv4 действителен и начинает использовать его как свой собственный

Если dhcp сервер не один, то клиент примет предложение от того, который предложил первым

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

3.1-Структура-DHCP-пакета-поля-и-их-размер.gif

DNS

https://habr.com/ru/post/137587/
https://disnetern.ru/wp-content/uploads/2016/11/DNS_BIND.pdf

Домен - пространство имен (что-то большое и общее)
Зона - это делегированная часть домена

Первичная зона - информация о зоне доступная к редактирования
Вторичная зона - копия информации о зоне доступная только для чтения


/etc/resolv.conf - файл с настройками резолвера
Имеет поля domain и search, которые отвечают соответственно за локальный домен и за список доменов для поиска машин. По умолчанию домен берется из hostname сервера (все что правее первой точки). Они являются взаимоисключающими

Оба эти поля нужны для преобразования коротких имен

[vandud@desktop ~]$ cat /etc/resolv.conf 
domain in.vandud.ru
nameserver 172.27.192.1

[vandud@desktop ~]$ host idud
idud.in.vandud.ru has address 51.255.215.177

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

[vandud@desktop ~]$ host idud.
Host idud not found: 2(SERVFAIL)

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

nameserver - указывает на сервер имен (максимум трижды, каждый раз с новой строки)


DNS запросы бывают рекурсивные и итеративные
Как правило локальные клиенты шлют dns серверам в своей локальной сети рекурсивные запросы, а сам резолвер уже делает итеративные запросы


Формат пакета
dns-message-format.gif

WebSocket

Веб-сокеты это продвинутая технология, позволяющая открыть постоянное двунаправленное сетевое соединение между браузером пользователя и сервером. С помощью его API вы можете отправить сообщение на сервер и получить ответ без выполнения http запроса, причём этот процесс будет событийно-управляемым

Пример tcpdump'а:
Screenshot_2021_02_02-12_49_03-2022-05-26-at-websockets-pingpong.png

Поток данных в WebSocket состоит из «фреймов», фрагментов данных, которые могут быть отправлены любой стороной, и которые могут быть следующих видов:

После получения ответа 101, клиент оставляет tcp соединение открытым - канал готов