Ключевые аспекты веб-разработки на Python
Теория: Протокол HTTP
Популярный вопрос на собеседовании веб-разработчиков часто звучит так: «Что происходит после того, как в браузер ввели адрес сайта?». Подробный ответ на этот вопрос можно найти на GitHub. Главное, что хочет услышать собеседующий — ваш уровень понимания HTTP. В этом уроке мы разберем подробнее именно эту тему.
Что такое HTTP
Чтобы лучше понять этот термин, вспомним что такое протокол — это набор соглашений или правил, по которым разные программы могут обмениваться информацией.
Один из самых распространенных протоколов в вебе — это HTTP (Hyper-Text Transferring Protocol). Это набор правил, который известен и вашему компьютеру, и физически отдаленному компьютеру. С помощью него браузер и веб-сервер общаются между собой.
Вы уже знаете, что такое веб-сервер — это программа, установленная на сервере и обслуживающая входящие соединения. Веб-сервер работает в два этапа:
- Сначала сервер получает от браузера информацию о том, какую страницу какого сайта мы хотим загрузить
- Затем сервер возвращает браузеру содержимое страницы этого сайта
Этот цикл «запрос-ответ» называется HTTP-сессией. Через программу curl посмотрим, как она выглядит:
Технологию HTTP нужно не просто знать. Важно еще и уметь делать сырые HTTP-запросы — не косвенно через браузер, а самостоятельно, эмулируя поведение браузера. Для этой задачи используют программу telnet. На Хекслете есть курс на эту тему — там вы всему и научитесь.
Зачем используется HTTP
Протокол HTTP применяется для множества различных задач:
- В работе с формами, при загрузке файлов и при перенаправлении
- Для аутентификации, ведь она целиком зависит от HTTP
- Для извлечения информации о запросе — например, можно определить, из какого браузера был выполнен запрос
- Для увеличения производительности и кеширования
Протокол HTTPS
Помимо HTTP, в сети большое распространение получил более безопасный протокол HTTPS. Если страница работает по протоколу HTTP, на ней не стоит выполнять действия, связанные с любыми секретными данными — например, кредитками. В таком случае ваши данные сможет прочитать любой человек, который обслуживает сайт или имеет доступ к оборудованию между вами и сервером.
Обратите внимание, что на популярных сайтах страницы оплаты всегда отдаются по HTTPS. В свою очередь, умение работать с HTTPS сразу добавляет новые понятия:
- Шифрование, асимметричное шифрование
- Сертификаты
- Цифровая подпись
TCP/IP
Только протоколами HTTP и HTTPS обойтись не получится. Дело в том, что HTTP существует не сам по себе, а поверх стека протоколов TCP/IP. Базовое знание сетей важно по следующим причинам:
- Для безопасности. Без базовых знаний легко совершить ошибку и быть взломанным
- Для отладки. Даже с малейшими проблемами в работе сайтов сложно справиться без базовых знаний о сетях. Так происходит потому, что немалая часть вопросов запуска и конфигурирования сайтов связана с сетевыми сокетами
DNS
Еще один столп веба — служба доменных имен (DNS).
Представьте, что мы вбиваем адрес в браузер. В этот момент браузер выполняет DNS-запросы к соответствующим серверам и пытается выяснить, к какому IP-адресу принадлежит сайт. Дело в том, что соединение с сервером идет по TCP/IP, а не по HTTP. Протокол HTTP начинает работать уже после того, как было установлено TCP-соединение.
Знание DNS поможет:
- Привязать домен к серверу
- Настраивать почту для домена
- Верифицировать проект различными сервисами
- Быстрее и эффективнее проводить отладку, ведь нередко проблемы загрузки связаны с DNS
Как учить
Тема сетей достаточно подробно раскрыта в книгах по операционным системам. В списке рекомендуемых книг Хекслета есть как минимум один источник на эту тему.


