«Сетевые протоколы для веб разработчика — выжимаем...

Preview:

DESCRIPTION

Автор: Александр Сербул, руководитель направления контроля качества и внедрений компании "1С-Битрикс". Pасскажет об эффективной работе с сетевыми технологиями (tcp/ip, dns, tls, spdy, websockets, long polling, http 2.0) при разработке

Citation preview

Сетевые протоколы для веб-разработчика - выжимаем максимум

Александр Сербул

руководитель направленияконтроля качества интеграции и внедрений 1С-Битрикс

Автомат Калашникова

• Понятный

• Надежный

• Стреляет пулями

• Всегда с тобой

Цена абстракции

Цена абстракции

Генеалогия...

Реинкарнации богов...

Ken Thompson (sitting) and

Dennis Ritchie at PDP-11

СтандартыRFC (Request for Comments) - «рабочее

предложение», «тема для обсуждения»

Internet Society (ISOC) — общество Интернета

Internet Engineering Task Force (IETF) —

Инженерный совет Интернета

World Wide Web Consortium (W3C) —

Консорциум Всемирной Паутины

TCP/IP, SCTP ...

Структура пакетов, tcpdump

Системные API

«Занимательные» стеки

Полезные книжечки, боевые проекты

Должно быть просто и удобно! :-)

Скорость света =

• ~300 000 км/сек в вакууме

• IP пакетам нужно время

Справа – Альберт Энштейн в детстве

Средняя скорость соединения

• Akamai, 2013 Q4

Последняя миля … портит всё

• Сосед играет в WOT

• Масштабные скачивания

• Wi-Fi

• 3-4G

Нередко +сотни миллисекунд.

Мониторинг: js->php->pinba->графики, тесты

3. W3C Navigation Timing API

TCP

• Соединение – 1 RTT

• Новые ядра

• Congestion window size (cwnd):

Linux 2.6.39+

ip route change … initcwnd 10 (4->10)

sysctl -w net.ipv4.tcp_slow_start_after_idle=0

TCP – «раскачка»

TCP – bandwidth-delay product, HOL

• «Простаиваемые мощности»

TCP – head of line blocking (HOL)

• Паровозик, ждем первый вагон

А тут на тебе: QUIC

• Quick UDP Internet Connections, Google

• Multiplexing/UDP

• Нет 3-way TCP handshake

Страшно ☺

Firewalls, NATS…

Может лучше SCTP?

• Stream Control Transmission Protocol

• Multihoming, message oriented,

multiplexing

• Уже задействован в WebRTC

DataChannel->SCTP/DTLS/UDP

• Текущая инфраструктура…

HTTP

• 1.1 – постоянные tcp

соединения!

• Сжатие трафика – nginx/

apache

• Проблемы TCP

• Пулы соединений браузеров

HTTP 2.0, SPDY

• Оптимизация передачи

заголовков

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

• Server Push

• TLS всех спасет ☺

TLS

• Transport Layer Security

• Очень «умные» прокси

• Туннель для SPDY/HTTP 2.0

• Туннель для WebSockets

• Ах да, безопасность

TLS - оптимизация

• nginx – TLS-сессии по-

умолчанию отключены

• Цепочки сертификатов,

валидация

• Динамический прокси,

ранняя терминация

• WireShark, tcpdump

Чеклист

• Помним о скорости света и latency

• Помним о высокой стоимости tcp, tls соединений

• HTTP 1.1 keepalive

• Стоим ближе к клиенту

• CDN

• «Обратный» CDN – POST, PUT, HTTP 1.1 keepalive …

• Религия = опиум для народа. Все проверяем:

WireShark, tcpdump

Программирование - ошибки

• HTTP 1.0 – открытие соединения каждый раз

• Последовательный перебор соединений в

цикле

• select/pool – почти || работа с сетью

• Изучайте протоколы, в конце концов!

• Аудит кода

На закуску• XHR

• Long Polling

• SSE

• Web Sockets

• Web RTC

• Беспроводные сети

Сначала думаем, потом кодим…

XHR, aka AJAX• XML HTTP Request, “Asynchronous Javascript and XML”

• А при чем тут XML? ;-)

• Высокоуровневое API

• CORS (Cross-Origin Resource Sharing)

• + сжатие, авторизация, кэширование

• - streaming

• - multiplexing

• - в одну сторону

• Long-Polling – просто, надежно, … дорого

SSE

• Server-Sent Events

• Простой протокол

• UTF-8, Base64 (+33% size)

• +streaming

• +compression

• -в одну сторону

• -Internet Explorer

• -firewals, прокси…

WebSockets

• duplex, сервер может сам инициировать запрос

• message oriented

• text UTF-8, binary

• - держит 1 TCP соединение

• - нет сжатия, делать самим

• - HOL (head of line blocking)

• - multiplexing

• - не понимают прокси (TLS поможет)

Сравним

Должно быть просто и удобно! :-)

WebRTC

• Real-time Communication Between Browsers

• WebRTC – это «ад», но он отлично работает!

WebRTC - возможности

• Audio/Video связь между браузерами

• Групповые конференции (небольшие)

• Передача данных - Data Channel

• Multiplexing

• Новейшие кодеки, отличное качество

• Безопасность

WebRTC - особенности

• Инфраструктура:

- STUN сервер

- TURN сервер

• Proxy, firewalls – UDP

• Relays ~10%

• ~ 1-2 Mbps на канал (HD)

• Тестирование соединения

• UDP/DTLS/SCTP

Беспроводные сети – технологии

Беспроводные сети – скорости

Беспроводные сети - особенности

• Аккумулятор разряжается!

• RRC (Radio Resource Controller)

WiFi: 30-200 mW

3G/4G: 15 mW, 1000 – 3500 mW!

• «Ходим» в сеть – по крайней необходимости

Чеклист

• Знайте особенности сетевых протоколов

• Постоянно учитесь и тренируйте мозги себе

• … и разработчикам

• Исследуйте потоки данных, полюбите

точность и математику

• Измеряйте (tcpdump, WireShark)

• Питайтесь правильно ☺

Спасибо за внимание! Вопросы?

Александр Сербулserbul@1c-bitrix.ru@AlexSerbul

Recommended