Ключевые аспекты веб-разработки на PHP
Теория: HTTP
Популярный вопрос на собеседовании веб-разработчиков часто звучит так: «Что происходит после того, как в браузер ввели адрес сайта?». Подробный ответ на этот вопрос можно найти здесь. Главное, что хочет услышать собеседующий — ваш уровень понимания http. У нас посвящен отдельный курс изучению протокола http.
Для начала пару слов о том, что такое протокол. Протокол — это набор соглашений, правил, по которым разные программы могут обмениваться информацией. http — это набор правил, который известен и вашему компьютеру и физически отдаленному компьютеру. С помощью него общаются браузер и веб-сервер.
Веб-сервер — программа, установленная на сервере и обслуживающая входящие соединения, например, от браузеров. В рамках такого соединения от браузера передается информация о том, какую страницу и какого сайта мы хотим загрузить, а веб-сервер, в свою очередь, возвращает браузеру содержимое страницы этого сайта.
Пример http-сессии (запрос-ответ) через программу curl:
http нужно не просто знать, но и уметь делать сырые http-запросы, то есть не косвенно через браузер, но и самостоятельно, эмулируя поведение браузера. Для этой задачи используют программу telnet. На Хекслете есть соответствующий курс, и там мы всему научимся.
Для чего требуется знание http?
- Работа с формами, загрузка файлов, перенаправления.
- Аутентификация целиком зависит от http.
- Извлечение информации о запросе (например, определение браузера, из которого был выполнен запрос).
- Увеличение производительности. Кеширование.
- Обеспечение безопасности. http — текстовый протокол без шифрования, он не безопасен.
https
Кроме http, в сети все большее распространение получает https. Каждый пользователь сети должен знать, что нельзя выполнять действия, связанные с любыми секретными данными (например кредитками), на страницах, работающих по протоколу http. В таком случае любой человек, имеющий доступ к оборудованию, которое лежит между вами и сервером, обслуживающим сайт, сможет прочитать эти данные. Обратите внимание, что на популярных сайтах страницы оплаты всегда отдаются по https. В свою очередь, умение работать с https сразу добавляет новые понятия:
- Шифрование, асимметричное шифрование
- Сертификаты
- Цифровая подпись
TCP/IP
Но одним http обойтись не получится. Вспомните, как запускался сервер в предыдущем уроке: php -S localhost:5555. Число 5555 обозначает порт, на котором запустится веб-сервер. Подозреваю, что предыдущее предложение прозвучало для вас совершенно непонятно. Дело в том, что http существует не сам по себе, а поверх стека протоколов TCP/IP. Базовое знание сетей важно по следующим причинам:
- Безопасность. Очень легко совершить ошибку и быть взломанным.
- Отладка. Немалая часть вопросов запуска и конфигурирования сайтов и их частей (в том числе базы данных) связана с сетевыми сокетами. Не зная сети вы будете останавливаться на любой простейшей проблеме без понимания, что вообще делать.
DNS
Еще один столп веба — DNS, служба доменных имен. Каждый раз, когда мы вбиваем адрес в браузер, он выполняет DNS запросы к соответствующим серверам для выяснения того, какой ip-адрес принадлежит сайту. Дело в том, что соединение с сервером идет по tcp/ip, а не по http. http начинает работать уже после того, как было установлено tcp соединение. Знание DNS важно по следующим причинам:
- Зная DNS вы сможете не только купить домен, но и привязать его к вашему серверу
- Почта для домена, верификация вашего проекта различными сервисами — все это работает через возможности DNS
- Опять же, отладка. Нередко проблемы загрузки связаны с DNS.
Как учить
Тема сетей достаточно подробно раскрыта в книгах по операционным системам. В списке рекомендуемых книг Хекслета есть как минимум одна такая.
.png)
