Что происходит в браузере, после того, как мы ввели адрес в адресную строку

Екатерина Танькова, Яндекс

Что происходит в браузере, после того, как мы ввели адрес в адресную строку

Екатерина Танькова, разработчик интерфейсов

Почему это важно?

Мне задали этот вопрос на 5 из 20 собеседований

address
address
address
address
address
address
address
address
address
address
address
address
address
address
address
address
address

Какие бывают протоколы

IP — Internet Protocol

TCP/IP — Transmission Control Protocol/Internet Protocol

UDP — User Datagram Protocol

FTP — File Transfer Protocol

DNS - Domain Name System

HTTP — HyperText Transfer Protocol

NTP — Network Time Protocol

SSH — Secure SHell

Браузер поддерживат протоколы:

http и https - протоколы клиент-серверного взаимодействия

file - с помощью этого протокола можно открыть файл с локального комп

ftp - протокол передачи файлов по сети

По умолчанию браузер использует https

HTTP + TLS = HTTPS

TLS (Transport Layer Security)

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

address
address
address
address
address
address

Процесс получения IP адреса называется DNS lookup

dns
dns
dns
dns
dns
dns
dns
dns
dns
dns
dns

Сокет — это комбинация IP адреса и номера порта

TCP

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

dns

TCP/IP Открытие сокета

Из url протокол TCP берет данные об используемом порте (80 порт для HTTP, 443 для HTTPS) и осуществляет вызов функции socket системной библиотеки для подключения к серверу.

Трехстороннее рукопожатие

handshake
handshake
handshake
handshake
handshake
handshake
handshake
handshake
handshake
handshake
handshake

HTTP Request

handshake

REST

GET

DELETE

POST

PUT

handshake
GET

HTTP Response

handshake
GET

Коды ответа HTTP

Информационные 100 - 199 ☝️

Успешные 200 - 299 👍

Перенаправления 300 - 399 👉

Клиентские ошибки 400 - 499 👎

Серверные ошибки 500 - 599 🤷‍♀️

packages
packages
packages
packages
packages
packages
packages
packages
GET
GET
GET
GET

DOM (Document Object Model)

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

Парсинг HTML

html

Парсинг HTML

html

Парсинг HTML

html

Парсинг HTML

html

Синтаксический анализ

- это преобразование документа в пригодную для чтения структура

Синтаксический анализ

состоит из двух этапов:

Токенизация

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

GET

Построение DOM дерева

Токены собираются в узлы (nodes). Эти узлы и сохраняются в DOM со всеми взаимными связями.

GET

Пример построения DOM

html

document

loading — документ только начал формироваться

interactive — браузер полностью загрузил HTML, было построено DOM-дерево (событие DOMContentLoaded)

complete — браузер загрузил HTML и внешние ресурсы (событие load)

Внешние ресурсы

html

Внешние ресурсы

html

Внешние ресурсы

html

Мы можем управлять порядком загрузки скриптов

js priority
js priority js priority js priority

defer

- не блокировать парсинг и отрисовку страницы
- выполнить, когда документ обработан, но перед событием DOMContentLoaded

async

- не блокировать парсинг и отрисовку страницы
- не ждать готовности документа

Парсинг js

address

Parsing CSS

html

Parsing CSS

Результат парсинга CSS-кода — CSSOM

CSSOM

Каждый CSS-файл разбирается в объект StyleSheet, каждый из таких объектов содержит правила CSS с селекторами и объектами в соответствии с грамматикой CSS.

Специфичность CSS

Вес селекторов

1. !important

2. style=""

3. #id

4. .class, [attribute], :pseudoclass

5. tag, ::pseudoelement

Специфичность CSS

css tree

Система расчёта

css-calc
css-calc
css-calc
css-calc
css-calc
css-calc
css-calc
css-calc
css-calc
css-calc

Дерево рендеринга

Cопоставление узлов из DOM и узлов CSSOM

css-calc
tree tree tree tree

Этап компоновки (layout)

Вычисление точного положения узлов в области просмотра устройства — внутри окна браузера — и их размер.

css-calc

Этап раскрашивания (paint)

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

css-calc

Композитинг

address

Композитинг

Композитинг – техника разделения частей страницы на слои, раскрашивания их по отдельности и компоновки в виде страницы в отдельном потоке – композ-потоке.

css-calc
css-calc
css-calc

Все по пунктам

1. Поисковой запрос

2. DNS lookup - поиск IP адреса по доменному имени

3. Подключение к серверу с помощью TCP

4. GET запрос

5. Парсинг HTML и CSS, получение внешних ресурсов

6. Отрисовка странички в несколько этапов: rendering tree,
layout, paint, composite

Зачем мне все это?

Конец

Материалы

habr / Как работают браузеры doka / На чём стоят три слона, на которых держится веб? developer.mozilla.org learn.javascript.ru htmlacademy / Что происходит в браузере WWW-аппликация / Никита Дубко

Спасибо за внимание!

Екатерина Танькова

Разработчик интерфейсов

✉️ eitnkv@yandex-team.ru

TankovaE

css-calc