TRANSCRIPTRussian

Архитектура интернета и веба | Теоретический курс 2026

2h 0m 21s15,863 words3,167 segmentsRussian

FULL TRANSCRIPT

0:00

Приветствую вас в видео, в ходе которого

0:02

мы разберём то, как работает интернет и

0:05

веб-приложения на уровне сетей,

0:06

протоколов и инфраструктуры с точки

0:09

зрения разработчика. Мы будем шаг за

0:11

шагом разбирать основные принципы и

0:13

логику работы, но без углубления,

0:15

допустим, в кодирования сигналов или

0:17

физику передачи данных. Мы начнём с

0:19

основ компьютерных сетей, поймём, как

0:21

устройства взаимодействуют между собой,

0:23

какую роль играют клиенты сервер и

0:26

почему сетевое взаимодействие невозможно

0:28

без протоколов. Затем перейдём к

0:29

IP-адресации, маршрутизации, разберём,

0:32

как пакеты передаются через интернет,

0:34

что такое NAT и какие физические

0:36

ограничения он накладывает на

0:37

приложение. Далее подробно разберём DNS,

0:40

как доменные имена превращаются в

0:42

IP-адреса и как работает resolving.

0:44

После этого перейдём к транспортному

0:46

уровню TCP и UDP, установке соединений и

0:49

современным протоколам, таким как Quick.

0:52

Отдельный блок будет посвящён HTTP, его

0:55

устройству, методам, статусам, а также

0:57

тому, как поверх него реализуются куки,

1:00

сессии и токены. Затем разберём https

1:03

ls, принципы шифрования и доверия

1:05

сертификатам. Также мы затронем real

1:07

time коммуникации, серверную

1:09

инфраструктуру, балансировку нагрузки и

1:11

CDN. А кроме того, поговорим о DPI и

1:14

современных способах анализа и контроля

1:16

сетевого трафика. Не забудьте

1:18

подписаться на мой Telegram-канал, где

1:20

выходят интересные посты про разработку

1:22

обновления моих библиотек и спойлеры к

1:24

видео. И также, если вам нравится такой

1:27

контент, поставьте лайк и подпишитесь на

1:29

канал. Это очень поддерживает мою работу

1:31

и помогает делать новые видео. Ну и

1:33

начнём мы с вами с небольшого пролога.

1:35

Он не обязателен к просмотру, но в нём

1:37

мы слегка коснёмся физического

1:39

устройства интернета. Интернет - это

1:41

огромная сеть, состоящая из множества

1:44

соединённых между собой сетей.

1:46

дата-центры, серверные стойки,

1:48

маршрутизаторы и коммутаторы, реальные

1:50

устройства, которые круглосуточно

1:52

принимают, обрабатывают и передают

1:54

данные. Данные перемещаются не целиком,

1:57

а в виде маленьких фрагментов, которые

1:59

путешествуют независимо друг от друга,

2:01

строго по маршрутам, заданным

2:02

оборудованием и протоколами. Каждое

2:05

открытие сайта - это физический процесс.

2:07

Запрос проходит по кабелям, попадает на

2:09

сервер, где обрабатывается и

2:11

возвращается ответ. Работа серверов

2:14

требует энергии, охлаждения и надёжного

2:17

подключения. Они постоянно работают, а

2:19

системы построены так, чтобы даже при

2:21

сбой части оборудования интернет

2:23

оставался доступен. Если задуматься,

2:25

интернет - это самая большая машина,

2:27

когда-либо построенная человечеством.

2:29

Она не имеет центра, не принадлежит

2:31

одному владельцу и не может быть

2:33

выключена одной кнопкой. Всё держится на

2:35

стандартах, договорах и строгом

2:37

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

2:39

инфраструктура обеспечивают

2:41

предсказуемость и надёжность работы этой

2:43

системы. И сейчас мы будем разбирать всё

2:45

по порядку, начиная с кабелей.

2:47

Существует несколько основных типов

2:49

кабелей, по которым передают данные.

2:52

Медные витые пары, как сильные кабели и

2:55

оптоволокно. Они различаются не только

2:57

конструкцией, но и физическим принципам

2:59

передачи сигналам, дальностью, скоростью

3:02

и областью применения. Начнём с медных

3:05

кабелей, самой простой и наглядной формы

3:07

сетевого соединения. Самый

3:09

распространённый тип eernet,

3:11

используемый в домашних и офисных сетях.

3:13

Внутри такого кабеля находится не один,

3:15

а сразу несколько медных проводников.

3:18

Обычно восемь, объединённых в четыре

3:19

пары. Каждый проводник изолирован, а

3:22

сами пары скручены между собой. Скрутка

3:25

выполняет сразу несколько задач.

3:26

Во-первых, она уменьшает влияние внешних

3:29

электромагнитных полей, когда рядом

3:31

проходит электрический шум от другого

3:32

кабеля. блока питания или

3:34

электродвигателя. Он воздействует на оба

3:37

проводника пары почти одинаково.

3:39

Приёмное устройство сравнивает сигналы

3:41

внутри пары и отбрасывает общий шум,

3:44

оставляя полезную информацию. Во-вторых,

3:47

скрутка снижает влияние соседних пар

3:49

друг на другом. Без неё сигнал из одной

3:52

пары наводил бы помехи в другой, что

3:54

резко снижало бы скорость и надёжность

3:56

передачи. Но существует и другой тип

3:58

медного кабеля. Как сильный. Он

4:00

использовался в телевизионных сетях,

4:02

кабельном интернете и ранних

4:04

компьютерных сетях. Его конструкция

4:06

принципиально отличается. В центре

4:08

находится одна сплошная медная жила, по

4:11

которой идёт сигнал. Вокруг неё слой

4:13

диэлектрика, затем металлическая оплётка

4:16

или экран, подключённый к земле, и

4:18

внешняя защитная оболочка. Экран

4:21

изолирует центральную жилу от внешних

4:23

помех и одновременно задаёт стабильную

4:26

электрическую среду для распространения

4:28

сигнала. Такая конструкция делает как

4:30

сил более устойчивым к шумам и позволяет

4:33

передавать сигнал дальше без искажений.

4:35

Но он менее гибкий, толще и хуже

4:38

масштабируется для современных

4:39

скоростей. Теперь коротко о том, как

4:41

данные проходят по медным кабелям. Я

4:44

сейчас не буду углубляться в физику

4:45

сигнала и электронику. Здесь мы просто

4:48

поймём общую идею. Данные передаются с

4:51

помощью электрического сигнала. Цифровая

4:54

информация превращается в изменение

4:55

напряжения и итога во времени, а также в

4:59

форму импульсов. Источником этого

5:01

сигнала является активное сетевое

5:03

устройство. В компьютере это сетевая

5:05

карта. В инфраструктуре в сетевой

5:07

инфраструктуре - это порты коммутаторов

5:10

и маршрутизаторов.

5:11

Сигнал имеет несколько ключевых

5:13

характеристик: уровень напряжения,

5:15

скорость изменения и длительность

5:18

импульсов. Именно их комбинация кодирует

5:21

нули и единицы. На принимающей стороне

5:23

сетевое оборудование восстанавливает

5:25

исходные данные. Тут важно понимать,

5:27

сигнал аналоговый, он подвержен

5:30

искажением. Основные причины:

5:32

сопротивление меди, нагрев проводника,

5:35

внешние электромагнитные поля и наводки

5:37

от соседних пар. С ростом длины кабеля

5:40

помехи накапливаются и данные начинают

5:43

теряться. Для компенсации этих потерь

5:46

используют повторители и усилители,

5:48

которые восстанавливают форму сигнала.

5:50

Но даже с ними медные кабели ограничены.

5:53

Их скорость и дальность подходят только

5:55

для коротких соединений дома, в офисах

5:57

или дата-центрах. Для длинных

5:59

магистралей и межконтинентальных линий

6:02

они непригодны. Для глобального

6:04

интернета используется оптволокно. В

6:06

отличие от медных линий, здесь передача

6:09

данных основана не на электрическом

6:11

токе, а на распространении света.

6:14

Физической основой оптоволоконного

6:16

кабеля является стеклянное волокно. В

6:18

самом центре находится сердцевина,

6:21

тончайшая нить из сверхчистого стекла

6:23

или кварца. Её диаметр сопоставим с

6:26

толщиной человеческого волоса. Вокруг

6:28

этой сердцевины располагается оболочка

6:30

из стекла с другим коэффициентом

6:32

преломления. Именно разница этих

6:34

коэффициентов заставляет свет

6:36

многократно отражаться от границы

6:38

материалов и распространяться строго

6:40

вдоль волокна, практически не выходя

6:42

наружу. А уже снаружием оно окружено

6:44

несколькими защитными слоями. Они

6:46

включают ароматизирующие покрытия,

6:49

силовые элементы и внешнюю изоляцию. Эти

6:52

слои никак не участвуют в передаче

6:54

данных, но они обеспечивают механическую

6:57

прочность кабеля и защищают его от тех

6:59

же самых изгибов, там условно влаги,

7:02

давления и перепадов температуры. Уже

7:04

передача данных начинается в активном

7:07

оборудовании. Так называемый трансивер

7:09

принимает цифровые данные и превращает

7:12

их в последовательность световых

7:14

импульсов с помощью лазера или

7:15

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

7:18

информацию через наличие света,

7:20

длительность или фазу. На другом конце

7:23

фотодиоды улавливают свет и преобразуют

7:26

его обратно в электрический сигнал для

7:28

обработки сетевым оборудованием. Главное

7:31

отличие оптоволокна от медич не

7:34

взаимодействует с внешней средой. Нет

7:36

нагрева проводника, нет электромагнитных

7:38

наводок, нет влияния внешних полей.

7:41

Потери сигнала минимальны, поэтому

7:43

усилители и регенераторы ставят на

7:45

десятки, а иногда и на сотни километров.

7:48

Это позволяет передавать данные на 1.000

7:50

км без существенных искажений. Кроме

7:53

того, оптоволокно обладает колоссальной

7:55

пропускной способностью. Современные

7:57

технологии позволяют передавать

7:59

несколько независимых потоков данных по

8:01

одному и тому же волокну, используя

8:03

разные длины волн света. Это делает

8:06

оптоволоконные линии основой всей

8:08

глобальной сетевой инфраструктуры.

8:10

Именно поэтому все современные

8:12

магистральные и межконтинентальные

8:14

соединения построены на оптоволокне. Для

8:17

таких расстояний и объёмов данных

8:19

альтернативы ему просто не существует.

8:22

После того, как мы разобрали медные и

8:24

оптоволоконные кабели, а также их

8:26

устройством, роль в инфраструктуре

8:28

интернета и, в принципе, их различиям,

8:31

давайте перейдём к следующей теме. Как

8:33

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

8:35

целые континенты. Вопреки

8:38

распространённому мифу, глобальный

8:39

интернет почти не опирается на спутники.

8:41

Более 95% мирового трафика проходит по

8:45

кабелям. Причина проста: только они дают

8:47

необходимую скорость, стабильность и

8:49

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

8:52

прокладываются специализированными

8:54

кабелеукладочными судами. На борту таких

8:57

кораблей находятся гигантские катушки с

8:59

кабелем длиной в сотни и тысячи

9:01

километров. Маршрут прокладки заранее

9:03

рассчитывается с высокой точностью.

9:06

Учитывается рельеф дна, сейсмическая

9:08

активность, судоходные пути и рыболовные

9:11

зоны. Кабель аккуратно укладывают на

9:13

дно, а на мелководе его дополнительно

9:16

заглубляют в грунт. Кстати, конструкция

9:18

подводного кабеля, она значительно

9:20

сложнее обычного автоволокна. Внутри,

9:22

конечно, всё та же стеклянная

9:24

сердцевина, передающая свет, но снаружи

9:26

несколько слоёв защиты. Это герметичные

9:29

оболочки, армирование остальными жилами,

9:32

изоляция от влаги и коррозии. Это

9:34

позволяет кабелю годами лежать на

9:36

глубине нескольких километров,

9:38

выдерживая давление воды, течения и

9:40

агрессивную морскую среду. Тем не менее,

9:42

риски полностью исключить, конечно же,

9:44

невозможно. Подводные кабели иногда

9:47

повреждаются якорями судов, рыболовными

9:49

тралами или подводными землетрясениями.

9:52

Именно поэтому глобальная инфраструктура

9:54

строится с расчётом на отказ.

9:55

Магистральные маршруты всегда

9:57

дублируются, а сетевые протоколы

9:59

автоматически перенаправляют трафик по

10:01

альтернативным путям. Про это мы будем

10:03

говорить в этом видео. Пользователь в

10:05

большинстве случаев, в принципе, даже и

10:07

не замечает, что где-то на дне океана

10:09

произошёл обрыв. Внутри стран

10:11

магистральные линии, как правило, строят

10:13

национальные телекоммуникационные

10:15

операторы. В России эту роль, например,

10:18

выполняет в первую очередь Ростлеком и

10:20

другие крупные операторы связи, которые

10:22

соединяют города, регионы и дата-центры

10:25

внутри страны. А межконтинентальные

10:27

маршруты - это уже зона ответственности

10:29

международных консорциумов и

10:31

технологических гигантов. Компании вроде

10:33

Google, Amazon и Microsoft инвестируют

10:36

миллиарды долларов в строительство

10:38

собственных подводных линий. Именно

10:40

благодаря этим кабелям интернет стал

10:42

по-настоящему глобальным. Без них

10:44

современный мир в том виде, к которому

10:46

мы привыкли, просто не существовал бы. В

10:48

принципе, на этом рассказ про кабели у

10:50

нас подходит к концу. Давайте будем

10:52

двигаться дальше. Смотрите, сами по себе

10:55

кабели, они, конечно же, не делают

10:57

интернет интернетом. Это всего лишь

10:59

физические дороги. Возникает логичный

11:01

вопрос, куда именно приходят все эти

11:04

потоки данных и как разные сети

11:06

обмениваются трафиком между собой.

11:08

Интернет - это огромное количество

11:10

независимых сетей, принадлежащих разным

11:12

провайдерам. компаниям и организациям.

11:15

Чтобы они могли взаимодействовать,

11:17

существуют специальные точки соединения.

11:19

Они называются Internet Exchange Points

11:22

или сокращённо IXP. IXP - это физические

11:25

места. Чаще всего они представляют из

11:27

себя большие дата-залы, где установлены

11:30

мощные коммутаторы и маршрутизаторы.

11:32

Сюда напрямую подключаются

11:34

интернет-провайдеры, хостинг-компании,

11:37

облачные платформы и крупные сервисы.

11:40

Через эти узлы проходят терабиты данных

11:42

каждую секунду. Когда вы открываете

11:44

сайт, ваш запрос может пройти через

11:46

несколько таких точек. Он выходит из

11:48

сети вашего провайдера, попадает в XP,

11:51

оттуда в сеть другого оператора, затем,

11:53

возможно, в следующий обменный узел и

11:55

только после этого достигает нужного

11:57

дата-центра. На этом же уровне начинают

11:59

работать CDN, сети доставки контента.

12:02

Они размещают копии данных в разных

12:04

частях мира и подключаются напрямую к

12:06

обменным узлам. Благодаря этому запросы

12:09

не всегда идут к исходному серверу, а

12:11

обслуживаются в ближайшей точке.

12:13

Пользователь просто видит, что сайт

12:14

загружается быстрее. Как именно это

12:16

устроено и зачем это нужно, мы подробно

12:18

разберём позже. То есть, по сути, IXP -

12:21

это перекрёстки интернетом, через

12:23

которые проходит огромная часть мирового

12:25

трафика. Каждый запрос, каждая загрузка

12:27

страницы и каждый поток данных почти

12:30

наверняка проходят через один или

12:32

несколько таких узлов. Именно они

12:34

превращают набор отдельных сетей в то,

12:36

что мы называем глобальным интернетом.

12:39

Теперь давайте поговорим про

12:40

дата-центры. Именно сюда направляются

12:42

запросы после прохождения сетевой

12:44

инфраструктуры. И именно здесь

12:46

выполняется основная работа по обработке

12:48

данных. Дата-центр представляет собой

12:51

комплекс помещений с серверным

12:53

оборудованием. Внутри размещаются ряды

12:55

серверных стоек, каждая из которых

12:57

содержит десятки физических серверов. В

13:00

сумме в одном дата-центре может работать

13:02

несколько тысяч таких машин. Они

13:04

принимают входящие соединения,

13:06

обрабатывают запросы, работают с базами

13:08

данных и формируют ответы, которые затем

13:11

возвращаются обратно в сеть. Работа

13:13

такого объёма оборудования требует

13:15

значительных энергетических ресурсов.

13:17

Серверы выделяют большое количество

13:19

тепла, поэтому в дата-центрах

13:21

используется постоянное охлаждение.

13:23

Воздушные или жидкостные системы

13:26

поддерживают стабильную температуру

13:27

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

13:29

при длительной нагрузке. Энергопитание в

13:32

дата-центрах организовано с

13:33

резервированием. Используется несколько

13:36

независимых линий питания, источники

13:38

бесперебойного питания и дизельные

13:40

генераторы. Это позволяет сохранять

13:43

работоспособность оборудования при сбоях

13:45

внешней электросети без разрыва

13:47

соединений. С точки зрения сетевого

13:49

взаимодействия, сервер - это не

13:51

конкретное устройство, это процесс,

13:53

выполняющийся на оборудовании

13:55

дата-центра. Этот процесс слушает

13:57

определённый порт, принимает сетевые

13:59

соединения и обрабатывает запросы. Он

14:02

может быть перезапущен или перенесён на

14:04

другое физическое оборудование без

14:06

изменения поведения сервиса для

14:08

пользователя. Дата-центры подключаются

14:10

напрямую к магистральным сетям и точкам

14:12

обмена трафиком. Это позволяет запросам,

14:15

прошедшим через интернет-инфраструктуру,

14:17

попадать в вычислительную среду с

14:19

минимальными задержками. Теперь, когда

14:21

мы более-менее рассмотрели кабели, точки

14:23

обмена трафиком и датацентры, можно

14:25

собрать эту инфраструктуру в единую

14:27

цепочку и проследить полный физический

14:30

путь данных от устройства пользователя

14:32

до сервера и обратно. Начинается всё у

14:35

вас дома. Когда вы открываете сайт и

14:37

нажимаете Enter, браузер формирует

14:39

сетевой запрос, набор байтов в памяти

14:42

компьютера. Операционная система

14:44

передаёт эти данные в сетевой стек, где

14:46

они разбиваются на пакеты и отправляются

14:49

в сетевую карту. Сетевая карта

14:51

преобразует цифровые данные в физический

14:53

сигнал. Если подключение проводное - это

14:56

электрический сигнал повитой паре. Если

14:59

используется оптоволокно, то сигнал

15:00

формируется сразу в виде световых

15:02

импульсов. А и в случае Wi-Fi данные

15:04

сначала передаются по радиоканалу до

15:07

роутера, а уже затем уходят дальше по

15:09

кабелю. Далее сигнал попадает на

15:11

оборудование интернет-провайдером. На

15:14

данном участке данные проходят через

15:16

коммутаторы и маршрутизаторы провайдера,

15:19

которые направляют пакеты дальше по

15:20

сети. Внутри города и между городами

15:23

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

15:25

поэтому электрический сигнал на входе

15:27

преобразуется в оптический и

15:29

распространяется по магистральным линиям

15:31

связи. Если сервер находится в другой

15:33

стране или на другом континенте, данные

15:35

выходят на международные магистрали,

15:37

соответственно.

15:39

На другой стороне магистрали данные

15:41

попадают в сеть уже другого оператора и

15:43

проходят через точки обмена трафиком.

15:45

Это физические узлы, где сети разных

15:47

компаний соединяются напрямом, как мы

15:49

уже говорили. Здесь маршрутизаторы

15:51

принимают решение, в какую сеть передать

15:53

пакет дальше, чтобы они дошли до нужного

15:55

дата-центра. После этого запрос попадает

15:58

в сам дата-центр. Магистральное

16:00

оптоволокно подключается к сетевому

16:02

оборудованию дата-центром, откуда трафик

16:04

распределяется по внутренним сетям.

16:07

Пакеты доходят до конкретной серверной

16:09

стойки, затем до сетевого порта нужного

16:11

сервера. На сервере физический сигнал

16:14

преобразуется обратно в цифровые данные.

16:16

Операционная система передаёт их

16:18

серверному приложению, которое

16:20

обрабатывает запрос, читает данные из

16:22

памяти или базы данных и уже затем

16:25

формирует ответ. А сам ответ проходит

16:27

абсолютно тот же путь, просто в обратном

16:29

направлении. Он снова превращается в

16:31

физический сигнал, выходит из

16:33

дата-центра, проходит через

16:34

магистральные сети, точки обмена

16:36

трафиком и сеть провайдера, после чего

16:39

возвращается к вашему устройству. Ответ,

16:41

в свою очередь, проходит тот же путь в

16:44

обратном направлении. Он снова

16:45

превращается в физический сигнал,

16:47

выходит из дата-центра, проходит через

16:49

магистральные сети, точки обмена

16:51

трафиком и сеть провайдера, после чего

16:54

возвращается к вашему устройству.

16:56

Сетевая карта принимает сигнал,

16:58

восстанавливает данные, и браузер

17:00

отображает результат. Теперь у нас есть

17:02

какая-никакая картина физического уровня

17:05

интернета, от устройства пользователя до

17:07

дата-центра и обратно. Дальше мы

17:09

поднимаемся на следующий уровень. Мы

17:12

поговорим о сетях и адресации, о том,

17:14

как устройство находят друг другом, как

17:16

выбираются маршруты, как работает ДНС и

17:19

почему запросы всегда приходят туда,

17:21

куда нужно. Ну и начнём мы с самого

17:24

базового, с компьютерных сетей.

17:26

Компьютерная сеть - это способ, с

17:28

помощью которого устройства могут

17:30

обмениваться данными. В самом базовом

17:32

виде сеть состоит из как минимум двух

17:35

устройств и канала связи между ними.

17:38

Устройство может отправлять данные,

17:40

другое- их принимать. А для сети на этом

17:43

уровне больше ничего не требуется. При

17:45

этом совершенно неважно, какие именно

17:47

это устройства. Это может быть

17:49

компьютер, телефон, сервер или любое

17:52

другое оборудование, способное

17:53

передавать данные. Также не имеет

17:56

значения и расстояние между ними.

17:58

Устройства могут находиться в одной

18:00

комнате или на разных концах мира. А

18:03

канал связи - это среда, по которой

18:05

передаются данные. Им может быть

18:07

физический кабель, Wi-Fi или мобильная

18:10

сеть. Для базового понимания сети

18:12

разницы между этими вариантами нет.

18:14

Данные просто перемещаются от одного

18:16

устройства к другому. И тут важно

18:18

понимать, что сама сеть не знает ничего

18:20

о сайтах, браузерах или приложениях. Она

18:23

не понимает, что такое страница, кнопка

18:25

или форма на сайте. На этом уровне сеть

18:27

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

18:29

последовательности данных без смысла и

18:32

контекста. Ну а простая передача байтов

18:34

- это ещё неполноценное общение. Как

18:37

многие знают, байты - это просто

18:38

последовательности нулей и единиц. Один

18:41

компьютер их отправляет, другой

18:43

получает, но сами по себе эти цифры

18:45

ничего не значат. Без правил устройства

18:48

не смогут понять, что именно

18:49

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

18:52

просто-напросто будет бессмысленным.

18:54

Вот, чтобы данные имели смысл для

18:56

получателя, используются протоколы - это

18:58

набор строгих правил и соглашений.

19:01

Протокол определяет, как данные делятся

19:03

на пакеты, как проверяется их

19:05

целостность, какой порядок передачи,

19:07

какие заголовки использовать и как

19:08

устройства реагируют на ошибки. Иными

19:11

словами, протокол - это общий язык, на

19:13

котором устройства разговаривают. Без

19:16

него сеть не сможет работать, независимо

19:18

от того, какой канал связи используется

19:20

или где находятся сами устройства. И

19:22

такие самые популярные протоколы - это

19:25

HTTP, TCP и UDP. HTTP позволяет

19:29

обмениваться веб-страницами. TCP

19:31

обеспечивает надёжную доставку и порядок

19:33

пакетов, а UDP быструю, но ненадёжную

19:36

передачу, например, для видео игр. Все

19:39

эти правила позволяют разным устройствам

19:41

обмениваться данными корректно и

19:43

предсказуемо. Сами протоколы мы будем

19:45

разбирать в течение этого видео. А пока

19:48

давайте мы разберёмся, как данные

19:50

физически перемещаются по сети, особенно

19:52

когда речь идёт о больших расстояниях.

19:54

Начнём с масштаба сети. А есть локальная

19:57

сеть или Local Area Network. Это сеть в

20:01

пределах небольшого пространства,

20:02

например, квартира или офис. То есть

20:05

компьютеры, телефоны, серверы и другие

20:08

устройства, они находятся рядом и

20:10

соединены напрямую через минимальное

20:12

количество промежуточного оборудования.

20:14

В локальной сети данные проходят очень

20:16

короткий путь. Обычно между отправителем

20:18

и получателем всего один роутер или,

20:21

может быть, вообще прямое соединение,

20:23

поэтому задержки тут минимальные, а

20:25

скорость передачи очень высокая. Ну,

20:27

также у нас есть и глобальная сеть или

20:29

One, что расшифровывается как White Area

20:32

Network. Это уже совсем другой масштаб.

20:35

Это сеть, которая по факту объединяет

20:37

между собой множество локальных сетей.

20:39

Как я уже говорил в прологе, когда вы

20:41

открываете сайт, ваше устройство не

20:43

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

20:45

и сервером находятся десятки или даже

20:47

сотни промежуточных узлов: кабели,

20:49

стойки, маршрутизаторы и дата-центры. И

20:52

здесь возникает логичный вопрос: если

20:54

данные проходят через такое количество

20:56

устройств и каналов связи, как вообще

20:58

можно передать информацию надёжно и

21:00

эффективно? Ответ: пакеты. В

21:02

компьютерных сетях данные никогда не

21:04

передаются целиком одним большим блоком.

21:07

Любая информация, текст, изображения,

21:10

видео, HTTP запрос или ответ сервером

21:12

сначала разбивается на небольшие части.

21:15

Эти части и называются пакетами.

21:17

Предлагаю рассмотреть небольшой пример.

21:19

Вы заходите в Telegram и выполняете

21:21

какое-то действие. Ну, например, вводите

21:23

текст сообщения и нажимаете кнопку

21:26

отправки. Ваше устройство формирует

21:28

поток байтов. Далее сетевой стек

21:31

операционной системы разбивает этот

21:33

поток на пакеты фиксированного или

21:35

ограниченного размера. И каждый пакет

21:38

является самостоятельной единицей

21:40

передачи и может обрабатываться сетью

21:42

независимо от остальных. Любой сетевой

21:44

пакет у нас состоит из двух частей:

21:47

заголовка и полезной нагрузки. Смотрите,

21:50

заголовок, он содержит служебную

21:52

информацию, необходимую для доставки

21:54

этого пакета и его обработки. В нём

21:57

указываются такие данные, как IP-адрес

21:59

отправителя, IP-адрес получателя,

22:01

информация о протоколе, порядковый номер

22:03

или идентификатор пакета, технические

22:06

флаги и служебные поля. Технические

22:08

флаги - это управляющие параметры,

22:10

которые определяют поведение при

22:11

передаче. Они могут указывать, например,

22:13

начало или завершение передачи,

22:16

необходимость подтверждения получения,

22:18

состояние соединения и особенности

22:20

обработки пакета. А служебные поля

22:22

используются для контроля целостности

22:24

данных, управления потоком и корректной

22:27

сборки пакетов на принимающей стороне.

22:30

Уже сама полезная нагрузка - это

22:32

непосредственно часть передаваемых

22:34

данных. Каждый пакет содержит лишь

22:36

небольшой фрагмент общего потока. Только

22:38

что я сказал, что после формирования

22:40

пакеты отправляются в сеть по

22:41

отдельности, и в глобальной сети для них

22:45

отсутствует единый заранее заданный

22:47

маршрут. Мы уже знаем, что между

22:49

отправителем и получателем достаточно

22:51

большой путь. Провайдеры, магистральные

22:53

сети и так далее. И вот каждый

22:56

промежуточный узел, допустим,

22:57

маршрутизатор, принимает решение только

22:59

о следующем шаге передачи, не зная

23:02

полного пути пакета. В результате пакеты

23:05

одного и того же потока могут идти по

23:07

разным маршрутам, приходить с разной

23:09

задержкой, поступать в неправильном

23:11

порядке и временно теряться. Уже на

23:14

принимающей стороне пакеты не

23:15

интерпретируются сразу как данные

23:17

приложения. Сначала анализируются

23:19

заголовки, то есть проверяется

23:21

целостность, определяется принадлежность

23:23

к потоку и восстанавливается правильная

23:26

последовательность. При использовании

23:28

надёжных протоколов потерянные пакеты

23:30

запрашиваются повторно. При

23:32

использовании ненадёжных протоколов

23:34

пропущенные данные игнорируются. И

23:36

только после этого восстановленный поток

23:39

байтов передаётся на уровень приложения,

23:41

где уже применяется логика конкретного

23:43

сервиса. В данном случае это Telegram.

23:45

Точно такой же процесс происходит и в

23:47

обратную сторону, когда сервер

23:49

отправляет данные вашему устройству.

23:51

Теперь переходим к следующей части

23:53

первой главы, первого модуля. И давайте

23:55

чуть подробнее разберём типы сетей. Как

23:58

мы разбирали, у нас существуют локальные

24:01

сети LAN Local Area Network и One White

24:05

Area Network. Но кроме вот этих двух

24:07

есть ещё несколько интересных типов

24:09

сетей, которые занимают промежуточное

24:11

место между локальными и глобальными

24:14

системами. Это MAN Metropolitan Area

24:16

Network и PEN Personal Area Network.

24:19

Начнём с Menли городской сети. Это сеть,

24:22

которая охватывает один город или

24:25

какой-то крупный кампус. Представьте,

24:27

что несколько офисных зданий в одном

24:29

районе соединены между собой высокой

24:31

пропускной способностью через

24:32

оптоволоконные линии. Они могут

24:35

обмениваться данными быстрее, чем если

24:37

бы это был, например, обычный oneн

24:39

Network, потому что расстояние меньше,

24:42

инфраструктура оптимизирована, а

24:44

маршруты тщательно спроектированы. В

24:47

отличие от One, man обычно не соединяет

24:50

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

24:53

сетью часто, в принципе, централизовано

24:55

в пределах города или какой-то

24:57

определённой организации. Именно поэтому

24:59

её нельзя считать в Н, потому что

25:02

масштаб у неё меньше, контроль,

25:04

соответственно, выше, и сеть не требует

25:06

глобальной маршрутизации. Что касается

25:08

PEN, Personal Area Network или

25:11

персональной сети, это самая маленькая

25:14

сеть из всех, которую вы можете

25:15

встретить вокруг себя каждый день. Она

25:18

объединяет устройство одного человека,

25:20

это ноутбук, телефон, планшет, наушники

25:23

или там условно какие-нибудь смарт-часы.

25:24

В такой сети используются технологии

25:26

вроде блюuтуза, USB или иногда Wi-Fi на

25:29

коротких расстояниях. Пен очень

25:32

ограничена по расстоянию, пропускной

25:34

способности и количеству устройств. И её

25:36

основная задача - это обеспечить удобную

25:39

синхронизацию и обмен данными между

25:41

личными устройствами. Это совершенно

25:44

другой уровень, чем а потому что ПА он

25:47

не объединяет множество пользователей,

25:49

он не работает через провайдеров и, в

25:51

принципе, не нуждается в глобальной

25:53

маршрутизации. Двигаемся дальше и

25:55

давайте перейдём к следующей, а, скажем

25:58

так, концепции, которая определяет

26:00

структуру глобального интернета - это

26:02

автономные системы или AS, Autonomous

26:05

Systems. Автономная система - это

26:08

большая сеть или совокупность сетей,

26:11

управляемых одной организацией. Это

26:13

может быть интернет-провайдер, какая-то

26:15

крупная компания или облачный сервис.

26:18

Каждая такая автономная система имеет

26:20

уникальный идентификатор. Он называется

26:23

ACN autonomous System Number, который

26:26

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

26:29

они обмениваются трафиком. И внутри

26:32

автономной системы данные могут

26:33

передаваться по любым внутренним

26:35

маршрутам, оптимизированным для

26:37

скорости, надёжности и нагрузки. Однако

26:40

для обмена трафика между разными

26:42

автономными системами используется уже

26:45

такой специальный протокол под названием

26:47

BGP или если расшифровать, получится

26:51

Border Gateway Protocol. Он решает по

26:53

каким путям пакеты будут передаваться

26:55

между сетями в масштабах, в принципе

26:58

всего интернета. И вот благодаря как раз

27:00

автономным системам интернет не является

27:02

хаотичной мешаниной сетей. Каждая такая

27:05

AS управляет своей частью

27:06

инфраструктуры, но взаимодействует с

27:09

другими по чётко определённым правилам.

27:11

Ну вот, например, когда вы открываете

27:12

YouTube, трафик сначала проходит через

27:14

автономную систему вашего

27:15

интернет-провайдера, допустим, МТС или

27:18

Ростлеком, затем через одну или

27:20

несколько магистральных AS, и только

27:23

после этого попадает в автономную

27:24

систему Google, где расположены уже

27:27

сервера Ютуба. И каждый из этих этапов

27:29

контролируется своей автономной

27:31

системой, собственными правилами

27:33

маршрутизации. Давайте теперь вернёмся к

27:35

протоколам. Как мы уже знаем, это

27:37

правила, на которых строится общение

27:39

устройств сети. И вот теперь давайте мы

27:41

рассмотрим, откуда вообще берутся

27:43

протоколы и кто их разрабатывает. Это

27:45

такое будет небольшое отступление. А

27:48

сами транспортные протоколы TCP и UDP мы

27:51

разберём позже. Смотрите, каждый

27:53

протокол он рождается из конкретной

27:54

потребности. Когда появились первые

27:56

сети, стало очевидно, что без единых

27:59

правил устройства просто не смогут

28:00

понять друг друга. И нужно было

28:02

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

28:05

делить их на пакеты, проверять ошибки и

28:07

восстанавливать порядок. То есть это

28:09

реальные задача коммуникации между

28:11

устройствами, которые усложняются вместе

28:13

с сетью. С ростом интернета стало

28:15

понятно, что одно устройство или

28:17

программа не могут задавать правила

28:18

всему миру. Протоколы должны быть

28:20

едиными, открытыми и понятными для всех.

28:23

Поэтому существуют специальные

28:24

организации, занимающиеся разработкой и

28:27

стандартизацией протоколов, чтобы новые

28:29

технологии работали вместе с уже

28:31

существующими. И вот благодаря

28:33

стандартизации ваш браузер может

28:35

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

28:37

конце планеты, независимо от

28:39

производителя или оборудования. Именно

28:41

поэтому мы до сих пор используем TCP, IP

28:44

и HTTP. Их принципы остались прежними, а

28:48

новые версии лишь адаптируют их под

28:50

современные требования. А давайте ещё

28:53

кратко разберём про то, кто занимается

28:56

их разработкой, разработкой протоколов.

28:58

Существует несколько таких, наверное,

29:00

самых ключевых организаций. Самое

29:02

известное из них - это IETF

29:05

или, если расшифровать, это Internetk

29:08

Force. Это сообщество инженеров,

29:10

разработчиков и экспертов, которые

29:12

добровольно этот обсуждают, предлагают и

29:15

утверждают новые протоколы и стандарты.

29:18

Она как бы, понятное дело, не управляет

29:20

интернетом, она как бы создаёт и задаёт

29:22

эти правила игры, которые уже все

29:24

участники сети соблюдают. Кроме этой

29:27

организации есть и другие организации.

29:29

Например, ISO - это международная

29:31

организация по стандартизации, которая

29:33

формирует общие стандарты для сетевых

29:35

технологий, включая модель OSI, про

29:38

которую мы сейчас поговорим. А кроме неё

29:40

есть ещё такая организация, как ITE или,

29:44

если расшифровать Institute of

29:47

Electronical and Electronics Engineers.

29:50

Это институт инженеров электротехники и

29:52

электроники, который разрабатывает

29:53

стандарты для локальных сетей, таких как

29:56

ERNet и Wi-Fi. Все эти организации, они

29:59

работают независимо друг от друга. Ну

30:02

вот, как мы видим, их усилия, они

30:04

дополняют друг друга и создают единый

30:06

язык для абсолютно всех устройств. То

30:08

есть получается, что протоколы - это

30:10

результат работы тысяч инженеров по

30:12

всему миру. После такого отступления про

30:14

сами протоколы и кто их кто занимается

30:16

их разработкой, давайте мы с вами

30:17

перейдём к следующей концепции. Это

30:20

модель OSI, про которую я сейчас

30:22

упомянул. Смотрите, OSI - это

30:24

аббревиатура от Open Systems

30:27

Interconnection. И на самом деле это не

30:29

какая-то конкретная технология или

30:31

протокол. Это концептуальная модель,

30:33

которая помогает понять, как данные

30:35

перемещаются от одного устройства к

30:37

другому. Как мы уже знаем, информация в

30:39

сети разбивается на пакеты, проходит

30:41

через множество устройств и

30:43

промежуточных узлов. OSI даёт нам

30:45

инструмент, чтобы структурировать этот

30:47

процесс и объяснить, что происходит на

30:49

каждом этапе передачи данных. Эта модель

30:52

разделяет сетевое взаимодействие на семь

30:54

логических уровней. Каждый уровень

30:56

отвечает за свою часть работы, и при

30:58

этом уровни взаимодействуют друг с

31:00

другом строго по порядку. То есть, если

31:03

какой-то уровень сталкивается с

31:04

проблемой, её проще диагностировать или

31:06

исправить, потому что мы точно знаем,

31:08

какая часть цепочки отвечает за ту или

31:10

иную функцию. Давайте мы эти а уровни и

31:14

разберём. Первый уровень, он называется

31:17

physical, ну, то есть физический. Здесь

31:19

мы уже знакомы с этой темой из пролога.

31:21

Этот уровень отвечает за физическую

31:23

передачу сигналов электрические импульсы

31:25

в медных кабелях, световые импульсы в

31:27

оптоволокне, радиосигналы в Wi-Fi или

31:30

мобильных сетях. Второй уровень Datalink

31:33

- это уровень канала передачи данных.

31:35

Здесь информация организуется в так

31:37

называемые кадры, которые включают

31:39

адреса устройств локальной сети,

31:41

Мак-адреса. Он обеспечивает корректную

31:44

передачу данных между устройствами

31:46

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

31:49

ошибки, которые могут возникнуть на

31:51

физическом уровне, например, и из-за

31:53

помех в кабеле. Третий уровень

31:56

называется network. Это сетевой уровень.

31:59

Это то место, где используются IP-адреса

32:01

и происходит маршрутизация между сетями.

32:04

Помните, мы говорили о ван, ман и

32:07

пакетах. Именно сетевой уровень решает,

32:09

как пакеты добираются от одного узла до

32:11

другого через множество промежуточных

32:13

автономных систем. Четвёртый уровень

32:16

называется транспорт. Транспортный. На

32:18

этом уровне управляется доставка и

32:20

порядок пакетов. Именно данный уровень

32:23

гарантирует, что пакеты, которые мы

32:25

разбивали при отправке сообщения или

32:27

видео, приходят в правильной

32:28

последовательности и что потерянные

32:30

пакеты могут быть повторно отправлены.

32:33

Как раз TCP и UDP работают именно на

32:35

этом уровне. Пятый уровень называется

32:38

session, сеансовый. Он отвечает за

32:40

установку, поддержку и завершение

32:42

соединений между приложениями на разных

32:45

устройствах. Например, когда вы

32:47

открываете видео на Ютубе, сеансовый

32:49

уровень обеспечивает, что связь с

32:51

сервером сохраняется во время просмотра,

32:53

точнее на время просмотра, а затем она

32:56

корректно закрывается. Следом идёт

32:58

шестой уровень presentation

33:00

представления. Он занимается форматом

33:02

данных, кодировкой и шифрованием. Это

33:05

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

33:06

чтобы текст изображения или видео,

33:08

отправленные одним устройством,

33:10

правильно отображались на другом. И,

33:12

наконец, седьмой уровень application

33:14

прикладной. Это всё то, что мы видим как

33:17

конечные пользователям: браузеры,

33:19

мессенджеры, электронная почта и

33:21

стриминговые сервисы. Этот уровень

33:23

взаимодействует с пользователями и

33:25

используют все нижние уровни для

33:27

передачи данных и получения ответов.

33:29

Именно разделение на уровне делает

33:31

модель USI такой мощной для понимания

33:34

сетей. И хотя на практике интернет не

33:36

используют напрямую OSI, и современные

33:39

сети строятся по модели TCP и IP, OSI

33:42

остаётся невероятно полезной концепцией.

33:45

По сути, это своего рода удобная карта

33:48

сети, которая показывает, что происходит

33:50

на каждом этапе передачи данных от

33:52

физического сигнала до прикладного

33:54

приложения. Ну и теперь я предлагаю

33:56

перейти уже к практическим моделям,

33:58

таким как TCP и IP, и сопоставим их с

34:01

этой концептуальной схемой. Если OSI,

34:05

как мы выяснили, это удобная

34:06

теоретическая схема, то TCP и IP - это

34:09

набор протоколов и правил, по которым

34:11

данные передаются в сети каждый день.

34:14

Именно по этой модели работают все

34:15

веб-сайты, мессенджеры, стриминговые

34:17

сервисы и облачные приложения. А модель

34:21

TCP и IP, она более компактная и

34:23

практичная, чем OSI. Здесь вместо семи

34:26

всего четыре уровня, но, несмотря на

34:28

меньшую детализацию, она охватывает всё

34:30

то же самое, что мы с вами рассматривали

34:32

в OSI. просто, а, она объединяет как бы

34:35

некоторые функции и делает их более

34:37

прикладными. Давайте мы, собственно, эти

34:39

четыре уровня и разберём. Первый уровень

34:42

называется Network Interfей или уровень

34:44

сетевого доступа. Это физическая и

34:47

канальная часть того, что в OSI делится

34:50

на Physical и Datalink. На этом уровне

34:53

устройство знает, как физически

34:54

передавать пакеты через кабели,

34:56

оптоволокно, Wi-Fi или мобильную сеть, и

34:59

как адресовать их в пределах локальной

35:01

сети. Всё то, о чём мы говорили про

35:03

кабели, повторители, роутеры и локальные

35:05

сети, здесь полностью используются на

35:08

практике. Второй уровень интернет. Он

35:10

отвечает за доставку пакетов между

35:12

сетями, то есть за маршрутизацию. Именно

35:15

здесь используется протокол IP, который

35:17

позволяет каждому пакету найти путь

35:19

через множество автономных систем.

35:21

Третий уровень называется транспорт.

35:24

Транспортный. Здесь работают TCP и UDP.

35:27

Этот уровень напрямую обеспечивает

35:28

надёжность, контроль последовательности

35:31

и целостность данных, которые мы так

35:33

подробно рассматривали

35:35

на примере с Телеграмом. И последний,

35:37

четвёртый уровень называется

35:39

Application. Прикладной уровень. Он

35:41

объединяет всё то, что находится на

35:43

верхних уровнях OSI: сеансовый,

35:45

презентационной и прикладной. Здесь

35:47

работают HTTP, HTTPs, FTP, SMTP, DNS и

35:53

другие протоколы, которые

35:54

взаимодействуют с пользователем и

35:56

обеспечивают реальный обмен данными

35:58

между приложениями. Ну что же, на этом,

35:59

в принципе, мы с вами разобрали четыре

36:01

уровня модели MTCP.

36:04

Здесь опять-таки хочу отметить, что мы

36:05

сейчас не углубляемся в детали каждого

36:08

протокола. Мы их разберём чуть позже.

36:10

Как бы важно усвоить просто, что

36:11

application уровень - это то место, где,

36:14

а, цифровые сигналы и пакеты

36:16

превращаются в понятные человеку

36:18

действия и сервисы. Ну и, в принципе, на

36:22

этом давайте подведём главную

36:24

особенность как бы TCP IP. Она

36:26

заключается в том, что она максимально

36:28

приближена к реальному миру и решает

36:30

конкретные задачи. Как доставить пакет

36:32

от вашего устройства до сервера, как

36:34

гарантировать их порядок и целостность,

36:36

и как взаимодействовать с сетевыми

36:38

приложениями. В принципе, на этом конец.

36:41

В принципе, на этом второй, точнее,

36:43

первый модуль у нас подходит к концу.

36:45

Подведём такие небольшие итоги. Мы с

36:47

вами здесь разобрали, что такое сеть и

36:49

как она работает. То есть то, что данные

36:52

всегда передаются пакетами, а протоколы

36:54

обеспечивают их правильную доставку. А

36:56

мы также с вами поговорили про типы

36:59

сетей, а познакомились с автономными

37:02

системами, которые управляют

37:03

маршрутизацией.

37:05

Ну и, наконец, рассмотрели сами модели

37:08

сетей OSI с семью уровнями и

37:11

практическую TCP и IP с четырьмя

37:14

уровнями. И теперь с этой базой мы можем

37:17

дальше углубляться уже в маршрутизацию.

37:20

Ну и переходить, соответственно, ко

37:21

второму модулю. Ну и для начала давайте

37:23

разберём, что такое IP, а также его

37:26

версия. IP

37:28

расшифровывается как интернет-протокол -

37:30

это цифровой адрес в сети. Он позволяет

37:33

точно определить, откуда пришёл пакет и

37:35

куда он должен попасть. Его можно

37:37

представить, ну, IP можно представить

37:39

как своего роду почтовый адрес. Чтобы

37:41

отправить письмо, нужен адрес

37:43

получателя. Чтобы получить ответ, нужно

37:44

указать, соответственно, обратный адрес.

37:47

И, как мы уже знаем, в каждом сетевом

37:49

пакете IP-адреса от правителя и

37:51

получателя, они записаны в заголовке.

37:53

Теперь давайте мы с вами, а, разберём

37:56

ключевые вещи в IP-адресах. То есть как

37:58

они устроены, зачем они нужны, как

37:59

генерируются и чем отличаются старые IP

38:03

версииче от нового IP версии 6. Начнём с

38:08

версии 4, потому что а она была а первым

38:12

стандартом и до сих пор, в принципе,

38:14

активно используется. Смотрите, IP V4 -

38:18

это тридцатидвухбитный числовой

38:20

идентификатор. В привычном виде он

38:22

записывается через точки. Пример вы

38:25

видите у себя на экране, но под этой

38:28

записью скрывается последовательность из

38:30

32 нулей и единиц. И чтобы такой длинный

38:34

набор цифр было проще читать и

38:36

использовать, адрес делят на четыре

38:38

блока по 8 бит актетом. Каждый такой

38:41

актет может принимать значение от нуля

38:44

до 255.

38:45

Если посмотреть глубже, каждый блок -

38:48

это двоичное число. Расшифровку вы

38:50

видите у себя на экране, и можно

38:52

посмотреть, во что превращается 192,

38:55

168, 1 и 10. И вот как раз соединив эти

38:59

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

39:03

полный IP4 адрес. Но IP-адрес - это не

39:06

просто набор каких-то рандомных чисел.

39:09

Он имеет структуру, которая помогает

39:11

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

39:14

Одна часть адреса указывает сеть, а

39:16

другая конкретное устройство внутри неё.

39:19

Это похоже на почтовый адрес, как я

39:21

приводил пример выше. То то есть сначала

39:23

письмо доставляют в нужный город, а

39:26

затем на улицу и только потом к нужному

39:28

дому. И точно также пакет сначала

39:31

попадает в нужную сеть, а уже внутри неё

39:33

находит конкретное устройство. Ну только

39:36

есть как бы одна проблемка. Смотрите,

39:39

IP4 он создавался в эпоху, когда

39:41

интернет ещё не был настолько глобальной

39:43

инфраструктурой, какой мы её знаем

39:46

сейчас. 32 бита позволяют создать чуть

39:49

более 4 млрд адресов. И когда вот этот

39:51

стандарт появился, этого оказалось более

39:54

чем достаточно. Однако с ростом числа

39:56

компьютеров, смартфонов, серверов и

39:59

других устройств стало понятно, что

40:01

адресное пространство заканчивается.

40:03

Кроме того, часть адресов

40:05

зарезервирована для специальных задач.

40:07

это внутренние сети, тестирование и так

40:10

далее. И как раз всё это ускорило

40:12

переход индустрии к новому стандарту IP

40:15

V6. IP шестой версии стал эволюционным

40:19

продолжением IP4 и решает ключевую

40:22

проблему и хватку адресов. Вме главное

40:25

отличие тут заключается в длине адреса.

40:27

Вместо 32 бит используется 128.

40:31

Это число настолько велико, что

40:33

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

40:35

каждому устройству на планете с огромным

40:37

запасом на будущее. Адреса IP V6

40:41

выглядят иначе. Они записываются в

40:43

шестнадцатиричной системе, а делятся на

40:46

восемь блоков по 16 бит и разделяются

40:48

двоеточиями. Пример вы видите у себя на

40:51

экране. И чтобы запись не была настолько

40:54

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

40:56

ещё можно сокращать. В результате тот же

40:58

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

41:01

Вы видите сейчас у себя на экране, как

41:03

он может выглядеть. Структура IP шестой

41:05

версии также делится на две части.

41:07

Первая часть, она определяет сеть,

41:09

которой, а, в которой находится

41:11

устройство. Вторая - это как бы

41:12

уникальный идентификатор интерфейса

41:14

внутри этой сети. А главная идея IP V6

41:19

заключается в том, что теперь можно

41:21

строить сети без оглядки на нехватку

41:23

адресов. Каждое устройство может иметь

41:25

уникальные публичный IP и быть доступным

41:28

напрямую. Это упрощает взаимодействие

41:30

между системами, делает сети гибче и

41:33

подготавливает интернет к дальнейшему

41:35

росту. Однако, чтобы эффективно

41:37

управлять адресным пространством и

41:39

понимать, какие устройства находятся в

41:41

одной сети, одних адресов, конечно же,

41:43

недостаточно. Нужен механизм, который

41:45

явно показывает границу между сетью и

41:48

устройствами внутри неё. И поэтому

41:50

сейчас мы с вами поговорим про Sider.

41:53

Sider расшифровывается как Class Inter

41:56

domain routing. Это способ записи

41:58

IP-адресов, который показывает, какая

42:01

часть адреса относится к сети, а какая к

42:03

устройствам внутри неё. Сегодня этот

42:06

подход используется повсюду: от домашних

42:08

роутеров до глобальной инфраструктуры

42:11

интернета. Ранее IP-адреса

42:13

распределялись по жёсткой системе

42:15

классов. Давайте мы их разберём. У нас

42:17

существовали большие сети, средние и

42:19

маленькие. Ну, тут есть проблема. Это

42:22

приводило к огромным потерям адресов.

42:25

Например, если компании требовалось

42:27

около 500 адресов, маленькой сети было

42:30

недостаточно, а следующая категория, она

42:33

предоставляла десятки тысяч адресов,

42:35

большинство из которых оставались

42:37

попросту неиспользованными.

42:39

И когда интернет начал стремительно

42:41

расти, стало очевидно, что такой подход

42:43

не масштабируется. И вот тут

42:45

потребовалась система, которая позволяет

42:47

выделять ролл на столько адресов,

42:49

сколько необходимо. Так и появился

42:51

сайer. Сейчас вы видите у себя запись на

42:54

экране. Это IP-адрес 192168

42:58

100/24.

43:00

А эта запись показывает, что первые 24

43:03

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

43:06

сети. Поскольку IP4 содержит 32 бита,

43:10

остаётся 8 бит для устройств внутри неё.

43:14

Именно эта часть определяет, сколько

43:15

устройств можно подключить. И,

43:17

соответственно, если доступно 8 бит, это

43:20

даёт 256 возможных адресов. Однако один

43:23

адрес обозначает саму сеть, а последний

43:26

используется для широковещательной

43:27

рассылки или, как это называется,

43:29

broadcast. Это специальный адрес, при

43:31

отправке на который пакет получает все

43:33

устройства внутри подсети. Ну, короче, в

43:36

итоге для устройства остаётся 254

43:38

адресом. Это этого более чем достаточно

43:41

для квартиры или небольшого офиса. И

43:45

получается, что сайдрон позволяет

43:46

создавать сети нужного размера,

43:48

уменьшает объём маршрутизации и

43:51

предотвращает бессмысленную потерю

43:53

адресов. Без него IP4 закончился бы

43:56

гораздо быстрее, а маршрутизация стала

43:58

бы чрезмерно сложной. Хорошо, сайer мы

44:01

разобрались. То есть, когда мы видим

44:02

запись вида/24,

44:04

мы понимаем, какая часть адреса

44:06

относится к сети. Но как это определяют

44:09

сами устройство? Для этого как раз

44:11

используется маска под сети. Это

44:13

специальное значение, показывающее, где

44:16

заканчивается сеть и начинается хост. В

44:19

двоичном виде маска представляет собой

44:21

последовательность единиц и нулей.

44:23

Единицы, они обозначают сеть, нули,

44:26

устройство. А для сети/24 маска выглядит

44:30

следующим образом. Вы видите сейчас у

44:31

себя её на экране. А в привычном форме

44:34

это выглядит следующим образом.

44:36

Получается, что всё, что попадает под

44:38

единицы, относится к сети, а всё, что

44:41

под нулим, к устройствам внутри неё.

44:43

Сейчас на экране вы у себя видите разбор

44:45

адресом какого-то, допустим, устройства.

44:49

То есть мы поняли, что сайд и маска под

44:52

сети - это две формы записи одной и той

44:55

же идеи. Сайдер, он просто удобен для

44:57

людей и маршрутизации, а маски

45:00

используются в настройках устройств и

45:02

сетевых протоколах. Теперь, когда мы

45:04

более-менее разобрались, а как

45:06

устройства получают адреса и как сеть

45:08

определяет их расположение, логично

45:11

перейти к следующему уровню

45:12

идентификации.

45:14

Если IP-адрес можно сравнить с адресом

45:17

дома, то порт, э, про который мы сейчас

45:20

и будем говорить - это номер квартиры

45:22

или дверь внутри этого дома. Именно порт

45:25

определяет, какое приложение на

45:27

устройстве должно принять данные. Порт

45:30

представляет собой логический номер,

45:31

который позволяет нескольким программам

45:34

одновременно использовать сеть, не мешая

45:36

друг другу. Когда данные приходят на

45:39

устройство, операционная система смотрит

45:41

не только на IP-адрес, но и на номер

45:43

портам, чтобы передать их нужному

45:45

приложению. Получается, что полный

45:47

сетевой адрес всегда состоит из трёх

45:50

элементов. Это транспортный протокол,

45:53

IP-адрес и номер порта. IP-адрес

45:56

указывает, куда доставить данные, а

45:59

порт, какая программа их ожидает. С

46:01

технической точки зрения порт - это

46:03

число от нуля до 65.535,

46:08

передаваемое внутри заголовкой TCP или

46:11

UDP. Исторически порты разделены по

46:13

назначению. Нижний диапазон закреплён за

46:16

стандартными сервисами. Допустим,

46:18

веб-серверы используют порт 80,

46:21

защищённые соединения HTTPS 443,

46:24

а удалённое управление ПСh двадцать

46:26

второй порт. Эти номера известны и

46:29

стандартизированы, чтобы клиенты могли

46:31

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

46:32

дополнительной настройки. Выше

46:34

располагаются порты, которые

46:36

используются приложениями и сервисами, а

46:39

ещё выше динамический диапазон, который

46:42

применяется клиентскими устройствами для

46:44

исходящих соединений. То есть, когда

46:47

браузер открывает веб-страницу, он

46:49

временно выбирает свободный порт,

46:51

использует его для соединения и

46:53

освобождает после завершение обмена.

46:56

Именно поэтому говорят, что сервер

46:57

слушает порт. Это означает, что

46:59

программа постоянно ожидает входящие

47:01

соединения на определённом номере.

47:04

Клиенты подключаются к этому порту, а

47:06

сервер обрабатывает запросы и отправляет

47:09

ответы. После того, как мы с вами

47:11

разобрали IP-адресацию и маршрутизацию,

47:14

переходим к Давайте перейдём к теме

47:16

маршрутизации. По-моему, я уже говорил в

47:19

этом видео, на всякий случай повторюсь,

47:21

что каждый пакет, проходящий через

47:23

интернет, он не знает весь путь до

47:26

получателя заранее. Представьте себе

47:28

путешествие по огромному лабиринту, где

47:30

каждый перекрёсток решает, куда

47:32

отправить вас дальше. В сети эту роль

47:35

выполняют маршрутизаторы. Каждый

47:37

маршрутизатор смотрит только на

47:39

следующую точку назначения и принимает

47:41

решение, куда отправить пакет дальше.

47:44

Этот принцип называется хоп byхоп. Шаг

47:47

за шагом. Пакет движется через сеть от

47:50

одного маршрутизатора к другому, и

47:52

каждый шаг зависит только от локальной

47:55

информации текущего устройства.

47:57

Маршрутизаторы используют так называемые

47:59

таблицы маршрутизации, которые

48:01

напоминают карту дорог. В этих таблицах

48:04

прописано, через какие интерфейсы

48:06

доступны разные сети. Когда пакет

48:09

приходит, маршрутизатор сверяет адрес

48:11

получателя с картой и отправляет пакет

48:14

туда, где он приблизится к целям. То

48:16

есть, если часть сети перегружена или

48:19

недоступна, пакеты обходят проблемный

48:21

участок. На стороне получателя система

48:23

собирает их в правильном порядке,

48:25

проверяет целостность и устраняет

48:27

потери. Переходим к следующей теме. И

48:30

здесь мы давайте с вами поговорим про

48:33

одну, скажем так, проблемку. Смотрите,

48:35

каждое устройство в сети, оно нуждается

48:37

в уникальном адресе для обмена данными.

48:40

Однако, понятное дело, что глобальных IP

48:42

V4 адресов недостаточно, и подключать

48:45

каждое устройство напрямую к интернету

48:47

просто невозможно.

48:49

И здесь у нас появляется NAT, что

48:52

расшифровывается как network Adress

48:54

translation. Эта технология позволяет

48:57

множеству устройств локальной сети

48:59

работать через один публичный IP,

49:01

скрывая внутреннюю структуру сети от

49:04

внешнего мира. Вот, допустим, у вас есть

49:06

роутер, к которому и подключены ваши

49:08

компьютеры, смартфоны, планшеты и так

49:11

далее. Но снаружи виден только один

49:14

адрес. Когда любое устройство отправляет

49:16

запрос в интернет, NAT заменяет его

49:19

внутренний адрес на внешний и

49:21

запоминает, кто отправил запрос. Таким

49:24

образом, ответ от внешнего сервера

49:26

вернётся именно на то устройство,

49:28

которое его ожидало. Для управления

49:31

большим числом устройств часто

49:33

используют ПАД по Portress Translation.

49:37

Пад добавляет каждому соединению

49:39

уникальный номер порта, что позволяет

49:41

роутеру различать десятки, сотни и даже

49:44

тысячи запросов и направлять ответы

49:46

корректно. Благодаря этому все

49:48

устройства могут использовать один IP.

49:51

При этом интернет не путается, кому

49:53

какой ответ нужен. Однако над создаёт

49:56

проблемы, когда нужно, чтобы внешние

49:57

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

49:59

внутреннему устройству. Если вы хотите

50:02

запустить собственный сервер или

50:04

онлайн-сервис, стандартный над

50:06

недостаточен. Интернет видит только один

50:08

адрес, и соединение не может попасть

50:10

внутрь вашей локальной сети. Но есть

50:12

решение портфовординг или

50:14

перенаправление портов. Роутер получает

50:17

запрос на определённый порт и пересылает

50:19

его конкретному устройству. Современные

50:22

провайдеры также часто используют CGN

50:25

когда сотни пользователей делят один

50:27

публичный IP. Это позволяет экономить

50:30

адреса, но усложняет прямое подключение

50:32

к устройствам. В таких сетях

50:34

портфовординг может не работать, а

50:37

запуск собственного сервера превращается

50:39

в достаточно сложную задачу. При этом

50:41

НАТО остаётся важнейшим инструментом. Он

50:44

не только экономит адреса, но и повышает

50:46

безопасность сети, скрывая внутреннее

50:48

устройство от прямых атак извне.

50:51

Получается, что NAT и PAD помогают

50:53

создать управляемую сеть, где каждое

50:55

устройство имеет доступ в интернет, но

50:58

при этом скрыты внутренние детали. И

51:01

если НАТ заботится о том, как устройства

51:03

видят интернет, то внутри локальной сети

51:06

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

51:08

работало автоматически и без и без

51:10

конфликтов. Именно здесь появляется

51:13

DHCP.

51:14

DHCP расшифровывается как Dynamic Host

51:17

Configuration Protocol. Это протокол,

51:20

который выдаёт IP-адреса и всю

51:22

необходимую информацию для подключения.

51:24

Маску под сети, адрес шлюза, DNS. Когда

51:28

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

51:30

посылает запрос: "Мне нужен адрес". В

51:33

свою очередь DHCP сервер отвечает,

51:36

назначая свободное IP на определённое

51:38

время. Это называется лизинг. И по

51:40

истечении срока лизинга устройство может

51:43

получить тот же адрес или какой-то

51:45

новый. А лизинг здесь играет ключевую

51:48

роль. Он предотвращает конфликты, когда

51:50

два устройства случайно получают один

51:53

адрес и одновременно позволяет повторно

51:55

использовать IP, если устройство

51:57

отключилось. Это делает сеть динамичной

52:00

и устойчивой даже при постоянном

52:02

подключении и отключении большого числа

52:05

устройств. DHCP особенно удобен для

52:08

пользователей. Подключение к сети

52:10

происходит мгновенно, без ручной

52:12

настройки, а сеть остаётся

52:14

упорядоченной. Но для серверов

52:16

динамическая выдача адресов непрактична.

52:19

Серверы должны быть доступны по

52:20

постоянному адресу, иначе клиенты их

52:23

попросту не найдут. Ну что же, в

52:24

принципе, на этом модуль 2 у нас

52:26

подходит к концом. Ну и мы переходим к

52:29

третьему модулю, в котором мы с вами

52:31

поговорим про DNS. Каждый день мы

52:33

открываем браузер и вводим адреса сайтов

52:36

в google.com, youtube.com или

52:38

github.com. Мы легко запоминаем эти

52:40

имена, делимся имим и сохраняем

52:43

закладки. Но компьютеры эти слова не

52:45

понимают. Чтобы открыть сайт, устройству

52:47

нужен IP-адрес сервера, на котором он

52:50

расположен. Возникает вопрос: как

52:52

интернет узнаёт, какой числовой адрес

52:54

скрывается за привычным доменным именем?

52:57

Как раз эту задачу решает DNS, что

52:59

расшифровывается как domain name system.

53:02

DNS переводит понятные человеку доменные

53:04

имена в IP-адреса понятные сети. DNS

53:07

переводит понятную DNS переводит

53:10

понятные человеку доменные имена в

53:12

IP-адреса. Можно представить его как

53:15

телефонную книгу интернета. Вы вводите

53:17

имя, а система превращает его в нужный

53:20

номер. Но DNS - это не какой-то там

53:22

единый реестр или сервером. Это система,

53:25

построеная по иерархическому принципу,

53:28

благодаря которому интернет остаётся

53:30

масштабируемым и устойчивым. На самом

53:32

верхнем уровне находятся корневые

53:35

DNS-сервера. Это Root Servers. Они не

53:38

знают адрес каждого сайта, но знают, где

53:40

искать информацию дальше. Если

53:42

представить DNS в виде дерева, корневые

53:44

серверы - это его основа. Следующий

53:47

уровень следующий уровень. Домены

53:49

верхнего уровня или

53:51

toplevelin.com.org.net.ru

53:55

и многие другие. Эти серверы отвечают за

53:58

информацию о доменах внутри своей зоны и

54:00

указывают, какие серверы знают

54:02

окончательный ответ. И на последнем

54:05

уровне находятся авторитетные ДНС-узлы,

54:07

которые содержат окончательные данные о

54:10

доме: IP-адрес сайта, почтовые серверы и

54:13

служебные параметры. Когда запрос

54:15

доходит до них, поиск завершается и

54:17

клиент получает точный ответ.

54:19

Получается, что запрос движется по

54:21

иерархии сверху вниз, пока не будет

54:23

найден источник достоверной информации.

54:26

Но доменное имя может возвращать не

54:28

только IP-адрес. Днс способен передавать

54:31

разные типы данных, которые описывают

54:33

инфраструктуру домена и правила работы

54:35

сервисов. Когда DNS-сервер отвечает на

54:37

запрос, он возвращает запись

54:39

определённого типа. Тип записи

54:41

указывает, какую именно информацию нужно

54:43

получить. И давайте мы сейчас разберём

54:46

все эти типы. Начнём с самой базовой

54:48

записи - это запись типа А. А запись

54:51

связывает доменное имя с IP адресом.

54:55

Когда браузер открывает сайт, чаще всего

54:58

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

55:00

указан IP-сервером. Пример вы видите

55:02

сейчас у себя на экране. Это означает,

55:04

чтобы открыть сайт, нужно подключиться к

55:06

серверу с этим адресом. А запись

55:09

остаётся основной основой работы веба,

55:11

потому что IPv4 по-прежнему широко

55:13

используется. Двигаемся дальше.

55:15

Следующий тип записи - это 4А запись.

55:18

Она делает то же самое, но только для IP

55:21

V6. Пример вы опять-таки видите у себя

55:23

на экране. Современные системы часто

55:25

запрашивают и А, и 4А записи

55:28

одновременно. Если IP V6 доступен, то

55:31

соединение может быть установлено через

55:33

него. Это повышает эффективность

55:34

маршрутизации. То есть получается, что а

55:37

и 4А записи - это фундаментальные

55:40

записи, которые позволяют клиенту найти

55:42

сервер. Но DNOS у сумеет работать не

55:44

только с ними. А давайте мы поэтому

55:46

разберём следующий тип под названием

55:48

Came. Это псевдонимы доменов. Came, что

55:51

расшифровывается как canonical name,

55:53

позволяет одному доменному имени

55:55

указывать на другое. Пример вы видите у

55:58

себя на экране. Это означает, что 3W -

56:01

это лишь псевдоним основного домена.

56:03

Когда клиент запрашивает

56:05

wwweexample.com,

56:08

то DNS перенаправляет его к example.com,

56:11

после чего возвращается уже а или 4А

56:14

запись. Came используют для подключения

56:17

CDN, облачных сервисов и внешних

56:20

платформ. Существует также такой тип,

56:22

как MX. MX записи определяет, какие

56:25

серверы принимают электронную почту для

56:27

домена. Ну, допустим, вы отправляете

56:29

письмо на адрес supportexample.com.

56:32

Почтовая система запрашивает MX записи

56:35

domin example.com, чтобы понять, куда

56:38

доставить сообщение. Пример ответа может

56:40

выглядеть следующим образом. Видите

56:43

сейчас у себя на экране. Число

56:45

приоритета указывает порядок

56:46

использования. То есть сервер с меньшим

56:48

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

56:51

И если основной сервер недоступен, то

56:53

почта будет отправлена на резервный. Это

56:56

делает почтовую систему более устойчивой

56:58

Иксбоем. Также существуют TXT записи.

57:01

Это служебные проверочные записи. Они

57:03

позволяют хранить произвольный текст,

57:05

который используется различными

57:07

сервисами. Хотя изначально они

57:09

создавались для комментариев. Сегодня

57:10

TXT играет, в принципе, важную роль в

57:12

безопасности и верификации. Через TXT

57:15

реализуется, например, подтверждение

57:17

владения доменом, ну, например, для

57:19

облачных сервисов или SPF, разрешённые

57:22

почтовые сервера. Ну, то есть, в

57:23

принципе, различные проверки сервисов.

57:26

Пример

57:27

SPF записи может выглядеть следующим

57:29

образом. Видите у себя сейчас этот

57:31

пример на экране? А что она делает? Она

57:33

сообщает принимающим серверам, какие

57:36

источники имеют право отправлять почту

57:38

от имени домена. Двигаемся дальше. Далее

57:41

давайте разберём по-быстрому тип записи

57:43

NS. NS записи указывают, какие

57:46

DNS-серверы являются авторитетными для

57:49

доменом. То есть, когда домен

57:50

делегируется хостинг-провайдеру или

57:52

ДНС-платформе, NS записи сообщают миру,

57:55

где искать официальную информацию.

57:58

Пример вы видите сейчас у себя на

57:59

экране. Это означает, что именно эти

58:01

серверы содержат достоверные DNS-данные

58:04

домена. Безс-записей DNS просто не знал

58:07

бы, где хранится информация о домене. Ну

58:10

и последний тип записи, который мы

58:11

разберём - это запись, это тип под

58:13

названием SRV. SRV записи используются

58:17

для указания конкретных сервисов. Внутри

58:19

домина SRV применяется в Voiceover

58:22

IP-системах, в корпоративных системах, в

58:25

игровых сервисах и так далее. Пример CRV

58:29

записи может указать, где расположен

58:31

сервер, допустим, голосовой связи и на

58:33

каком порту он работает. Это что даёт?

58:36

Это позволяет клиентским приложениям

58:38

автоматически находить нужные сервисы

58:40

без какой-то, а, ручной настройки. В

58:42

принципе, на этом мы более-менее, э,

58:45

кратко разобрали ДНС, ну, типы DNS

58:48

записей. Я думаю, в принципе, это

58:50

достаточно для, а, понимания. Поэтому

58:53

давайте будем переходить дальше и

58:55

разберём уже resolving доном. Смотрите,

58:58

предположим, вы вводите адрес сайта, ну,

59:01

условно, cloudfayer.com.

59:03

Браузер не может сразу отправить запрос

59:05

на сервер. Сначала ему нужно узнать

59:07

IP-адрес, связанный с этим именем, как

59:09

мы уже поняли. И как раз вот этот

59:11

процесс называется резолвингом домена,

59:13

преобразованием доменного имени в

59:15

сетевой адрес. На первый взгляд всё

59:17

выглядит доменно, но за доли секунды тут

59:19

происходит целая цепочка проверок. Что

59:22

именно происходит? Если говорить кратко,

59:23

то система всегда пытается получить

59:25

ответ самым быстрым способом, не

59:27

обращаясь к внешним серверам без

59:29

необходимости. Давайте мы разберём

59:31

поподробней. Сначала браузер проверяет

59:33

собственный кэш. Если вы уже открывали

59:35

этот сайт недавно, то адрес может

59:37

храниться прямо в памяти браузера и

59:39

повторный запрос не требуется. Если

59:41

записи нет, запрос передаётся

59:43

операционной системе. Операционная

59:45

система также ведёт собственный DNS-эш,

59:47

где могут храниться недавно

59:49

использованные домены. Если и там ответа

59:51

нет, то система обращается к локальному

59:54

резолверу. Обычно это DNS-сервер вашего

59:56

роутера или провайдера. Именно он

59:58

выполняет полноценный поиск, проходя по

60:00

ДНС иерархии, от корневых серверов к

60:02

серверам доменной зоны и далее к

60:04

авторитетному серверу Домина. Как только

60:07

ответ найден, он возвращается обратно по

60:09

цепочке Resolver, OS и браузер. После

60:12

этого браузер уже знает IP-адрес и может

60:15

установить соединение с сервером. Однако

60:17

кэш не хранится вечно. Каждая DNS-запись

60:20

имеет параметр TTL, Time to Leave, время

60:22

жизни. Он указывает, сколько секунд

60:24

запись может храниться в кэше до

60:26

повторной проверки у авторитетного

60:28

сервера. Малый TTL позволяет быстрее

60:31

обновлять данные, а большой уменьшает

60:33

нагрузку на инфраструктуру и ускоряет

60:35

работу пользователей. И именно

60:37

кэширование и время жизни записей

60:39

подводит нас к следующему важному

60:41

эффекту, с которым сталкиваются

60:43

разработчики и администраторы при

60:45

изменении настроек домена. Смотрите,

60:47

когда вы изменяете DNS-записи, например,

60:50

переносите сайт на новый сервер или

60:51

меняете IP-адрес, а обновление не

60:54

становится, видимо, мгновенным. Это

60:56

явление называют DNS propagation или

60:58

распространением DNS изменений. Причина

61:01

кроется в кэшировании. Поскольку записи

61:04

хранятся на разных уровнях в браузерах

61:06

пользователей, операционных системах,

61:07

DNS-резалверах, провайдеров и

61:09

промежуточных серверах, старая

61:11

информация может продолжать

61:12

использоваться до истечения TTL. Это

61:15

означает, что часть пользователей будет

61:17

попадать на новый сервер, а часть на

61:19

старый. Такое состояние может

61:21

сохраняться от нескольких минут до 24

61:23

или даже 48 часов в зависимости от

61:26

установленного времени жизни записи и

61:28

политики кэширования у провайдеров. В

61:30

продакшене это приводит к типичным

61:32

ситуациям, которые часто вызывают

61:34

путаницу. После обновления ДНС сайт

61:37

может открываться у одних пользователей

61:39

и не открываться у других. Почта может

61:41

временно доставляться на старый сервер

61:43

или там, допустим, сертификации,

61:45

сертификаты HTTPS могут казаться

61:47

недействительными, если пользователь всё

61:49

ещё попадает на прежний хост. Поэтому

61:52

изменения DNS требуют аккуратного

61:53

планирования. Перед переносом

61:55

инфраструктуры TTL часто уменьшают,

61:58

чтобы ускорить обновление кэшей. После

62:00

завершения миграции TTL можно вернуть к

62:02

более высоким значениям для повышения

62:04

стабильности и производительности.

62:06

Теперь, когда мы понимаем, как доменные

62:08

имена преобразуются в адреса, как

62:10

работает кэширование, как оно ускоряет

62:12

работу там и почему изменения

62:14

распространяются немгновенно, мы можем

62:16

завершить третий модуль, в котором как

62:19

раз мы и разобрали DNS, и можем, а,

62:21

плавно переходить уже к следующему

62:24

модулю, к четвёртому модулю. В четвёртом

62:26

модуле мы подробнее поговорим про TCP и

62:28

UDP. Я уже несколько раз их упоминал,

62:31

когда мы разбирали то, как устроены

62:33

пакеты и кто разрабатывает эти

62:35

протоколы. Но до этого момента мы особо

62:38

не останавливали внимания на этих

62:39

протоколах детально. В этом модуле мы

62:41

полностью посвятим себя транспортным

62:43

протоколам. И начнём мы с TCP

62:46

Transmission Control Protocol, одного из

62:48

ключевых строительных блоков интернета.

62:50

TCP - это протокол с установлением

62:52

соединения, то есть связанный протокол.

62:55

Связанность здесь означает, что прежде

62:57

чем отправлять данные, два устройства

62:59

договариваются о том, что они готовы

63:00

обмениваться информацией и

63:02

устанавливается своего рода контракт

63:04

передачи, который гарантирует, что все

63:06

байты будут получены и получены они

63:09

будут в правильном порядке. Основу

63:11

установления соединения здесь составляет

63:14

знаменитый трёхэтапный хдшейк или

63:16

Freewayх headшеake. Этот процесс

63:18

начинается с того, что клиент посылает

63:20

серверу специальный пакет с флагом Sign,

63:23

сокращённый от Synchronize, сигнализируя

63:25

о желании установить соединение. Сервер

63:28

в ответ отвечает своим сайпакетом,

63:30

подтверждая готовность принять

63:31

подключение, и одновременно отправляет

63:34

АК, подтверждение того, что получил

63:36

запрос с клиентом. Наконец клиент

63:38

отправляет финальный ак. закрывая цикл

63:40

установления связи. Этот

63:42

последовательный обмен сигналами

63:43

обеспечивает надёжное начало

63:45

коммуникации и позволяет обеим сторонам

63:47

синхронизировать свои счётчики

63:49

последовательностей, которые будут

63:51

использоваться для отслеживания

63:52

передаваемых данных. После того, как

63:54

соединение установлено, TCP обеспечивает

63:57

надёжную доставку данных. Надёжность

63:59

достигается благодаря нескольким

64:01

ключевым механизмам. Протокол следит за

64:03

порядком байтов, проверяет корректность

64:05

каждого сегмента с помощью контрольной

64:07

суммы. И если какой-то пакет теряется

64:10

или приходит с ошибкой, то TCP

64:12

инициирует повторную передачу только

64:14

этого сегмента. И таким образом

64:16

получается гарантированно целостный

64:18

поток данных. Эта функция особенно важна

64:20

для протоколов, где критичен порядок и

64:22

целостность. Ну, например, для HTTP,

64:25

SMTP, FTP и многих других. Следующий

64:28

важный аспект - это потоковый характер

64:30

TCP. В отличие от протоколов без

64:33

установления соединения, где каждый

64:35

пакет независим, TCP представляет данные

64:37

как непрерывный поток байтов. Это

64:40

значит, что приложения могут отправлять

64:42

большие объёмы информации без разделения

64:44

их на отдельные сообщения на уровне

64:46

транспортного протокола. В TCP сам

64:49

разбивает поток на сегменты, оптимально

64:51

упаковывает их и обеспечивает их

64:53

доставку по сети. Получатель собирает

64:55

эти сегменты в исходный поток,

64:57

восстанавливая последовательность и

64:59

предоставляя приложению данные именно в

65:01

том порядке, в котором они были

65:03

отправлены. Всё, что я сейчас описал,

65:05

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

65:07

сегментация и повторные передачи, это

65:09

делает TCP сложным и мощным инструментом

65:12

для сетевого взаимодействия. Он умеет

65:14

регулировать скорость передачи в

65:16

зависимости от состояния сети, избегает

65:19

перегрузки, динамически управляет окнами

65:21

приёма и отправки и адаптируется к

65:24

потерям и задержкам. После того, как мы

65:26

подробно разобрали TCP и поняли, как

65:28

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

65:31

задать вопрос: а что происходит, когда

65:33

связь не требует такой строгой

65:34

надёжности, когда критична скорость, а

65:36

не абсолютная гарантия доставки? Именно

65:39

для таких задач существует UDP, что

65:41

расшифровывается как User Datram

65:43

протокол. UDP принципиально отличается

65:46

от TCP тем, что он без установления

65:48

соединения. Здесь нет трёхстороннего

65:50

рукопожатия и нет проверки доставки и

65:53

нет упорядочивания байтов. Каждый пакет

65:56

или датаграмма отправляется как

65:58

отдельная сущность, и отправитель не

66:00

получает подтверждения, что пакет дошёл

66:02

до получателя. Такой подход делает UDP

66:05

лёгким и быстрым, потому что протокол

66:06

практически не тратит ресурсы на

66:08

контроль и согласование, позволяя

66:10

минимизировать задержки и накладные

66:12

расходы на передачу данных. Несмотря на

66:14

отсутствие гарантии доставки, UDP крайне

66:17

востребован, допустим, в стриминге видео

66:19

и аудио, где потери нескольких пакетов

66:22

не разрушают общий поток, а

66:23

воспроизводится как небольшая

66:25

пятнистность картинки или

66:27

кратковременные шумы в звуке, или

66:29

онлайн-игры, где задержка важнее точной

66:31

доставки каждого пакета. же игровой

66:34

клиент не может ждать подтверждения от

66:36

сервера секунду или две, иначе

66:38

управление персонажем будет ощущаться

66:39

как тормозное. Особенное внимание тут

66:42

стоит уделить также IP, ну, voiceover

66:45

IP, то есть передача голоса через

66:48

интернет. Здесь UDP также незаменим,

66:50

потому что голосовые пакеты должны

66:52

доходить максимально быстро, и даже если

66:54

часть из них теряется, разговор остаётся

66:56

понятным. Ну, небольшие пропуски, они

66:59

компенсируются человеческим мозгом. TCP

67:02

в таких сценариях он бы оказался слишком

67:04

медленный из-за постоянной перепередачи

67:07

потерянных пакетов и контроля

67:08

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

67:11

каким-нибудь неестественным задержкам и

67:13

лагам голосовой связи. Технически

67:16

UDP-пакеты содержат минимальный

67:17

заголовок, где указаны порты от

67:19

правителя и получателям, длина пакета и

67:22

контрольная сумма. Данная компактность

67:25

сделает протокол лёгким для обработки

67:27

сетевыми устройствами, снижает нагрузку

67:29

на маршрутизаторы и серверы, ну а также

67:32

позволяет масштабировать приложение с

67:34

большим числом параллельных подключений.

67:37

Однако эта простота означает, что

67:39

ответственность за контроль ошибок,

67:40

проверку целостности и порядок доставки

67:43

полностью перекладывается на приложение.

67:45

Поэтому разработчики VIP клиентов,

67:48

игровых движков и стриминговых сервисов

67:50

создают собственные алгоритмы коррекции

67:52

потерь. буферизации и повторной

67:55

синхронизации данных, чтобы

67:56

компенсировать отсутствие встроенной

67:58

надёжности в протоколе. Если подытожить,

68:01

то UDP - это инструмент для сценариев,

68:03

где скорость важнее гарантии, а

68:06

приложения способны самостоятельно

68:07

справляться с потерями и корректировать

68:09

поток данных. Если подытожить, то UDP -

68:12

это инструмент для сценариев, где

68:13

скорость важнее гарантии. В отличие от

68:16

TCP, который заботится о каждом байте,

68:19

UDP доверяет приложениям принимать

68:21

решение о том, как использовать

68:22

доступный трафик. Теперь, когда мы

68:24

разобрали особенности TCP и UDP, можно

68:26

задаться вопросом, когда и почему

68:28

выбирают один протокол вместо другого.

68:31

Начнём с TCP. HTP, протокол, на котором

68:34

строится большая часть веба, работает

68:36

поверх TCP не случайно. Когда вы

68:38

открываете сайт, браузер ожидает, что

68:40

каждая часть данных придёт полностью и в

68:43

правильном порядке. HTML страница,

68:45

скрипты, стили, изображения. Всё должно

68:48

быть корректно собрано в конечном

68:50

потоке. TCP здесь гарантируют доставку

68:53

всех этих элементов, обеспечивая

68:55

контроль последовательности, повторную

68:57

передачу потерянных пакетов и проверку

68:59

целостности. Без TCP браузеры бы

69:01

сталкивались с ломающимися страницами,

69:04

когда отдельные файлы теряются или

69:05

приходят в неправильном порядке, а user

69:08

experience был бы крайне неприятным.

69:10

Надёжность TCP и его потоковая модель

69:13

позволяют HTTP быть стабильным,

69:15

предсказуемым и универсальным, даже если

69:17

сеть перегружена или нестабильно. Но

69:19

если посмотреть с другой стороны,

69:21

современные требования к скорости и

69:23

минимальным задержкам привели к

69:24

появлению протоколов поверх UDP, таких

69:27

как Quick. Эта аббревиатура

69:29

расшифровывается как Quick UDP Internet

69:31

Connections. Про него мы поговорим чуть

69:33

подробнее в следующем модуле. Ак

69:36

разрабатывался Google, чтобы совмещать

69:38

скорость UDP с необходимой надёжностью

69:40

TCP, но делать это эффективнее для

69:42

современных веб-приложений. Он

69:45

использует UDP как транспорт, потому что

69:47

UDP не устанавливает соединение и не

69:49

ждёт подтверждений. На этом базовом

69:51

уровне КВК реализует собственные

69:53

механизмы подтверждения и восстановления

69:56

потерянных пакетов, упорядочивания

69:58

потоков и шифрованием, которое в него

70:00

встроено по умолчанию. Это позволяет

70:02

уменьшить ручки TCP, такие как медленное

70:05

открытие соединений и head ofline

70:07

блокиing, когда один потерянный пакет

70:09

блокирует всю очередь доставки. То есть

70:11

получается, что TCP и UDP - это два

70:14

инструмента с разными философиями. Один

70:17

ориентирован на абсолютную надёжность и

70:19

упорядочистность, а другой на скорость и

70:21

эффективность, оставляя контроль

70:23

приложения. А теперь мы поднимаемся ещё

70:25

на один уровень сетевой модели и

70:27

посмотрим на протокол, с которым каждый

70:29

разработчик и пользователь сталкивается

70:31

ежедневно. Речь пойдёт об HTTP, языке,

70:35

на котором браузеры и серверы общаются

70:37

друг с другом. HTTP расшифровывается как

70:40

гипертексттрансфер протокол, протокол

70:42

передачи гипертекста. Несмотря на

70:44

название, он используется не только для

70:46

передачи HTML-страниц, но и для отправки

70:49

изображений, видео, JSON данных, файлов

70:52

и любых других ресурсов. HTTP относится

70:55

к уровню приложения. Он работает поверх

70:57

транспортных протоколов, чаще всего TCP,

71:00

используя из них надёжную доставку, но

71:02

сам определяет правила общения между

71:04

клиентом и сервером. В основе HTTP лежит

71:07

простая, но чрезвычайно мощная модель

71:09

взаимодействия под названием Request

71:12

Response, то есть запрос-ответ. Клиент,

71:14

например, браузер, отправляет запрос на

71:16

сервер, указывает адрес ресурса, метод

71:19

операции, заголовки и иногда тело

71:22

запроса. Сервер принимает этот запрос,

71:24

обрабатывает его и возвращает ответ,

71:27

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

71:29

служебные заголовки и данные. После

71:31

этого цикл считается завершённым.

71:34

Ключевое понятие в HTTP - это

71:36

идомпотентность. Говоря по-простому,

71:38

идомпотентный запрос можно отправить

71:40

несколько раз подряд, и результат не

71:42

изменится. Например, если вы открываете

71:44

страницу пользователям, повторное

71:46

обновление страницы не создаёт новых

71:48

данных и ничего не ломает. Вы просто

71:51

снова получаете тот же результат. Это

71:53

важно для устойчивости сети. То есть,

71:55

если запрос потерялся или был отправлен

71:57

повторно из-за сбой соединения, сервер

72:00

не должен случайно продублировать

72:02

операцию. Поэтому одни HTTP операции

72:04

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

72:07

другие нет. И это напрямую влияет на

72:09

проектирование апи и поведение клиентов.

72:12

HTTP также определяет методы, своего

72:14

рода глаголы, которые сообщают серверу,

72:17

что именно нужно сделать с ресурсом.

72:19

Предлагаю разобрать эти методы. Первый -

72:21

это Gет. Используется для получения

72:24

данных. Он не должен изменять состояние

72:26

сервера, считается безопасным и

72:28

демпатентным. Браузеры активно кэшируют

72:30

такие запросы. Далее идёт пост.

72:33

Применяется для создания новых ресурсов

72:35

или выполнения действий, которые

72:37

изменяют состояние системы. Ну,

72:39

допустим, регистрация пользователя,

72:41

отправка формы или создание заказа.

72:44

Повторный постзапрос может создать

72:46

дубликаты, поэтому он не идемпотентен.

72:49

Следом идёт пут, означает полную замену

72:51

ресурса. Если отправить один и тот же

72:53

пут несколько раз, результат останется

72:55

одинаковым. Ресурс будет приведён к

72:57

переданному состоянию. Патч используется

73:00

для частичного обновления ресурса, когда

73:03

нужно изменить только отдельные поля.

73:05

Повторная отправка может дать тот же

73:07

результат, но это зависит от логики

73:09

изменений, поэтому патч обычно не

73:10

считают строго ипотентным. Далее идёт

73:13

delete. Он удаляет ресурс. Он считается

73:16

идемпотентным, потому что если ресурс

73:18

уже удалён, то повторный запрос не

73:19

изменит состояние сервера. А потом идёт

73:23

head. Он работает так же, как и getет,

73:25

но сервер возвращает только заголовки

73:27

ответа без тела. Это позволяет проверить

73:29

наличие ресурса, его размер, дату

73:31

изменения или кэшметаданные без загрузки

73:34

содержимого. Ну и последний - это

73:36

Options. Он сообщает клиенту, какие

73:39

методы и параметры поддерживает сервер

73:41

для конкретного ресурса. Этот метод

73:43

используется, например, в механизме CS,

73:46

когда браузер заранее опроверяет,

73:47

разрешён ли запрос другого домена.

73:50

Помимо методов, HTTP также используют

73:52

статусы ответов. Это трёхзначные коды,

73:54

которые сообщают результат обработки

73:56

запроса. Они делятся на категории. Коды,

73:59

которые начинаются на 200, они означают

74:02

успешное выполнение запроса. Ну,

74:05

например, 200. А далее, те, которые у

74:08

нас начинаются на 300, они сообщают о

74:10

перенаправлениях. А те, которые

74:12

начинаются на 400, они указывают на

74:14

ошибку со стороны клиента, например,

74:16

неверный запрос или отсутствие доступа.

74:19

Ну и те, которые начинаются на 500, они

74:21

сигнализируют о проблемах на стороне

74:23

сервера. Получается, что HTTP - это

74:26

универсальный протокол взаимодействия

74:28

приложений, определяющий структуру

74:30

запросов, операции и КД ответов. HTTPM

74:33

благодаря своей простоте и гибкости стал

74:36

основой веба, а и современных

74:38

интернет-сервисов.

74:39

Теперь давайте мы разберём то, что сам

74:42

HTP со временем существенно

74:44

эволюционировал.

74:46

Первые версии, они отлично, в принципе,

74:48

справлялись с передачей документов, но

74:50

рост веб-приложений и появление

74:52

динамического контента мобильного

74:54

интернета и сложных интерфейсов

74:56

потребовали повышения скорости, снижения

74:58

задерк и более эффективного

75:00

использования соединений. Так появились

75:03

HTTP 1.1, затем HTTP2 и, наконец, HTTP3.

75:09

Каждая версия, она решала конкретные

75:10

проблемы производительности предыдущей.

75:12

И сейчас давайте мы эти версии и то, что

75:15

они решали, разберём. Версия HTTP 1.1

75:19

была стандартизирована в 1997

75:22

году и стала стандартом веба на долгие

75:24

годы. Она ввела ключевое улучшение,

75:27

постоянное соединением KBI. В ранних

75:30

версиях HTPM для каждого запроса

75:32

открывалось новое TCP соединение.

75:34

Браузер загружал HTML, закрывал

75:36

соединение, затем открывал новое для

75:39

CSS, ещё одно для изображений и так

75:41

далее. Это приводило к огромным

75:43

накладным расходам. Каждый раз

75:44

выполнялся TCP хдшейк, увеличивались

75:47

задержки и росла нагрузка на сеть. Плать

75:51

одно TCP соединение открытым и

75:54

отправлять через него несколько запросов

75:56

подряд. Это резко снизило задержки и

75:58

ускорило загрузку страниц, особенно

76:01

содержащих десятки ресурсов. Однако у

76:03

этой версии оставалась серьёзная

76:05

архитектурная проблема. Head ofline

76:07

блокинг на уровне приложения. Это

76:09

означает, что браузер мог отправить

76:11

несколько запросов подряд, но сервер

76:13

обязан был отвечать строго по порядку.

76:16

Если первый запрос обрабатывался долго,

76:18

все последующие ответы задерживались,

76:20

даже если они уже были готовы. В

76:22

реальных условиях это приводило к

76:24

очередям внутри соединения и замедлению

76:27

загрузки страниц. Чтобы обойти это

76:29

ограничение, браузеры начали открывать

76:31

несколько параллельных TCP соединений к

76:33

одному серверу. обычно от шести до

76:35

десяти, что частично ускоряло загрузку,

76:37

но создавало дополнительную нагрузку на

76:40

сеть и серверы. HTP 1.1 стал фундаментом

76:43

современного веба, но его текстовый

76:46

формат и последовательная модель

76:47

обработки запросов со временем начали

76:49

ограничивать производительность. Теперь

76:52

давайте разберём HTTP2. Он был

76:54

стандартизирован в 2015 году на основе

76:56

протокола Speedy, разработанного Google.

76:59

Он был создан для решения проблем

77:01

производительности без изменения

77:03

семантики. http. То есть все методы,

77:06

статусы и логика остались прежними.

77:08

Изменилась именно механика передачи

77:11

данных. Главное нововведение здесь - это

77:13

мультиплексирование.

77:15

Теперь множество запросов и ответов

77:17

могут передаваться одновременно внутри

77:19

одного AT TCP соединения. То есть данные

77:21

разбиваются на небольшие фреймы, которые

77:24

могут перемешиваться и собираться

77:26

обратно на стороне клиента. Это

77:28

устраняет блокировку очереди, то есть

77:30

медленный ресурс больше не задерживает

77:31

остальным. Второе важное изменение - это

77:34

переход на бинарные фреймы вместо

77:36

текстового формата. В HTTP 1.1 данные

77:39

передавались в текстовом виде, что

77:41

требовало парсинга строк. HTTP2

77:44

используют компактные бинарныеструктуры,

77:47

которые быстрее обрабатываются и

77:49

уменьшают объём передаваемых данных.

77:51

Также HTTP2 вводит сжатие заголовков

77:54

Hпаack. В реальных запросах заголовки

77:56

часто повторяются, там сюзерагент и так

77:58

далее, и их сжатие существенно уменьшает

78:00

объём трафика. Ещё одна возможность -

78:03

это серверпу. То есть сервер может

78:05

отправить клиенту ресурсы заранее, не

78:07

дожидаясь явного запроса. Например,

78:09

вместе с HTML сервер сразу может

78:11

отправить CSS и JavaScript. Это

78:14

уменьшает задержки, хотя на практике

78:15

механизм используется осторожно, чтобы

78:17

не отправлять лишние данные. Несмотря на

78:20

огромный прирост производительности,

78:21

HTTP2 всё ещё работает поверх TCP, а

78:24

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

78:26

уровне транспорта. Потеря одного пакета

78:28

TCP может временно остановить передачу

78:31

остальных данных. И вот здесь мы уже

78:33

переходим к HTTP3. HTTP3 - это такой

78:36

наиболее радикальный шаг в эволюции

78:38

протокола. Он был стандартизирован в

78:40

2022 году и уже работает не поверх TCP,

78:43

а поверх UDP, используя транспортный

78:46

протокол Quick Quick UDP Internet

78:48

Connections, который я ранее упоминал.

78:50

Квик был разработан Google и

78:52

стандартизирован IATF как современный

78:55

транспортный протокол, объединяющий

78:57

скоростью DP с надёжностью, контролем

78:59

потерь и безопасностью. Главное

79:01

преимущество HTTP3 - это устранение

79:03

задержек, связанных с TCP. То есть

79:06

соединение устанавливается быстрее

79:07

благодаря объединённому TLS. Потеря

79:10

одного пакета больше не блокирует

79:12

остальные потоки. Каждый поток данных

79:15

независим от других, и повторное

79:17

подключение происходит мгновенно

79:18

благодаря механизму connection

79:20

Migration. Поскольку Quick встроенно

79:22

использует TLS 1.3, HTTP3 всегда

79:26

работает через шифрование, что повышает

79:28

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

79:30

соединения. Передача "Поверх USDP" здесь

79:33

позволяет обходить ограничения TCP, то

79:35

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

79:37

улучшать стабильность при потере пакетов

79:39

и ускорять загрузку страниц при

79:42

нестабильном соединении.

79:43

Получается, что эволюция HTTP - это путь

79:46

от простого текстового протокола к

79:48

высокоэффективной, многопоточной и

79:50

устойчивой системе передачи данных. Если

79:53

подытожить, то HTTP1.1 сделал соединение

79:56

постоянным. HTTP2 устранил блокировки и

79:59

оптимизировал передачу, а HTTP3 в целом

80:02

переосмыслил сам транспорт, минимизируя

80:05

задержки и повышая устойчивость

80:07

интернета в условиях современной сети.

80:10

Однако скорость и эффективность передачи

80:12

данных - это лишь часть картины. Как

80:14

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

80:16

начинают выполняться, возникает

80:18

следующий важный вопрос: как сервер

80:20

узнаёт, кто именно отправляет запрос и

80:22

что происходило ранее? HTTP по своей

80:25

природе является протоколом без

80:26

состояния, то есть каждый запрос

80:28

независим и не хранит информации о

80:30

предыдущих взаимодействиях. Это делает

80:32

протокол простым и масштабируемым, но

80:34

создаёт проблему. Без дополнительного

80:36

механизма сервер не сможет отличить

80:38

одного пользователя от другого или

80:40

запомнить, что произошло минуту назад.

80:42

Именно для решения этой задачи появились

80:44

кукис, сессии и токены, механизмы,

80:47

позволяющие сохранять контекст

80:48

взаимодействия между клиентом и

80:50

сервером. Допустим, когда сервер хочет

80:53

сохранить небольшие данные на стороне

80:55

клиента, он отправляет заголовок set

80:57

cookie. Браузер сохраняет куки и

81:00

автоматически прикрепляет её к каждому

81:02

последующему запросу к тому же домену.

81:05

Таким образом, сервер получает

81:06

возможность идентифицировать

81:08

пользователя без необходимости хранить

81:10

состояние внутри самого HTTP протокола.

81:13

Cookies, они представляют собой

81:15

небольшие текстовые пары, а, типа ключ

81:18

значения, которые могут хранить

81:20

идентификатор сессии, там какие-нибудь

81:22

настройки интерфейса, язык пользователя

81:25

или какие-то технические параметры. Они

81:27

автоматически управляются браузером и

81:30

передаются незаметно для пользователя.

81:32

При работе скис важны параметры

81:34

безопасности. Давайте мы разберём

81:36

несколько атрибутов в куке. Это атрибут

81:39

HTTP only. Он запрещает доступ к куке из

81:42

JavaScript. Это защищает её от кражи

81:45

через XS атаки. Далее атрибут Secure. Он

81:49

указывает браузеру передавать куки

81:51

только через https, предотвращая

81:53

перехват данных в незашифрованных

81:55

соединениях. И дополнительно часто ещё

81:58

используют этот атрибут same site сай,

82:00

который ограничивает отправку при

82:02

межсайтовых запросах и помогает бороться

82:05

с CSRF атаками. Но сама по себе куки -

82:07

это лишь контейнер. На практике в ней

82:09

чаще всего хранится идентификатор

82:12

сессии, а основные данные пользователя,

82:14

они, понятное дело, остаются на сервере,

82:16

то есть там почта, пароль, не знаю, его

82:18

имя и так далее. Вот такой подход, он

82:21

называется session based

82:22

autentification, если говорить именно

82:24

про сессии. То есть, когда пользователь

82:26

входит в систему, сервер создаёт сессию,

82:29

запись в базе данных или хранилище, ну,

82:31

например, там Redis, и присваивает ей

82:33

уникальный ID. Этот ID отправляется

82:36

клиенту в куки, и при каждом последующем

82:38

запросе сервер получает ID, находит

82:40

соответствующую сессию и восстанавливает

82:42

состояние пользователям, авторизацию,

82:44

роли и настройки. Мы сейчас не будем

82:47

углубляться в авторизацию и

82:48

аутентификацию, просто так чисто

82:50

пройдёмся поверхностно. У сейсси есть

82:52

огромное преимущество- это высокий

82:55

уровень контроля и возможность мгновенно

82:57

завершить доступ, удалив запись на

82:59

сервере. Недостаток - это необходимость

83:01

хранить состояние и масштабировать

83:03

хранилище сессии при большом числе

83:04

пользователей. Альтернативой является

83:07

также Token Based Authentification.

83:09

Здесь вместо хранения состояния на

83:11

сервере система выдаёт клиенту токен,

83:13

криптографически подписанный набор

83:15

данных, содержащий информацию о

83:17

пользователе и правах доступа. Такой

83:20

токен, например, GVT, отправляется

83:22

клиентам в заголовки Authorization при

83:24

каждом запросе. В отличие от сессии,

83:26

серверу не нужно хранить состояние. Он

83:29

проверяет подпись токена и извлекает

83:31

данные прямо из него. Но токены сложнее

83:33

отзывать до истечения срока действия,

83:35

поэтому часто применяются дополнительные

83:37

механизмы. Это короткое время жизни,

83:39

рефреш-токены и списки отзыва. Ну, мы

83:42

сейчас не будем углубляться в тему

83:44

авторизации, потому что она сама по себе

83:46

огромная. Мы, поскольку у нас видео

83:49

совсем про другое, если вы хотите

83:50

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

83:52

посмотреть на канале отдельную

83:54

теоретическую лекцию у меня про

83:56

авторизацию и аутентификацию, а также

83:58

ещё практическое видео, где мы реализуем

84:01

как раз авторизацию на сессиях. То есть,

84:02

если подвести итоги, то HTTP остаётся

84:05

протоколом без состояния. Но благодаря

84:07

этим механизмам, это который мы сейчас

84:10

разобрали, а поверх него строятся

84:12

полноценные системы аутентификации,

84:15

персонализации и управления доступом. В

84:18

принципе, на этом модуль по HTTP можно

84:21

считать завершённым. Мы с вами разобрали

84:23

базовую модель запрос-ответ, а разобрали

84:27

методы, разобрали статусы, эволюцию. Ну

84:30

и теперь у нас есть целостное понимание

84:32

того, как веб взаимодействует с

84:34

пользователями, передаёт данные и

84:36

сохраняет контекст работы в реальном

84:38

времени. Но есть один критически важный

84:40

момент. Классический HTTP передаёт

84:42

данные в открытом виде. Это означает,

84:45

что любая информация, отправленная через

84:47

HTTP, может быть прочитана теми, кто

84:49

способен перехватить трафик. Как мы уже

84:51

знаем, а в сети данные передаются

84:54

пакетами через множество промежуточных

84:55

устройств. И если соединение не

84:57

защищено, содержимое этих пакетов

84:59

остаётся доступными для анализа.

85:02

Допустим, представьте, что пользователь

85:04

подключается к общедоступному Wi-Fi, в

85:06

кафе или аэропорту. При использовании

85:08

обычного HDP злоумышленник в той же сети

85:11

может перехватывать трафик с помощью

85:13

специальных инструментов анализа пакетов

85:15

и видеть передаваемые данные: логины,

85:18

пароли, содержимое форм, там куки-файлы,

85:22

номера карт или какие-то личные

85:23

сообщения. Это называется перехватом

85:25

трафика. или снифинг. Обравление

85:28

ограничивается чтением данных. Если

85:29

трафик не зашифрован, его можно изменить

85:31

по путиследования. Поскольку пакеты

85:34

проходят через множество узлов,

85:36

атакующий способен внедрять вредоносный

85:38

код, подменять содержимое страниц или

85:40

перенаправлять пользователя на фальшивые

85:42

сайты. Такой тип атаки известен как man

85:45

in the middle, человек посередине.

85:47

Например, при загрузке сайта без

85:49

шифрования злоумышленник может подменить

85:51

JavaScript файл, встроив вредоносный

85:53

код, который будет незаметно

85:54

перехватывать данные пользователя.

85:56

Пользователь видит страницу, которая

85:57

выглядит корректно, но на самом деле

85:59

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

86:02

Кроме атак злоумышленников, отсутствие

86:04

шифрования позволяет промежуточным

86:05

системам анализировать и модифицировать

86:07

трафик. Провайдеры или корпоративные

86:10

сети могут вставлять рекламу,

86:11

блокировать контент или перенаправлять

86:13

запросы. Поскольку данные передаются

86:15

открыто, у пользователя нет гарантии

86:17

целостности полученной информации.

86:20

Получается, что незашифрованная HTTP не

86:22

обеспечивает ни конфиденциальности, ни

86:24

целостности данных. Любая информация

86:26

может быть прочитана, изменена или

86:28

подменена по пути следования. Именно эти

86:31

уязвимости стали причиной появления

86:33

HTTPS, защищённой версии HTTP, которая

86:36

добавляет шифрование и гарантирует, что

86:38

данные остаются приватными и

86:40

незаметными. И сейчас мы разберём, как

86:42

работает TLS. протокол, который делает

86:45

это возможным. TLS, что расшифровывается

86:47

Transport Layer Security, протокол

86:49

безопасности транспортного уровня,

86:51

является механизмом, который

86:53

обеспечивает конфиденциальность и

86:55

целостность передачи. Именно ТС лежит в

86:58

основе https и защищает соединения,

87:00

через которые передаются пароли,

87:02

банковские данные, переписка, в общем,

87:04

любая информация. Главная задача ТЛС -

87:07

это создать защищённый канал связи

87:09

поверх уже установленного TCP

87:11

соединения. При этом данные шифруются

87:13

таким образом, чтобы их мог прочитать

87:15

только получатель, а любые изменения по

87:17

пути были обнаружены. Чтобы понять, как

87:20

это работает, важно разобраться в двух

87:22

типах шифрования: асимметричном и

87:24

симметричном. Асимметричное шифрование

87:26

используют пару ключей: публичный ключ

87:29

public, который можно передавать кому

87:31

угодно, и приватный ключ private keim,

87:33

который хранится в секрете. Данные,

87:36

зашифрованные публичным ключом, можно

87:38

расшифровать только соответствующим

87:39

приватным ключом. Когда браузер

87:41

подключается к серверу по HTTPS, сервер

87:44

отправляет свой публичный ключ. Браузер

87:47

использует его для безопасной передачи

87:49

секретной информации, которую может

87:52

прочитать только сервер. Однако

87:53

асимметричное шифрование вычислительно

87:56

тяжёлое и медленное. Использовать его

87:58

для всего потока данных было бы

88:00

неэффективно. Поэтому ТЛС применяет его

88:02

только на этапе установления защищённого

88:04

соединения. То есть перед началом

88:06

защищённого обмена данными клиент и

88:08

сервер сначала выполняют процесс,

88:10

который называется TLS Headshaк.

88:12

Рукопожатие ТЛС. Это серия шагов, в ходе

88:15

которых стороны согласовывают версию ТЛС

88:18

и набор криптографических алгоритмов.

88:20

Сервер отправляет свой цифровой

88:22

сертификат и публичный ключ. Клиент

88:24

проверяет подлинность сертификата и

88:27

стороны безопасно договариваются о

88:29

секретном симметричном ключе.

88:30

Современные версии ТЛС, например, TLS1.3

88:34

используют алгоритмы Defy Helman или

88:36

ACDE, позволяющие создать общий

88:39

секретный ключ даже через небезопасный

88:41

канал. При этом ключ не передаётся

88:43

напрямую, он вычисляется независимо

88:45

обеими сторонами. Это важный момент. То

88:48

есть даже если злоумышленник перехватит

88:50

весь обмен во время рукопожатия, он не

88:52

сможет восстановить итоговый ключ

88:53

шифрования. После завершения рукопожатия

88:56

стороны получают уже общий симметричный

88:58

ключ. Симметричное шифрование означает,

89:01

что один и тот же ключ используется для

89:03

шифрования и расшифровки. Алгоритмы

89:05

работают значительно быстрее и идеально

89:08

подходят для передачи больших объёмов

89:10

данных. Для защиты трафика от ЛС

89:12

используют современные алгоритмы

89:13

симметричного шифрования, таких как IES,

89:16

Advanced encryption Standard, а также

89:18

механизмы контроля целостности данных,

89:20

например, authentificated encryption

89:23

with Associated Data. Это обеспечивает

89:26

сразу три уровня защиты. Первое - это

89:28

конфиденциальность, то есть данные

89:30

невозможно прочитать. Второе - это

89:32

целостность, то есть любые изменения

89:33

будут обнаружены. И третье - это

89:35

аутентичность. Клиент уверен, что

89:38

общается именно с нужным сервером. Ну и

89:40

уже после завершения ТЛС рукопожатия и

89:43

установки симметричного ключа весь

89:45

дальнейший HTTP трафик передаётся в

89:47

зашифрованном виде. Даже если пакеты

89:49

будут перехвачены, они будут выглядеть

89:51

как случайный набор байтов. Именно

89:53

поэтому при подключении к HTTPS сайту

89:56

злоумышленник может видеть только факт

89:58

соединения, но не содержимое страниц,

90:00

формы или передаваемые данные. Теперь

90:02

давайте разберём, а какую роль играют

90:05

SSL-сертификаты и кто гарантирует, что

90:07

сервер, к которому вы подключаетесь,

90:09

действительно является тем, за кого себя

90:11

выдаёт. Смотрите, когда браузер

90:13

устанавливает защищённое соединение по

90:15

https, он должен убедиться, что сервер

90:17

действительно принадлежит тому домену, к

90:19

которому обращается пользователь. Эту

90:22

задачу решает SSL-сертификаты.

90:25

На самом деле последнее время корректнее

90:26

говорить TLS сертификаты, поскольку SSL

90:28

Secure Sockets Layer устарел, а

90:30

используется TLS. Это Transport Layer

90:33

Security. Сертификат - это цифровой

90:35

документ, который связывает доменное имя

90:37

с публичным криптографическим ключом

90:39

сервера и подтверждает эту связь с

90:41

помощью цифровой подписи доверенного

90:43

центра. Чтобы такой документ имел

90:46

юридическую и техническую ценность, его

90:48

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

90:50

экосистемы. Именно поэтому сертификаты

90:53

выдаются организациями, называемыми

90:55

Certificate Authorities или сокращённой

90:58

центрами сертификации. Они проверяют,

91:01

что заявитель действительно владеет

91:02

домином, после чего подписывают

91:04

сертификат своей цифровой подписью.

91:06

Среди известных центров сертификации

91:08

находится DGERT, Global Sign или Lent

91:11

Crypt. Когда центр сертификации

91:14

подписывает сертификат, он подтверждает,

91:16

этот публичный ключ действительно

91:18

принадлежит указанному домену. Браузеры

91:20

и операционные системы заранее содержат

91:23

список доверенных, поэтому их подписи

91:25

считаются надёжными. Однако доверие в

91:27

интернете строится через многоуровневую

91:29

модель, цепочку сертификатов. На вершине

91:31

этой цепочки находится корневой

91:33

сертификат root certificate встроены в

91:36

операционные системы и браузеры. Уже

91:38

ниже располагаются промежуточные

91:40

сертификаты, подписанные корневым

91:42

центром, которые используются для выдачи

91:44

сертификатов конкретным сайтом. То есть,

91:47

когда сервер отправляет свой сертификат,

91:49

он передаёт и промежуточный, чтобы

91:51

браузер или OS могли выстроить цепочку:

91:54

сертификат сайта, промежуточный и

91:56

корневой. Если эта цепочка корректна, то

91:59

соединение может считаться безопасным.

92:02

Чуть позже мы ещё разберём, почему

92:03

браузер доверяет корневому сертификату и

92:06

как формируются эти списки доверия. А

92:09

пока что давайте будем двигаться дальше.

92:11

Смотрите, не все сертификаты, они

92:12

подписываются доверенными центрами.

92:14

Иногда сертификат, он создаётся и

92:16

подписывается самим владельцем сервера.

92:19

Это называется Self Science сертификат.

92:22

Он обеспечивает шифрование канала, но он

92:24

не подтверждает подлинность сервером,

92:26

поэтому браузеры показывают

92:28

предупреждение о небезопасном

92:29

соединении. Такие сертификаты обычно

92:32

используются в разработке, тестовых

92:33

средах или внутренних корпоративных

92:36

системах, где доверие устанавливается

92:37

вручную. И теперь давайте ещё разберём

92:40

Wiildcard сертификаты. Смотрите, когда

92:43

условная инфраструктура начинает расти,

92:46

возникает новая задача. Нужно защищать

92:48

не один домен, а множество поддоменов. И

92:51

как раз для этого используются card

92:53

сертификаты. Например, сертификат для

92:57

поддоменов domina example.com будет

92:59

действовать там условно для

93:01

appiexample.com, для shopeexample.com и

93:04

любых других поддоменов. Это намного

93:06

упрощает администрирование

93:08

инфраструктуры и снижает количество

93:10

сертификатов, ну а также уменьшает

93:12

стоимость обслуживания. И именно на фоне

93:14

таких задач автоматизация управления

93:16

сертификатами стала особенно

93:18

востребований. Смотрите, раньше

93:20

получение сертификата было платным и

93:23

требовало ручной настройки, что

93:25

замедляло внедрение HTTPS. Вся ситуация

93:28

изменилась в 2015 году с появлением Leds

93:31

and Crypt, бесплатного центра

93:33

сертификации, созданного при поддержке

93:35

Internet Security Research Group. Что он

93:38

сделал? Он автоматизировал выдачу

93:40

сертификатов через протокол ACMIM

93:43

Automated Certificate Management

93:45

Environment. Сервер может самостоятельно

93:47

получить и регулярно обновлять

93:49

сертификат без участия администратора.

93:52

Именно это стало ключевым фактором

93:54

массового перехода интернета на https.

93:57

Если подытожить, то TLS-сертификат

93:59

выполняет сразу две ключевые функции. Он

94:01

включает шифрование соединения и

94:03

подтверждает подлинность сервером. Без

94:06

проверки сертификата злоумышленник мог

94:08

бы выдать себя за сайт банка или

94:10

онлайн-сервиса и перехватывать данные

94:12

пользователя. То есть сертификаты, они

94:14

формируют такой фундамент доверия в

94:16

интернете. И теперь давайте мы ещё

94:18

поговорим про то, почему браузер

94:19

доверяет сертификату. Когда мы говорили

94:21

о цепочке сертификатов, я упоминал, что

94:24

доверие в интернете строится не

94:25

напрямую, а через иерархию центров

94:27

сертификации. Но тут возникает вопрос,

94:29

почему браузер вообще доверяет этой

94:31

цепочке и кто решает, каким центром

94:33

можно верить. А здесь у нас как раз

94:36

ответ скрывается в так называемых

94:38

корневых списках доверия. Когда вы

94:40

устанавливаете операционную систему или

94:42

браузер, вместе с ними поставляется

94:44

набор встроенных корневых сертификатов

94:47

Root Essa Certificates. Это список

94:49

центров сертификации, котором

94:51

разработчики платформы решили доверять.

94:54

Если сертификат сайта можно связать

94:55

через цепочку подписи с одним из этих

94:58

корневых центров, соединение считается

95:00

безопасным. Например, операционные

95:01

системы от Microsof и Apple, а также

95:04

большинство дистрибутивов Linux

95:06

поддерживают собственные хранилища

95:07

доверенных краневых сертификатов. А

95:10

браузеры вроде Mazilla Firefox

95:12

используют свой независимый список, а

95:14

Google Chrome и Microsoft Edge опираются

95:16

на хранилище операционной системы. То

95:19

есть, когда вы открываете сайт по HTTPS,

95:21

браузер получает сертификат сервера и

95:23

промежуточные сертификаты, а затем он

95:25

пытается выстроить цепочку доверия до

95:27

корневого центра. Если такой корневой

95:29

сертификат присутствует в списке

95:31

доверенных, подписи корректны, срок

95:33

действия не истёк, а домен совпадает, то

95:36

соединение считается подлинным и

95:37

безопасным. Если же хотя бы одно условие

95:40

нарушено, например, сертификат

95:42

самоподписанный, срок действия стёк или

95:44

центр сертификации отсутствует в списке

95:46

доверенных, то браузер показывает

95:48

предупреждение о небезопасном

95:50

соединении. Это сигнал о том, что

95:52

личность сервера не может быть

95:54

подтверждена. Тут ещё важно понимать,

95:56

что вот эти списки доверия - это не

95:57

какой-то статичный механизм. Центры

95:59

сертификации могут быть исключены из

96:01

доверенных, если они нарушают какие-то

96:03

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

96:05

ошибки при проверке доминов. Такие

96:07

случаи на самом-то деле происходили, и

96:09

браузеры оперативно обновляли списки

96:11

доверия, чтобы защитить пользователей.

96:13

Получается, что доверие HTTPS строится

96:16

на доверии к ограниченному кругу

96:18

проверенных организаций и

96:19

криптографической проверки цепочки

96:21

подписей. Как раз вот этот механизм, он

96:24

позволяет миллиардам устройств по всему

96:25

миру безопасно устанавливать защищённые

96:28

соединения, не зная друг друга заранее.

96:30

Ну что же, на этом мы, в принципе, можем

96:32

считать модуль от LS, HTTPS и

96:34

безопасности соединений. завершённым.

96:37

Теперь, я думаю, вам ясно, как данные

96:39

шифруются, проверяются и как браузер

96:41

решает, чему доверять. Двигаемся дальше.

96:44

HTTP, как мы уже изучили, изначально

96:46

создавался как протокол запрос-ответ,

96:49

ориентированный на получение документов

96:50

и ресурсов. Каждый запрос инициируется

96:53

клиентом, сервер отвечает, и соединение

96:55

может закрываться после передачи данных.

96:58

Для большинства веб-страниц это было

97:00

достаточно. Пользователь нажимает

97:01

ссылку, получает страницу, всё логично.

97:04

Но когда появились приложения, требующие

97:06

мгновенной передачи данных, чаты или

97:08

онлайн-игры, стандартная модель HTTP

97:11

показала свои ограничения. Один из

97:14

способов организовать почти живое

97:16

обновление данных через HTTP - это

97:19

полинг. Клиент периодически отправляет

97:21

запросы на сервер, проверяя, появились

97:23

ли новые данные. На первый взгляд это

97:25

решение простое, но на практике оно

97:27

крайне неэффективно. Постоянные запросы

97:30

создают лишнюю нагрузку на сервер,

97:32

увеличивают трафик и задержку. Между

97:34

моментом появления события на сервере и

97:36

его получением клиента всегда есть

97:39

пауза. Чем чаще отправляются запросы,

97:42

тем выше нагрузка, но даже при высокой

97:44

частоте невозможно полностью устранить

97:46

эту задержку. Попытка сделать соединение

97:49

постоянным через HTTP, известное как

97:51

Long Poing, немного улучшает ситуацию.

97:54

Клиент держит соединение открытым до

97:56

появления данных, после чего соединение

97:59

закрывается и клиент открывает новое.

98:02

Такой подход уменьшает количество

98:03

повторных запросов, но он всё ещё

98:05

страдает от накладных расходов протокола

98:08

HTTP и ограничений на количество

98:10

одновременных соединений в браузере.

98:12

Более того, серверу всё равно приходится

98:14

управлять большим количеством висящих

98:16

соединений, что увеличивает сложность

98:19

инфраструктуры и требования к

98:21

масштабируемости. Эти ограничения

98:23

показали, что для Realтай time

98:25

коммуникации нужен принципиально другой

98:27

подход. Канал, который не требует

98:29

постоянного повторного установления

98:31

соединения и способен обеспечивать

98:33

двухстороннюю мгновенную передачу

98:35

данных. Именно эта потребность и стала

98:37

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

98:39

Websocket и Server Send Events, которые

98:43

мы сейчас и разберём. Ну и начнём мы с

98:45

протокола Websocket. В отличие от

98:47

классического HTTP, где клиенты

98:49

инициирует каждый запрос, Websocket

98:51

создаёт по постоянный двухсторонний

98:54

канал связи между клиентом и сервером.

98:56

Это означает, что как клиент, так и

98:59

сервер могут в любой момент отправлять

99:01

данные друг с другу без необходимости

99:03

открывать новые соединения для каждого

99:05

сообщения. Такая модель идеально

99:08

подходит для чатов, игровых серверов или

99:10

любых приложений, где важна мгновенная

99:12

реакция. Технически websocket строится

99:14

поверх TCP, который мы уже

99:16

рассматривали. TCP, как мы знаем,

99:18

обеспечивает надёжную доставку, порядок

99:20

байтов и потоковый характер передачи

99:22

данных. Websocket используют эти

99:24

свойства, создавая поверх TZP безопасный

99:27

и постоянный канал для передачи

99:28

сообщений. Клиент и сервер сначала

99:31

выполняют так называемое, где HTTP

99:34

запрос обновляется до Websocket

99:36

протокола. И после успешного рукопожатия

99:38

соединение остаётся открытым. И дальше

99:41

данные могут свободно течь в обе стороны

99:44

без дополнительной нагрузки на у на

99:46

установку соединений. Использование

99:48

вебсокет особенно полезно там, где нужно

99:50

поддерживать множество одновременных

99:52

соединений. В чатах это позволяет

99:54

мгновенно доставлять новые сообщения

99:56

каждому участнику, а в игровых

99:58

приложениях синхронизировать состояние

100:00

мира и позиции игроков. Протокол также

100:03

поддерживает бинарные данные, что важно

100:06

для передачи изображений, аудио или

100:08

любых других потоковых данных. Кроме

100:10

того, Websocket интегрируется с

100:12

современными веб-технологиями и легко

100:14

работает через стандартные браузеры,

100:16

прокси и межсетевые экраны, что делает

100:19

его практическим инструментом для

100:21

разработчиков. Он полностью решает

100:24

проблемы полинг и longполиing, позволяя

100:26

создавать настоящее real time приложение

100:29

без лишней нагрузки на сервер и сеть. В

100:32

целомкеet - это такой первый шаг

100:34

полноценной двухсторонней коммуникации в

100:36

вебе, который обеспечивает и скорость, и

100:38

надёжность, и эффективность, которую в

100:40

HTTP в чистом виде обеспечить просто не

100:43

может. Продолжая тему Real Time

100:45

коммуникации, также стоит рассмотреть

100:47

SSE, что расшифровывается как сервер

100:49

Sent Evens, технологию, которая решает

100:51

немного другую задачу, а именно

100:53

одностороннюю трансляцию данных от

100:56

сервера к клиенту в реальном времени.

100:58

SSE работает по принципу постоянного

101:00

HTTP соединения, но в отличие от

101:03

Websocket канал открывается только в

101:05

одну сторону. Сервер может отправлять

101:07

новые события клиенту по мере их

101:09

появления, а клиент ограничен в отправке

101:12

данных только стандартными HTTP

101:14

запросами. Это делает SSE особенно

101:16

удобным для систем уведомлений, лент

101:18

новостей, стриминга статистики и любых

101:21

приложений, где клиенту нужно просто

101:23

получать поток информации без

101:24

необходимости отправлять обратные

101:26

сообщения в реальном времени.

101:28

Технически SSE использует привычный

101:30

протокол HTTP и поддерживает текстовые

101:33

форматы вроде Evenstream. Когда клиент

101:36

подписывается на поток событий, сервер

101:38

удерживает соединение открытым и

101:40

постепенно отправляет новые сообщения.

101:43

Браузеры автоматически обрабатывают эти

101:45

события и вызывают соответствующие

101:48

обработчики на клиентской стороне.

101:50

Главное отличие от Websocket

101:52

заключается, в общем, в том, что

101:54

Websocket - это двухсторонний канал,

101:56

позволяющий и клиенту, и серверу

101:58

обмениваться данными в обе стороны с

102:00

минимальной задержкой. Тогда как SSE -

102:02

это односторонний канал, что упрощает

102:04

реализацию и снижает нагрузку на сервер,

102:07

но не подходит для интерактивных

102:09

приложений, где клиентов активно

102:11

передаёт данные, ну, вроде каких-нибудь

102:13

мессенджеров. Ну и финальное, что мы

102:14

рассмотрим в этом модуле - это WebRTC,

102:17

Webreal Time Communication, технологию,

102:20

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

102:22

браузеры и приложения друг с другом без

102:24

постоянного посредничества сервера. VRTC

102:27

основан на P2P соединениях. Это значит,

102:30

что данные аудио и видео передаются

102:33

напрямую между участниками сессии.

102:35

Сервер здесь используется лишь для

102:37

сигнализации, обмена информацией о

102:40

сетевых адресах и параметрах соединения.

102:43

После установления соединения весь поток

102:45

данных идёт напрямую между клиентами.

102:48

Это снижает задержки и уменьшает

102:50

нагрузку на сервер, делая общение

102:52

максимально быстрым и отзывчивым.

102:54

Технология поддерживает аудио и

102:57

видеосвязь, и это делает её ключевой для

102:59

видеоконференций, онлайн-уроков,

103:02

стриминга и совместной работы в реальном

103:04

времени. Примеры использования включают

103:07

Zoom, Google Meet, Discord и другие

103:09

современные веб-приложения для

103:11

видеосвязи. А встроено шифрование

103:13

потоков с помощью data transport layer

103:17

security и CRTP Secure Real Time

103:21

Transport Protocol обеспечивает защиту

103:23

данных от перехвата, делая P2P

103:26

соединения безопасными. Получается, что

103:28

WebRTC он дополняет Websocket и SSE,

103:31

предоставляя инструменты для

103:33

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

103:35

обмена данными между пользователями. На

103:38

этом модуль AБТ и вебсокетах и realта

103:42

коммуникациях в целом можно считать

103:43

завершённым. Мы в мы разобрали

103:45

ограничения HTTP, двухсторонние и

103:47

односторонние каналы, ну а также

103:49

технологии P2P, которые сегодня лежат в

103:52

основе чатов, уведомлений и видеосвязи.

103:55

Теперь давайте перейдём к более

103:56

фундаментальной части инфраструктуры, а

103:58

именно мы поговорим о том, как устроены

104:01

серверы, через которые проходят как раз

104:03

все эти данные и что позволяет им

104:05

принимать и обрабатывать запросы.

104:07

Вообще, что такое сервер? Сервер - это

104:09

программа, которая постоянно работает на

104:12

компьютере или виртуальной машине и

104:14

слушает определённый порт, ожидая

104:16

входящие соединения от клиентов. Как я

104:19

уже упоминал в прошлых модулях, порт

104:21

помогает определить, какое приложение на

104:23

устройстве должно получить данные. Но

104:25

сейчас нас больше интересует сама

104:27

концепция работы сервера. С технической

104:29

точки зрения сервер реализует три

104:31

ключевых действия: bind, listen и

104:34

accept. Сначала сервер привязывает себя

104:36

к конкретному порту и сетевому

104:38

интерфейсу. Это и есть Bind. После этого

104:42

он начинает слушать входящие соединения,

104:45

готовый уже принять запрос в любой

104:46

момент. Это listen. И когда приходит

104:49

подключение от клиента, сервер выполняет

104:51

ацепт, то есть устанавливает реальный

104:53

канал для обмена данными. Важно

104:56

понимать, что сервер - это не просто

104:57

пассивная точка приёма, это процесс,

105:00

который управляет очередью входящих

105:02

соединений и распределяет их между

105:04

потоками или асинхронными обработчиками.

105:07

Благодаря этому сервер способен

105:09

поддерживать связь с множеством клиентов

105:11

одновременно, изолируя их запросы друг

105:14

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

105:17

обмена данными. Но возникает

105:18

естественный вопрос: что делать, если

105:20

запросов становится слишком много и один

105:23

сервер не справляется? Здесь на помощь

105:25

приходят балансировщики нагрузки,

105:27

системы, которые распределяют трафик

105:29

между несколькими серверами, чтобы всё

105:31

работало быстро и без перебоев.

105:34

Балансировщик нагрузки - это

105:35

промежуточный компонент между клиентами

105:38

и серверами, задача которого максимально

105:40

эффективно распределить входящие

105:42

соединения. Существует несколько

105:44

подходов к к балансировке, и чаще всего

105:47

их делят на уровни уровень 4 L4 и

105:50

уровень 7 L7. Балансировка на четвёртом

105:53

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

105:55

модели OSI, которую мы тоже разбирали.

105:58

Она смотрит на IP-адреса, порты и

106:00

протоколы, чтобы перенаправить трафик на

106:02

конкретный сервер. Этот метод быстрый и

106:04

простой, но не понимает содержимое

106:06

запросов. Он работает с потоками данных

106:08

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

106:11

Балансировка на седьмом уровне работает

106:13

уже на уровне приложений. Она

106:14

анализирует сам запрос, то есть URL,

106:17

заголовки HTTP и тип контента. Это

106:20

позволяет, например, направлять

106:21

определённые страницы или апи вызовы на

106:24

разные серверы в зависимости от их

106:26

назначения. Такой подход гибче и

106:28

интеллектуальней, но требует больше

106:30

ресурсов, потому что каждый запрос нужно

106:32

прочитать перед распределением. Что

106:34

касается алгоритмов распределения

106:36

нагрузки, один из самых простых и

106:38

известных - это Round Robin или круговая

106:41

система. То есть балансировщик

106:43

последовательно направляет запросы по

106:45

кругу на каждый сервер в пуле. Метод

106:47

прост, но он не учитывает, сколько

106:49

нагрузки уже висит на конкретном

106:51

сервере. Более продвинутый подход - это

106:54

L Connections, когда балансировщик

106:56

направляет новый запрос на сервер с

106:58

наименьшим количеством активных

106:59

соединений. Так нагрузка распределяется

107:02

более равномерно и ни один сервер не

107:04

перегружается.

107:06

Балансировщики нагрузки, в общем,

107:07

позволяют системам масштабироваться

107:09

горизонтально. При росте пользователей

107:11

можно добавить ещё серверов, а

107:13

балансировщик автоматически распределит

107:15

трафик, обеспечивая стабильность и

107:17

быстрый отклик. Благодаря этому

107:19

веб-приложения остаются доступными даже

107:21

при высокой нагрузке, а пользователи

107:23

получают единый плавный опыт без

107:26

заметных задержек. Но теперь появляется

107:28

следующий вопрос: кто именно принимает

107:30

запросы первым, управляет трафиком и

107:33

решает, куда его отправить дальше? Здесь

107:35

появляется прокси или обратный прокси.

107:39

Это сервер-посредник, который принимает

107:41

запросы от клиентов и перенаправляет их

107:43

уже на внутренние серверы

107:45

инфраструктуры. Для пользователя всё

107:47

выглядит так, будто он общается с одним

107:50

сервером, хотя на самом деле за ним

107:51

может скрываться целый кластер сервисов.

107:54

Главная идея заключается в прозрачной

107:56

маршрутизации. Клиент отправляет запрос

107:59

на домен, соединение устанавливается с

108:01

rс proxy, а уже он решает, куда передать

108:04

запрос дальше. в приложение каписервису

108:08

или на сервер статических файлов, ну или

108:10

в отдельный микросервис. При этом

108:12

внутренние серверы, они остаются

108:14

скрытыми от внешнего мира. Reverse ProК

108:16

часто выполняет роль единой точки входа

108:18

в систему. Он может завершать

108:20

шифрование, обрабатывать заголовки,

108:22

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

108:25

ответы и кашировать статические ресурсы.

108:27

Это снимает нагрузку с приложений и

108:29

позволяет им сосредоточиться

108:31

исключительно на бизнес-логике. Одними

108:34

из самых популярных решений в этой роли

108:36

являются inin и H Proxim. Первый широко

108:40

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

108:42

веб-сервер и Reverse Proxim, отлично

108:44

подходящий для обслуживания статического

108:47

контента и HTTP трафика. Второй

108:49

изначально создавался как балансировщик

108:52

нагрузки и особенно эффективен при

108:54

работе с большим количеством соединений

108:56

и высокими нагрузками. В реальных

108:59

инфраструктурах они часто используются

109:01

вместе, дополняя друг друга. Ещё одной

109:03

важной функцией Reверse Proxy является

109:05

управление скоростью запросов или

109:07

рейдлимитинг. Этот механизм позволяет

109:09

ограничивать количество запросов от

109:11

одного клиента за определённый

109:13

промежуток времени. Он защищает систему

109:16

от перегрузок, автоматических атак и

109:18

злоупотреблений АИ. Например, если один

109:21

IP-адрес начинает отправлять тысячи

109:22

запросов в секунду, то Reverse Proxy

109:24

может временно заблокировать или

109:26

замедлить его трафик, сохраняя

109:28

стабильность сервиса для остальных

109:30

пользователей. Кроме того, прокси

109:32

помогает реализовать кэширование, сжатие

109:34

данных, фильтрацию заголовков и защиту

109:37

от распространённых вебатак. Он

109:39

становится таким своеобразным фильтром

109:42

между интернетом и внутренней системой,

109:44

обеспечивая контроль, безопасность и

109:46

оптимизацию передачи данных. В

109:49

результате прокси он превращается в

109:51

центральный элемент инфраструктуры и то

109:55

есть он упрощает масштабирование, он

109:57

повышает безопасность, он оптимизирует

109:59

производительность и в целом позволяет

110:01

гибко управлять маршрутизацией,

110:03

трафиком, оставаясь при этом полностью

110:05

прозрачным для конечного пользователя. И

110:07

переходим к финальной теме этого модуля.

110:09

Это мы поговорим про CDN. Когда

110:12

приложение начинает обслуживать

110:14

пользователей из разных стран, даже

110:16

хорошо настроенный сервер и

110:18

балансировщики нагрузки уже не могут

110:20

обеспечить одинаково быструю загрузку

110:22

для всех. Чем дальше пользователь

110:24

находится, тем больше времени требуется

110:26

данным, чтобы добраться до него. Ну,

110:28

что, в принципе, логично. Именно эту

110:31

проблему решают CDN, сети доставки

110:33

контента, которые позволяют сайтам и

110:35

приложениям работать быстро, независимо

110:37

от географии пользователя. CDN

110:40

расшифровывается как Content Delivery

110:42

Network. Он представляет собой

110:44

глобальную сеть серверов, расположенных

110:46

в различных регионах мира. Когда

110:48

пользователь открывает сайт, его запрос

110:50

направляется не напрямую к вашему

110:52

основному серверу, а к ближайшему узлу

110:54

сети. Если пользователь, например,

110:56

находится во Франкфурте, контент будет

110:59

доставлен из ближайшей европейской точки

111:01

присутствия. В Северной Америке

111:03

посетители, допустим, из Нью-Йорка,

111:05

Бостона или Торонто будут обслуживаться

111:07

ближайшими узлами на восточном

111:09

побережье. А если пользователь находится

111:11

в Азии, например, в Токио, Сиуле или

111:13

Сингапуре, то запрос направится к

111:16

ближайшим азиатским узлам сети.

111:18

Благодаря сокращению расстояния между

111:20

пользователем и сервером существенно

111:22

уменьшается задержка передачи данных и

111:25

ускоряется загрузка страниц. Одним из

111:28

ключевых механизмов CDN является Cшин.

111:31

кширование на периферийных узлах сети.

111:34

Когда ресурс запрашивается впервые, CDN

111:37

получает его с вашего основного сервера

111:39

и сохраняет копию. При последующих

111:41

запросах этот файл отдастся уже напрямую

111:44

с ближайшего GE сервера без обращения к

111:47

Origin-серверу. Такой подход особенно

111:49

эффективен для статичных ресурсов. Это

111:51

изображения, стили, шрифты и

111:54

какой-нибудь, ну, в общем, любой

111:56

медиаконтент. То есть одна из главных

111:58

причин использования CDN - это

112:00

сокращение задержек. Задержка тут

112:02

возникает из-за физического расстояния,

112:04

количество сетевых узлов, узлов на пути

112:07

передачи данных и времени обработки

112:09

запроса. В общем, это, я думаю, всё

112:10

понятно. И CDN минимизирует эти задержки

112:13

как раз благодаря географической

112:15

близости серверов. Но помимо ускорения

112:18

доставки контента, CDN также значительно

112:20

повышает устойчивость и безопасность

112:22

системы. Многие CDN-провайдеры фильтруют

112:25

вредоносный трафик. обеспечивают защиту

112:27

от DDOS атак и могут временно отдавать

112:30

закшированные версии страниц даже при

112:32

недоступности основного сервера.

112:34

Особенно важным CDN становится для

112:36

проектов с международной аудиторией,

112:38

высоким трафиком, большим количеством

112:40

изображений и видео. Как раз

112:42

использование CDN, он оно позволяет

112:46

уменьшить нагрузку на инфраструктуру,

112:48

снизить задержки и обеспечить, в общем,

112:51

стабильную работу приложения при росте

112:53

пользователей.

112:55

В принципе, на этом этот модуль можно

112:56

подвести к концу. В нём мы с вами

113:00

поговорили про то, что такое сервер,

113:01

поговорили про балансировку нагрузки,

113:04

про CDN. И теперь вы видите, как, в

113:07

принципе, современные системы, они

113:08

обеспечивают скорость, масштабируемость

113:10

и надёжность своих веб-приложений.

113:13

Теперь давайте поговорим про DPI,

113:15

технологию, которая позволяет заглянуть

113:17

внутрь сетевого трафика и анализировать

113:19

его содержимое. DPI или Deep Packet

113:22

Inspection - это метод анализа сетевого

113:25

трафика, при котором система смотрит не

113:27

только на заголовки пакетов, но и на их

113:29

полезную нагрузку. Другими словами, DPI

113:32

умеет читать то, что внутри пакета, и

113:34

делать выводы о приложении, содержимом и

113:37

намерениях трафика. То есть отвечать на

113:40

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

113:42

что именно. В отличие от классической

113:45

маршрутизации, ориентированной на адреса

113:47

и порты, DPI смотрит глубже. Он

113:50

сопоставляет содержимое с наборами

113:52

сигнатур, шаблонов, распознаёт протоколы

113:54

и приложения по характерным паттернам и

113:57

может принимать решения на основе

113:59

содержимого, а не только метаданных. Это

114:01

делает DPI эффективным инструментом для

114:03

обнаружения вредоносной активности, но

114:06

это одновременно и требует намного

114:08

большего вычислительного ресурса и более

114:10

сложной логики. Практические применения

114:13

DPI разнообразны- это защита сети, то

114:15

есть обнаружение атак, эксплоитов и

114:18

утечек. фильтрация контента, блокировка

114:21

нежелательных приложений или сайтов,

114:23

обеспечение качества обслуживания, то

114:25

есть приотиризация критичных потоков и

114:28

аналитика, сбор статистики и

114:30

поведенческих паттернов. Во всех этих

114:33

сценариях DPI превращает поток битов в

114:35

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

114:38

реакции. Технически DPI реализуется как

114:40

потоковая обработка. Пакеты или

114:43

соединения копируются или захватываются

114:45

и анализируются в реальном временем.

114:48

Система сравнивает последовательности

114:50

байтов с базами сигнатуры, анализирует

114:52

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

114:54

отслеживает состояние сессии, чтобы

114:57

корректно классифицировать зашифрованный

114:59

и незащищённый трафик, мультипакетные

115:01

протоколы и сложные приложенческие

115:03

схемы. При этом есть важные ограничения

115:06

и вызовы. Шифрование трафиком ТЛС

115:08

значительно снижает эффективность

115:10

классического DPI, потому что содержимое

115:12

пакетов скрыто. DPI либо требует точек

115:15

расшифровки, либо ограничивается

115:17

метаданными и поведенческим анализом.

115:19

Кроме того, глубокая инспекция вводит

115:22

задержки и требует масштабируемой

115:24

аппаратной поддержки, иначе потеря

115:26

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

115:28

В основе любой системы DPI лежит

115:30

многослойная архитектура, которая

115:32

позволяет одновременно обрабатывать

115:33

тысячи и миллионы пакетов без потери. На

115:36

первом уровне DPI сканирует заголовки

115:38

пакетов, извлекая ключевую информацию.

115:41

IP-адреса, порты, используемые

115:43

протоколы, а также дополнительные поля

115:45

TCP UDP. Эта информация позволяет

115:48

определить направление трафика,

115:50

принадлежность к определённым

115:51

приложениям и маршруты передачи.

115:54

Следующий уровень - это анализ полезной

115:56

нагрузки. Здесь DPI смотрит внутрь

115:59

пакета, сопоставляет последовательности

116:01

байтов с заранее определёнными

116:03

паттернами и сигнатурами, ищет ключевые

116:06

слова, признаки приложений или

116:07

протоколов. Благодаря этому система

116:09

умеет различать, например, HTTP трафик,

116:12

зашифрованный через TLS, потоковые видео

116:14

или игровые соединения, даже если они

116:17

используют нестандартные порты или

116:19

маскировку. На уровне правил DPI

116:21

принимает решение на основе анализа.

116:23

Система может блокировать подозрительные

116:25

пакеты, приоритизировать критичный

116:27

трафик или логировать события для

116:29

последующего аудита и расследований.

116:32

Правила могут быть статическими, заранее

116:34

заданными сигнатурами или динамическими,

116:37

с использованием анализа поведения

116:39

трафиком. Особое внимание уделяется

116:41

взаимодействию DPI с протоколами и

116:43

туннелями. http и https, VPN и другие

116:47

защищённые каналы создают дополнительные

116:49

сложности, поэтому система должна уметь

116:52

корректно обрабатывать зашифрованные

116:53

соединения, определять тип трафика по

116:55

метаданным, размеру пакетов и шаблонам

116:58

поведения, не нарушая работу приложений

117:00

и обеспечивая минимальные задержки для

117:02

конечных пользователей. Именно так

117:04

формируется принцип работы DPI:

117:06

многослойный анализ, соединение данных о

117:09

заголовках и содержимом, применение

117:12

правил и корректная интеграция с

117:14

современными протоколами сети. В России

117:16

в рамках национальной политики

117:18

регулирования интернетом, кроме

117:20

стандартных методов анализа трафика

117:22

действует специальный уровень

117:23

технического контроля ТСПУ, технические

117:26

средства противодействия угрозам или

117:29

иногда их ещё называют чёрными ящиками

117:31

от Роскомнадзора. Это

117:33

программно-аппаратный комплекс, который

117:35

обязан быть установлен в сетях всех

117:37

операторов связи в соответствии с

117:39

Федеральным законом о суверенном

117:40

интернете. Это поправки в законе о связи

117:43

и об информации, вступившей в силу в

117:45

2019 году и направленные на обеспечение

117:48

устойчивости и контроля национального

117:50

сегмента интернета. По сути, ТСПУ - это

117:54

узлы фильтрации и анализа трафика,

117:56

размещённые на магистральных трассах в

117:58

узлах широкополосной, мобильной и

118:00

трансграничной связи. Операторы обязаны

118:03

прокладывать трафик через эти

118:04

устройства, но сами они не имеют к ним

118:07

доступа и не могут управлять их

118:08

конфигурацией. Это полностью

118:10

контролируется Роскомнадзором через

118:12

централизованный центр мониторинга и

118:14

управления. Главное отличие ТСПУ от

118:17

обычного DPI заключается в том, что DPI

118:19

внутри ТСПУ не просто анализирует

118:21

пакеты, оно интегрировано с

118:23

централизованной системой управления,

118:26

которая задаёт правила блокировки,

118:27

фильтрации и приоритизации трафика на

118:30

уровне государства. DPI в обычной сети

118:32

может анализировать содержимое пакетов,

118:34

распознавать протоколы и приложения, но

118:37

он не имеет полномочий вмешиваться в

118:39

глобальные политики. ТСПУ же используют

118:42

DPI для обнаружения VPN протоколов,

118:44

прокситор и других методов обхода

118:46

блокировок, распознавая характерные

118:49

сигнатуры, поведенческие шаблоны и

118:51

метаданные, включая SNIFTЛS, что

118:53

позволяет контролировать даже

118:54

зашифрованный трафик. Эти системы

118:56

активно могут замедлять соединение,

118:58

ограничивать скорость и прерывать работу

119:00

ВПН или прокси, если трафик считается

119:03

нарушающим правилом. К двадцать

119:05

третьим-двать шестым годам оборудование

119:07

ТСПУ установлено на 100% узлов связи в

119:09

стране, что означает, что весь

119:11

пользовательский трафик на территории

119:13

России проходит через эти комплексы и

119:15

подвергается централизованному анализу и

119:17

классификации. Практически это работает

119:20

так. Трафик может быть пропущен без

119:22

изменений, приоритизирован, замедлен или

119:24

полностью перекрыт. Данные системы

119:26

учитывает доменные имена, IP, тип

119:29

протоколов и даже метаданные

119:30

зашифрованных соединений. Как я уже

119:32

говорил, операторы, которые нарушают

119:35

требования установки или попытки обойти

119:37

фильтры, они несут административную или

119:40

даже уголовную ответственность. Ну, если

119:43

подведить итог, то ТСПУ - это

119:45

государственная инфраструктура контролем

119:47

и управление интернет-трафиком, которая

119:49

не только фильтрует и классифицирует

119:51

данные, но и активно вмешивается в

119:53

работу а разных обходных технологий,

119:56

таких как ВПН, влияя на скорость и

119:58

стабильность соединений пользователей.

120:01

Ну что же, поздравляю вас с тем, что вы

120:03

дошли до конца этого видео. Не забудьте

120:05

подписаться на мой Telegram-канал, где я

120:07

делюсь новостями и спойлерами к новым

120:09

видео. Если вам понравился контент, то

120:12

не забудьте поставить лайк и подписаться

120:14

на канал, чтобы не пропустить следующие

120:16

уроки. Спасибо за просмотр. До новых

120:18

встреч.

UNLOCK MORE

Sign up free to access premium features

INTERACTIVE VIEWER

Watch the video with synced subtitles, adjustable overlay, and full playback control.

SIGN UP FREE TO UNLOCK

AI SUMMARY

Get an instant AI-generated summary of the video content, key points, and takeaways.

SIGN UP FREE TO UNLOCK

TRANSLATE

Translate the transcript to 100+ languages with one click. Download in any format.

SIGN UP FREE TO UNLOCK

MIND MAP

Visualize the transcript as an interactive mind map. Understand structure at a glance.

SIGN UP FREE TO UNLOCK

CHAT WITH TRANSCRIPT

Ask questions about the video content. Get answers powered by AI directly from the transcript.

SIGN UP FREE TO UNLOCK

GET MORE FROM YOUR TRANSCRIPTS

Sign up for free and unlock interactive viewer, AI summaries, translations, mind maps, and more. No credit card required.