--- status: processing type: concept tags: [] created: 2025-12-17 updated: 2026-06-08 aliases: [] --- ![[Pasted image 20260608084226.png]] # Вопросы по Вебу ## Теория по блокам Опорные заметки: - [[IP-адрес]], [[IPv6]], [[Подсети и маска подсети]], [[NAT]], [[DNS]], [[TCP Vs UDP]] - [[HTTP, HTTPS и HTTP3]], [[Сетевые порты]], [[Веб-аутентификация и авторизация]], [[OAuth 2.0]], [[URI, URL, URN]] - [[Основы HTML (структура, таблицы, формы)]] - [[Основы, селекторы и блочная модель|CSS: Основы и селекторы]], [[Адаптивность, Flexbox и Grid|CSS: Адаптивность, Flexbox и Grid]] - [[Модели и ORM|Django Модели и ORM]], [[Представления, шаблоны и CBV|Django: Представления, шаблоны и CBV]], [[Работа с формами и CUD|Django: Формы и CUD]] ### Блок 1. Общие вопросы **IP-адрес** - адрес узла в сети. IPv4 записывается как `192.168.1.10`, внутри это 32 бита. IPv6 длиннее, 128 бит, например `2001:db8::1`. **Маска подсети** показывает, какая часть IP относится к сети, а какая - к устройству. В `192.168.1.10/24` первые 24 бита - сеть, оставшаяся часть - хост. **Приватные IPv4-адреса** используются внутри локальных сетей: `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`. Они не маршрутизируются напрямую в интернете. **Localhost** - обращение к самому себе. Обычно это `127.0.0.1`. **NAT** переводит внутренний приватный адрес в публичный. Домашний роутер обычно делает PAT: много устройств выходят в интернет через один публичный IP, а различаются по портам. **DNS** превращает доменное имя в IP-адрес. Браузер не ходит на `example.com` как на текст - сначала нужно узнать IP через DNS. **TCP** устанавливает соединение через `SYN`, `SYN-ACK`, `ACK`, следит за доставкой и порядком данных. Поэтому он подходит для HTTP/HTTPS. **HTTP** - протокол запроса и ответа. Клиент отправляет запрос, сервер возвращает ответ. HTTP не хранит состояние сам по себе. **GET** обычно получает данные. **POST** обычно отправляет данные в теле запроса: форму, JSON, файл. **HTTP-ответ** содержит код состояния: - `2xx` - успех; - `3xx` - перенаправление; - `4xx` - ошибка клиента; - `5xx` - ошибка сервера. **HTTPS** - это HTTP поверх TLS. Он шифрует трафик и проверяет сервер через сертификат. HTTP обычно использует порт `80`, HTTPS - `443`. **HTTP/3** использует QUIC поверх UDP. Смысл методов и кодов HTTP не меняется, меняется транспорт. **Идентификация** - пользователь сообщает, кто он. **Аутентификация** - доказывает это. **Авторизация** - система решает, что ему можно. **OAuth 2.0** позволяет приложению получить ограниченный доступ без передачи пароля пользователя. Это протокол авторизации, не прямой протокол логина. **URI** - общий идентификатор ресурса. **URL** - адрес и способ получить ресурс. **URN** - устойчивое имя без обязательного адреса. ### Блок 2. HTML HTML описывает структуру страницы. Минимальная структура: ```html Страница Контент ``` `` содержит служебные данные: `meta`, `title`, `link`, `script`. Видимый контент находится в ``. HTML-комментарий: ```html ``` **Нормальный поток** - стандартная раскладка без flex/grid/position. Блочные элементы идут сверху вниз, строчные - внутри строки. **Блочные элементы**: `
`, `

`, `

`, `
`, `
`. Обычно занимают всю строку. **Строчные элементы**: ``, ``, ``, ``, ``. Идут внутри текста. **Семантические теги** помогают показать смысл: `
`, `