Как работает Интернет
Для проходящих курс дома: эта глава рассмотрена в видео How the Internet Works.
Эта глава вдохновлена выступлением «Как работает Интернет» Джессики Маккеллар (http://web.mit.edu/jesstess/www/).
Можем поспорить, что ты пользуешься Интернетом каждый день. Но знаешь ли ты на самом деле, что происходит после ввода адреса, например, https://djangogirls.org, в браузер и нажатия Enter
?
Первое, что тебе нужно понять, это то, что веб-сайт представляет собой просто группу файлов, сохраненных на жёстком диске. Так же, как твои фильмы, музыка или фотографии. Тем не менее, есть одна особенность, которая является уникальной для сайтов: они содержат компьютерный код, называемый HTML.
Если ты не знакома с программированием, то сначала может быть трудно понять HTML, но твой веб-браузер (например, Chrome, Safari, Firefox, и т. д.) обожает его. Веб-браузеры созданы для того, чтобы понимать этот код, следовать его указаниям и представлять файлы, из которых состоит твой веб-сайт, именно так, как ты этого хочешь.
Как и с любым файлом, нам нужно хранить HTML файлы где-то на жёстком диске. Для Интернета мы используем специальные, мощные компьютеры, называемые серверами. У них нет экрана, мыши или клавиатуры, потому что их основной целью является хранение и обслуживание данных. Вот почему они называются серверами — потому что они обслуживают (serve) твои данные.
Хорошо, но ты хочешь знать, как выглядит Интернет, так?
Мы нарисовали тебе картинку! Он выглядит вот так:
Довольно беспорядочно, правда? На самом деле, это сеть связанных машин (упомянутых выше серверов). Сотен тысяч машин! Километры и километры кабелей по всему миру! На веб-сайте с картой подводных кабелей (http://submarinecablemap.com/) ты сможешь увидеть, насколько сложной является сеть. Вот скриншот с сайта:
Поразительно, не так ли? Однако, очевидно, что невозможно соединить друг с другом кабелем все машины, подключенные к Интернету. Таким образом, чтобы достичь нужной машины (например, хранящей https://djangogirls.org), мы должны передать запрос через множество других машин.
Этот процесс выглядит следующим образом:
Представь себе, что когда ты вводишь адрес https://djangogirls.org, то отправляешь письмо, в котором говорится: «Дорогие Django Girls, я хочу увидеть сайт djangogirls.org. Отправьте мне его, пожалуйста!»
Твое письмо отправляется в ближайшее почтовое отделение. Затем оно направляется в другое, которое немного ближе к адресату, а затем в следующее и так далее до его доставки в пункт назначения. Единственное отличие в том, что при отправке множества писем (пакетов данных) по одному адресу каждое из них может пойти через совершенно разные почтовые отделения (маршрутизаторы). Это зависит от того, как они были распределены в каждом отделении.
Да, все так просто. Ты отправляешь сообщения и ждешь ответа. Конечно, вместо бумаги и ручки ты используешь байты данных, но идея та же!
Вместо адресов с названием улицы, города, почтового индекса и названия страны мы используем IP-адреса. Твой компьютер сначала просит DNS (Domain Name System) перевести djangogirls.org в IP-адрес. Это работает примерно как в случае старых телефонных книг, где можно по имени человека, с которым ты хочешь связаться, найти его номер телефона и адрес.
Когда ты отправляешь письмо, оно должно обладать определенными особенностями, чтобы его доставили правильно: адресом, маркой и т.д. Ты также используешь язык, который понимает получатель, верно? То же самое относится к пакетам данных, которые ты отправляешь, чтобы увидеть веб-сайт. Мы используем протокол под названием HTTP (англ. HyperText Transfer Protocol, протокол передачи гипертекста).
Поэтому, в принципе, когда у тебя есть веб-сайт, то необходимо иметь и сервер (машину), где он находится. Когда сервер получает входящий запрос (в письме), он отправляет обратно твой веб-сайт (в другом письме).
Поскольку это руководство по Django, разумно будет спросить — что же он делает в этой системе. Когда ты отправляешь ответ, то ты не всегда хочешь отправлять одно и то же письмо всем получателям. Намного лучше, если твои письма являются персонифицированными, особенно для человека, который только что тебе написал сам, правильно? Django помогает тебе с созданием этих персонализированных, интересных писем :).
Ну, хватит болтать, время заняться делом!