Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете
Ключевые аспекты веб-разработки на PHP

HTTP

Популярный вопрос на собеседовании веб-разработчиков часто звучит так: «Что происходит после того, как в браузер ввели адрес сайта?». Подробный ответ на этот вопрос можно найти здесь. Главное, что хочет услышать собеседующий — ваш уровень понимания http. У нас посвящён отдельный курс изучению протокола http.

Для начала пару слов о том, что такое протокол. Протокол — это набор соглашений, правил, по которым разные программы могут обмениваться информацией. http — это набор правил, который известен и вашему компьютеру и физически отдалённому компьютеру. С помощью него общаются браузер и веб-сервер.

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

Пример http-сессии (запрос-ответ) через программу curl:

$ curl --head -v code-basics.ru
* Rebuilt URL to: code-basics.ru/
*   Trying 35.157.19.194...
* TCP_NODELAY set
* Connected to code-basics.ru (35.157.19.194) port 80 (#0)
> GET / HTTP/1.1
> Host: code-basics.ru
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 07 Jan 2018 14:19:00 GMT
< Content-Type: text/html; charset=utf-8
< Content-Length: 5123
< Connection: keep-alive
< server: Cowboy
< cache-control: max-age=0, private, must-revalidate
<
* Connection #0 to host code-basics.ru left intact

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.

Как учить

Тема сетей достаточно подробно раскрыта в книгах по операционным системам. В списке рекомендуемых книг Хекслета есть как минимум одна такая.


Дополнительные материалы

  1. DNS

<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».