1.1 Принципы работы Интернета

Сеть Интернет представляет собой множество компьютеров, соединенных друг с другом кабелями, а также радиоканалами, спутниковыми каналами и т. д. Однако, как известно, одних проводов или радиоволн для передачи информации недостаточно: передающей и принимающей сторонам необходимо придерживаться ряда соглашений, позволяющих строго регламентировать передачу данных и гарантировать, что эта передача пройдет без искажений. Такой набор правил называется протоколом передачи. Упрощенно, протокол — это набор правил, который позволяет системам, взаимодействующим в рамках сети, обмениваться данными в наиболее удобной для них форме.

Разумеется, для разных целей существуют различные протоколы. К счастью, нам ненужно иметь представление о каждом из них — достаточно знать только тот, который мы будем использовать в Web-программировании. Таковым для нас является протоколTCP (Transmission Control Protocol, протокол управления передачей данных), а точнее, протокол HTTP (Hypertext Transfer Protocol, протокол передачи гипертекста), базирующийся на TCP/IP. Протокол HTTP как раз и задействуется браузерами и Web-серверами.

Любой компьютер, подключенный к Интернету и желающий обмениваться информацией со своими “сородичами”, должен иметь некоторое уникальное имя, или IP-адрес (Интернет протокол). Вот уже 30 лет среднестатистический IP-адрес выглядит примерно так: 127.12.232.56

В любом случае IP-адрес — дефицитный ресурс, получить который не просто. Поэтому в ближайшие годы нас ожидает смена версии протокола с текущей IPv4 на новую IPv6, в которой адрес расширяется с 32 до 128 бит (шестнадцать 8-разрядных чисел). С переходом на IPv6 будет достаточно выделяемых персональных IP-адресов каждому жителю планеты и каждому производимому устройству. В процессе знакомства с Web-программированием вам постоянно будут встречаться IP-адреса в новом IPv6-формате, например: 2a03:f480:1:23::ca

Более того, группы, полностью состоящие из нулей, сжимаются до символа ::. Таким образом, полный IPv6-адрес: 2a03:f480:0001:0023:0000:0000:0000:00ca

И все-таки обычным людям довольно неудобно работать с IP-представлением адреса, особенно с новыми IPv6-адресами. Действительно, куда как проще запомнить символьное имя, чем набор чисел. Чтобы облегчить простым пользователям работу с Интернетом, придумали систему DNS (Domain Name System, служба имен доменов).

Итак, при использовании DNS любой компьютер в Сети может иметь не только IP-адрес, но также и символическое имя. Выглядит оно примерно так: www.example.msu.ru
То есть это набор слов (их число произвольно), опять же разделенных точкой. Каждое такое сочетание слов называется доменом N-го уровня (например, ru — домен первого уровня, msu.ru — второго, example.msu.ru — третьего и т. д.)

Порт записывается после IP-адреса или доменного имени через двоеточие. Например, вместо адреса yandex.ru можно записать http:// dnvk1.info:80 или https://dnvk1.info:443. Порт 80 является стандартным для обмена данными с Web-сервером, порт 443 — стандартным для зашифрованного SSL-соединения. В повседневной жизни при использовании адресов мы не указываем стандартные порты, браузеры и другие сетевые клиенты назначают их автоматически. Однако, если сервер использует какой-то нестандартный порт, например 8080, его придется указывать в адресе явно: http://localhost:8080.

Как только обмен “приветственными” сообщениями закончен (его еще называют “тройным рукопожатием”, потому что в общей сложности посылаются 3 таких сообщения), между Клиентом и Сервером устанавливается логический канал связи. Программы могут использовать его, как обычный канал UNIX (это напоминает случай файла, открытого на чтение и запись одновременно). Иными словами, Клиент может передать данные Серверу, записав их с помощью системной функции в канал, а Сервер — принять их, прочитав из канала.


Хостинг-провайдер (владелец серверов)
  обслуживает и предоставляет клиентам серверы (отдельные машины),
    которые содержат узлы (имеющие отдельные IP-адреса).
      На узле располагаются хосты,
        которые могут быть обычными (имеют отдельный IP-адрес)
        или виртуальными (имеют один IP-адрес, но разные имена),
        и содержат сайты (часть хоста),
          хранящиеся как HTML-документы (файлы),
            иногда доступные как статические страницы,
          а также скрипты (программы, создающие страницы),
            генерирующие динамические страницы.
      На узле также работают службы (процессы на сервере),
        доступные через порт (номер, идентифицирующий процесс на узле).
Провайдер (владелец модемного пула или NAT)
  предоставляет пользователям доступ в Интернет.

Наверное, каждый хоть раз в жизни набирал какой-нибудь “адрес” в браузере. Он называется URL (Universal Resource Locator, универсальный локатор ресурса) и обозначает в действительности нечто большее, нежели чем просто адрес. Для чего же нужен URL? Почему недостаточен лишь один DNS-адрес?

В общем случае URL выглядит примерно так:
http://example.com:80/path/to/document.html
Давайте рассмотрим чуть подробнее каждую логическую часть этого URL.

Протокол
Часть URL, предваряющая имя хоста и завершающаяся двумя косыми чертами (в нашем примере http://), указывает браузеру, какой высокоуровневый протокол нужно использовать для обмена данными с Web-сервером.

Имя хоста
Следом за протоколом идет имя узла, на котором размещается запрашиваемая страница (в нашем примере — example.com). Это может быть не только доменное имя хоста, но и его IP-адрес.

Порт
Сразу за именем хоста через двоеточие может следовать (а может и быть опущен) номер порта. Исторически сложилось, что для протокола HTTP стандартный номер порта — 80.

Путь к странице
Наконец, мы дошли до последней части адресной строки — пути к файлу страницы (в нашем примере это /path/to/document.html). Как уже упоминалось, совершенно не обязательно, чтобы эта страница действительно присутствовала. Вполне типична ситуация, когда страницы создаются “на лету” и не представлены отдельными файлами в файловой системе сервера. Например, сайт новостей может использовать виртуальные пути типа /Y/M/N.html для отображения всех новостей за число N месяца M года Y, так что пользователь, набрав в браузере адрес наподобие http://новостной_сервер/2015/ 10/20.html, сможет прочитать новости за 20 октября 2015 г. При этом файла с именем 20.html физически нет, существует только виртуальный путь к нему, а всю работу по генерации страницы берет на себя программное обеспечение сервера.

В данной главе мы познакомились с основами устройства сети Интернет и протоколами передачи данных, без которых Web-программирование немыслимо. Мы узнали, как машины адресуют друг друга в глобальной сети, как они обмениваются данными, а также рассмотрели важное понятие — URL, с которым нам неоднократно придется сталкиваться в дальнейшем.

Залишити відповідь