--- created: 2026-06-01 updated: 2026-06-01 --- # Экзамен — Разработка веб-ориентированных информационных систем --- ## Блок 1. Общие вопросы ### Модель OSI **Модель OSI (Open Systems Interconnection)** — теоретическая база, определяющая протоколы, равномерно распределяя их на 7 логических уровней. _Протокол_ — набор правил, определяющий, как происходит обмен данными. | Уровень | Название | Что делает | Устройства/Протоколы | |---|---|---|---| | 1 | Физический (Physical) | Передаёт физические сигналы (токи, свет, радио) | Хабы, репитеры, Ethernet (L1) | | 2 | Канальный (Data Link) | Проверяет ошибки; оперирует кадрами (frame) и MAC-адресами | Коммутаторы, Ethernet (L1+L2) | | 3 | Сетевой (Network) | Маршрутизация; оперирует пакетами и IP-адресами; ARP | Маршрутизаторы | | 4 | Транспортный (Transport) | Надёжная передача; TCP / UDP | — | | 5 | Сеансовый (Session) | Управляет сессиями | — | | 6 | Представления (Presentation) | Кодирование, сжатие (JPEG, GIF) | — | | 7 | Прикладной (Application) | Сетевые службы: HTTP(S), SMTP, FTP | — | **Инкапсуляция** — добавление служебной информации при движении вниз по уровням; **деинкапсуляция** — обратный процесс. **MAC-адрес** — уникальный идентификатор устройства на канальном уровне. **ARP (Address Resolution Protocol)** — определяет MAC-адрес по IP-адресу в локальной сети. --- ### IPv4, маска подсети, подсети (VLSM) **IP-адрес** имеет две части: адрес сети и адрес узла. **Маска сети** — 32-битное число из подряд идущих единиц. Примеры: - Класс A → 255.0.0.0 (`/8`) - Класс B → 255.255.0.0 (`/16`) - Класс C → 255.255.255.0 (`/24`) Современный стандарт — **CIDR** (бесклассовая адресация). **Диапазоны приватных сетей:** 1. 10.0.0.0 – 10.255.255.255 2. 172.16.0.0 – 172.31.255.255 3. 192.168.0.0 – 192.168.255.255 Специальные адреса: - `0.0.0.0` — используется DHCP при первом запросе. - `255.255.255.255` — широковещательный (broadcast). - `127.*.*.*` — loopback (обращение к самому себе; **localhost** = `127.0.0.1`). **Количество хостов в подсети:** $$H = 2^{n} - 2$$ где $n$ — число бит под номер хоста. **Количество подсетей:** $$N = 2^{n}$$ где $n$ — число бит, заимствованных из хостовой части. **VLSM (Variable Length Subnet Mask)** — маска переменной длины. Позволяет делить пространство на подсети разного размера, чтобы никто не перехватил трафик и каждому устройству достался адрес. Запись: `192.168.25.0/24`, где 24 — число единиц в маске (= 255.255.255.0). Пример: `192.168.1.0/24` — 254 хоста, адрес сети `192.168.1.0`, широковещательный `192.168.1.255`. **Выделение адресов:** IANA → Региональные регистраторы (RIPE для Европы) → Национальные регистраторы → Провайдеры. --- ### IPv6 **Причина появления:** IPv4 даёт ~4 млрд адресов — их не хватает. IPv6 использует 128 бит. $$340\ 282\ 366\ 920\ 938\ 463\ 463\ 374\ 607\ 431\ 768\ 211\ 456 \text{ адресов}$$ **Формат:** 8 групп по 4 шестнадцатеричных цифры: ``` 2041:0000:140F:0000:0000:0000:875B:131B ``` Правила сокращения: 1. Несколько блоков нулей подряд → `::` (только один раз в адресе). 2. Одиночный блок нулей → `0`. 3. Ведущие нули в блоке можно опустить. Пример: `2041:0000:140F:0000:0000:0000:875B:131B` → `2041:0:140F::875B:131B` **Отличия от IPv4:** - OSPF v2 → OSPFv3; ICMP → ICMPv6; ARP → NDP (Neighbor Discovery Protocol). - RIP → RIPng; BGP → MP-BGP; EIGRP поддерживает оба. - **Двойной стек** — одновременная работа IPv4 и IPv6. **Типы адресов:** - **Global Unicast** — публичные, аналог белых IPv4. - **Unique Local** (префикс `FD`) — аналог приватных IPv4. - **Link-Local** (префикс `FE80`) — для связи внутри сегмента. - **Multicast** (префикс `FF`). **Подсети в IPv6:** стандартный префикс подсети — `/64`. Первые 64 бита — префикс сети, последние 64 — идентификатор интерфейса. Число подсетей при `/48` от провайдера: 2^16 ≈ 65 536. **Получение префиксов:** IANA → Региональные реестры → ISP → Клиент. --- ### NAT (Network Address Translation) **Проблема:** нехватка публичных IPv4. **Решение:** NAT переводит приватные адреса в публичные. **Термины:** - **Inside Local** — приватный адрес устройства внутри сети. - **Inside Global** — публичный адрес, под которым виден пакет снаружи. - **Outside Local** — адрес внешнего устройства во внутренней топологии. - **Outside Global** — реальный адрес внешнего устройства. **Типы NAT:** | Тип | Суть | |---|---| | Static NAT | 1:1 — один внутренний ↔ один внешний (для серверов) | | Dynamic NAT | Пул внутренних ↔ пул внешних (автоматически) | | PAT (NAT Overload) | Многие внутренние → один внешний + уникальные порты (домашние роутеры) | **PAT:** использует номер порта TCP/UDP для разделения сессий. ICMPv4 использует Query ID вместо порта. **Stub-сеть** — тупиковая сеть, весь трафик которой выходит через один маршрутизатор. | Преимущества NAT | Недостатки NAT | |---|---| | Экономия публичных IPv4 | Увеличение задержки | | Конфиденциальность топологии | Проблемы с IPsec, входящими соединениями | | Независимость от провайдера | Потеря сквозной трассировки | --- ### TCP и UDP Основные протоколы транспортного уровня (L4). **TCP (Transmission Control Protocol) — RFC 793:** - Устанавливает соединение трёхсторонним рукопожатием: 1. **SYN** — запрос на соединение от отправителя. 2. **SYN-ACK** — подтверждение от получателя. 3. **ACK** — начало передачи. - После каждой порции данных получатель отправляет подтверждение. - **Надёжный, но медленный.** Используется там, где важна точность: пароли, транзакции, почта. **UDP (User Datagram Protocol):** - Просто отправляет пакеты без установления соединения. - Может теряться часть данных или нарушаться порядок. - **Быстрый, но ненадёжный.** Используется там, где важна скорость: видеозвонки, стриминг, игры. --- ### DNS (Domain Name System) **DNS** — система доменных имён. Аналог: контактная книга (ФИО → номер телефона → домен → IP). **Цепочка разрешения:** 1. Браузер → **кэш браузера**. 2. → Локальный DNS (файл `hosts`). 3. → **Resolver** (обычно сервер провайдера или 8.8.8.8). 4. → **Root server** (отвечает за `.`). 5. → **TLD server** (Top Level Domain): - gTLD: `.com`, `.org`, `.edu` - ccTLD: `.ru`, `.ua`, `.by`, `.us` 6. → **Authoritative nameserver** — знает конкретный IP. **Виды запросов:** 1. **Recursive** — запрос IP по домену (resolver сам обходит всю цепочку). 2. **Iterative** — запрос IP или следующего сервера. 3. **Inverse** — запрос домена по IP. --- ### Localhost и порты **localhost** — стандартное доменное имя для loopback-адреса `127.0.0.1` (IPv4) или `::1` (IPv6). Означает "этот же компьютер". **Стандартные порты:** | Протокол | Порт | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- | | HTTP | 80 | | HTTPS | 443 | | FTP | 21 | | SSH | 22 | | DNS | 53 | | SMTP | 25 | --- ### HTTP / HTTPS / HTTP/3 **HTTP (HyperText Transfer Protocol)** — протокол прикладного уровня (L7) для передачи данных в вебе. **Структура HTTP-запроса:** ``` METHOD /path HTTP/1.1 Host: example.com Content-Type: application/json [тело запроса] ``` **Основные методы:** | Метод | Назначение | | ------ | -------------------------- | | GET | Получить ресурс | | POST | Создать / отправить данные | | PUT | Заменить ресурс целиком | | PATCH | Частично обновить | | DELETE | Удалить | **Структура HTTP-ответа:** ``` HTTP/1.1 200 OK Content-Type: text/html [тело ответа] ``` **Коды ответов:** | Диапазон | Смысл | Примеры | | -------- | --------------- | --------------------------------------------------------------- | | 1xx | Информационные | 100 Continue | | 2xx | Успех | 200 OK, 201 Created, 204 No Content | | 3xx | Перенаправление | 301 Moved Permanently, 302 Found | | 4xx | Ошибка клиента | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found | | 5xx | Ошибка сервера | 500 Internal Server Error, 503 Service Unavailable | **HTTPS** — HTTP поверх TLS/SSL. Шифрует передачу данных; порт 443. Сертификат подтверждает подлинность сервера. **HTTP/2:** мультиплексирование запросов в одном TCP-соединении, сжатие заголовков, server push. **HTTP/3:** работает поверх QUIC (UDP вместо TCP), встроенное шифрование TLS 1.3, устраняет проблему блокировки заголовка (head-of-line blocking). --- ### URI, URL, URN - **URI (Uniform Resource Identifier)** — общее понятие; любой идентификатор ресурса. - **URL (Uniform Resource Locator)** — URI с указанием местонахождения и протокола доступа. - **URN (Uniform Resource Name)** — URI без указания местонахождения; постоянное имя. ``` URL: https://example.com:8080/path/page?q=test#section схема хост порт путь запрос якорь URN: urn:isbn:978-5-17-084585-3 ``` URL ⊆ URI; URN ⊆ URI. --- ### Идентификация, аутентификация, авторизация - **Идентификация** — присвоение субъектам уникальных идентификаторов (логин, email). - **Аутентификация** — проверка подлинности: "ты действительно тот, кем представляешься?" (пароль, токен, биометрия). - **Авторизация** — проверка прав: "что тебе разрешено делать?" (роли, разрешения). **Модель CIA:** - **Конфиденциальность** — данные недоступны неавторизованным. - **Целостность** — данные не искажены. - **Доступность** — система доступна легитимным пользователям. **Принципы защиты:** - Простота (меньше поверхность атаки). - Безопасные настройки по умолчанию (запрещено, если не разрешено явно). - Минимизация полномочий. - Разделение ответственности. **Уязвимость → Угроза → Атака:** - **Уязвимость** — слабое место (ошибка в коде, слабый пароль, неверные права). - **Угроза** — потенциальное нарушение безопасности. - **Атака** — реализованная угроза. --- ### OAuth 2.0 **OAuth 2.0** — протокол авторизации, позволяющий приложению получить ограниченный доступ к ресурсам пользователя на другом сервисе без передачи пароля. **Роли:** - **Resource Owner** — пользователь, владелец данных. - **Client** — приложение, запрашивающее доступ. - **Authorization Server** — выдаёт токены (например, Google, GitHub). - **Resource Server** — хранит защищённые данные. **Базовый flow (Authorization Code):** 1. Client перенаправляет пользователя на Authorization Server. 2. Пользователь даёт согласие. 3. Authorization Server возвращает **code** на redirect_uri клиента. 4. Client обменивает code на **access_token** (и **refresh_token**). 5. Client обращается к Resource Server с access_token. **Access token** — краткосрочный, используется для запросов. **Refresh token** — долгосрочный, используется для получения нового access_token. --- ## Блок 2–3. HTML **HTML (Hypertext Markup Language)** — язык разметки для структурирования веб-страниц. ### Структура документа ```html
`, `