Skip to content

Commit

Permalink
update info for hosting guide and fix logical mistakes (#555)
Browse files Browse the repository at this point in the history
  • Loading branch information
Psixodelik committed Dec 5, 2022
1 parent 22573a5 commit a9deb48
Showing 1 changed file with 25 additions and 12 deletions.
37 changes: 25 additions & 12 deletions data/posts/ru/2021-01-18-hosting.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,37 @@ image: "/assets/images/hosting/servers.png"
author: Кирилл Мокевнин
---

## Доменное имя (домен)
Каждый день мы гуляем по десяткам сайтов: работаем, читаем новости, смотрим видео и слушаем музыку. Эти действия настолько автоматизированны, что нет потребности понимать, где находятся сайты и почему переход по адресу ru.hexlet.io откроет именно сайт Хекслета, а не музыкальный сервис или новостной портал про котиков.

Когда интернет только зарождался, у сайтов не было доменных имён. Для обращения к сайту использовались прямые IP-адреса машин (серверов), например, 10.132.234.4 (вместо понятного hexlet.io). Довольно быстро стало понятно, что это слишком сложно для запоминания. К тому же адреса могли меняться. Нужно было что-то вроде записной книжки для адресов.
В этом гайде разберем:

<Banner name="intensive-devops" />
* Как появились домены
* Кто такие хостеры и где лежит сайт в интернете
* Какие виды хостингов используются

## Доменное имя (домен)

Первым решением стал специальный файл *hosts*, расположенный на каждой машине, с которой происходил доступ к сайтам. Он содержит сопоставление между IP-адресом и именем, удобным для запоминания. Этот файл существует до сих пор и часто используется программистами во время разработки. Формат файла:
Еще до появления современного интернета, для передачи информации между компьютерами, использовались числовые адреса. Сейчас они называются IP-адреса, сокращенно от Internet Protocol address. Чтобы передать информацию, нужно было знать этот адрес, например 10.210.107.23. Это похоже на телефонный номер и было удобным решением. Но количество компьютеров росло и запомнить все адреса было почти невозможно.

Первым решением стал специальный файл *hosts*. Он находился на каждом компьютере в сети и позволял дать компьютерам имена. Адрес компьютера и его имя связывались, а значит передавать информацию можно по имени, например Alex-PC вместо 10.210.107.23. Этот файл существует до сих пор и часто используется программистами во время разработки. Формат файла:

```text
# Формат файла: <ip-адрес> <имена сайта>
# Формат файла: <ip-адрес> <имя компьютера>
34.117.253.138 hexlet.io
172.10.11.200 facebook.com m.facebook.com
10.210.107.23 Alex-PC
```

Когда происходит запрос по адресу, например, hexlet.io, то сначала проверяется файл *hosts*, и если домен найден (как в примере выше), то браузер устанавливает соединение с сервером. В нашем примере он пойдёт по адресу `34.117.253.138`.
<Banner name="intensive-devops" />

Со временем и такой способ стал неудобен: файл нужно было обновлять вручную или самостоятельно скачивать с компьютера, у которого был актуальный список адресов. Требовался автоматизированный способ связывания адреса и имени. Для решения этих проблем создали Domain Name System (DNS). Эта система научилась автоматически связывать адреса с именами, сняв головную боль с пользователей компьютеров.

![Как работает DNS](/assets/images/hosting/dns.png)

DNS используется и сейчас, позволяя связывать имя сайта, которое называется *домен*, с IP-адресом компьютера на котором сайт и расположен. Другими словами, любой сервис может обратиться к DNS и спросить «какой IP-адрес у домена hexlet.io?».

### Как компьютер находит адрес

Когда происходит запрос по адресу, например, hexlet.io, то сначала проверяется файл *hosts*, и если домен найден, то браузер устанавливает соединение с сервером. В нашем примере он пойдёт по адресу `34.117.253.138`.

```shell
# Пример обращения к DNS с помощью утилиты host
Expand All @@ -33,13 +49,10 @@ hexlet.io mail is handled by 5 alt1.aspmx.l.google.com.
hexlet.io mail is handled by 5 alt2.aspmx.l.google.com.
```

Такой подход оказался очень неэффективен. В каждой подсети использовался собственный файл hosts, который рассылался на все компьютеры, входящие в подсеть. Кроме того, если появляется новый сайт, то всех нужно оповестить. Да и самих сайтов становилось слишком много. Для решения этих проблем создали Domain Name System (DNS). Основное предназначение этой системы заключается в сопоставлении имени домена конкретному IP-адресу, на котором находится сайт. Другими словами, любой сервис может обратиться к DNS и спросить «какой IP-адрес у домена hexlet.io?».

![Как работает DNS](/assets/images/hosting/dns.png)
Если такой адрес в файле hosts не найден, то будет передан запрос к службе DNS, которая, в качестве ответа, вернет адрес компьютера с сайтом.

Важно понимать, что DNS — это именно служба, а не конкретный сервер. Так как весь интернет зависит от стабильности работы этой системы, то в неё входит множество серверов по всему миру. Кроме того, DNS устроена таким образом, что нет центральной организации, управляющей этими серверами. Подробнее о DNS прочитайте в [нашем гайде](https://guides.hexlet.io/dns/).


## Хостинг

Интернет — это глобальная сеть, объединяющая огромное число устройств. К устройствам относятся далеко не только стационарные компьютеры и ноутбуки, но также и мобильные устройства, камеры, различные электронные и бытовые приборы. Хотя все эти устройства совершенно разные, они без проблем общаются друг с другом с помощью единого языка. Таким языком в мире машин стал стек протоколов [TCP/IP](https://ru.wikipedia.org/wiki/TCP/IP). Не вдаваясь в детали, скажем, что протокол — это правила, по которым происходит общение. При этом природа общающихся устройств не важна.
Expand Down Expand Up @@ -81,4 +94,4 @@ hexlet.io mail is handled by 5 alt2.aspmx.l.google.com.

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

А получить все необходимые навыки программирования и работы с веб-приложениями можно с нашими наставниками в одной из профессий: https://ru.hexlet.io/professions
А получить все необходимые навыки программирования и работы с веб-приложениями можно с нашими наставниками в одной из профессий: https://ru.hexlet.io/professions

1 comment on commit a9deb48

@vercel
Copy link

@vercel vercel bot commented on a9deb48 Dec 5, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

hexletguides – ./

hexletguides-git-main-hexlet.vercel.app
hexletguides-hexlet.vercel.app
guides.hexlet.io

Please sign in to comment.