Как работают веб-серверы

Carder

Professional
Messages
2,619
Reaction score
1,879
Points
113
веб сервер

Веб-серверы позволяют вам выходить в Интернет.
Вы когда-нибудь задумывались о механизмах, которые доставили вам эту страницу? Скорее всего, вы сейчас сидите за компьютером и просматриваете эту страницу в браузере. Итак, когда вы щелкнули ссылку для этой страницы или ввели ее URL-адрес (единый указатель ресурсов), что произошло за кулисами, чтобы вывести эту страницу на свой экран?

Если вам когда-либо было интересно узнать об этом процессе или когда-либо хотелось узнать о некоторых конкретных механизмах, которые позволяют вам выходить в Интернет, то читайте дальше. В этой статье вы узнаете, как веб-серверы переносят страницы в ваш дом, школу или офис. Давайте начнем!

Основной процесс​

webserver-basic-sm.gif

Предположим, вы сидите за своим компьютером, просматриваете Интернет, и вам звонит друг, который говорит: «Я только что прочитал отличную статью! Введите этот URL-адрес и проверьте его. Он находится по адресу https://www.carder.market". Итак, вы вводите этот URL-адрес в свой браузер и нажимаете клавишу возврата. И волшебным образом, независимо от того, где находится этот URL-адрес, страница появляется на вашем экране.
На самом базовом возможном уровне следующая диаграмма показывает шаги, которые привели эту страницу на ваш экран.
Ваш браузер установил соединение с веб-сервером, запросил страницу и получил ее.
Дальше мы копнем немного глубже.

За кулисами​

Если вы хотите подробнее рассказать о процессе вывода веб-страницы на экран вашего компьютера, вот основные шаги, которые происходили за кулисами:
Браузер разбил URL-адрес на три части:
  • Протокол ("https")
  • Имя сервера («www.carder.market»)
  • Имя файла ("index.php")
Браузер связался с сервером имен, чтобы преобразовать имя сервера «www.carder.market» в IP-адрес, который он использует для подключения к серверу. Затем браузер установил соединение с сервером по этому IP-адресу через порт 80 (порты мы обсудим позже в этой статье).
Следуя протоколу HTTP, браузер отправил на сервер запрос GET, запрашивая файл «https://www.carder.market». (Обратите внимание, что файлы cookie могут быть отправлены из браузера на сервер с запросом GET - подробности см. В теме Как работают файлы cookie в Интернете .)
Затем сервер отправил текст HTML для веб-страницы в браузер. (Файлы cookie также могут отправляться с сервера в браузер в заголовке страницы.) Браузер считывает теги HTML и форматирует страницу на вашем экране.
Если вы никогда раньше не исследовали этот процесс, это много нового словаря. Чтобы подробно разобраться в этом процессе, вам нужно узнать об IP-адресах, портах, протоколах ... Дальше для вас через полное объяснение.

Интернет​

webserver-backbone-sm.gif

Так что же такое «Интернет»? Интернет - это гигантское собрание миллионов компьютеров, объединенных в компьютерную сеть . Сеть позволяет всем компьютерам общаться друг с другом. Домашний компьютер может быть подключен к Интернету с помощью модема телефонной линии, DSL или кабельного модема, который обращается к поставщику Интернет-услуг (ISP). Компьютер в офисе или университете обычно имеет сетевую карту (NIC), которая напрямую подключает его к локальной сети (LAN) внутри компании. Затем предприятие может подключить свою локальную сеть к провайдеру с помощью высокоскоростной телефонной линии, например линии T1. А линия T1 может обрабатывать примерно 1,5 миллиона бит в секунду, в то время как обычная телефонная линия с использованием модема обычно может обрабатывать от 30 000 до 50 000 бит в секунду.
Затем интернет-провайдеры подключаются к более крупным интернет-провайдерам, а крупнейшие интернет-провайдеры поддерживают волоконно-оптические «магистрали» для всей страны или региона. Магистральные сети по всему миру связаны с помощью оптоволоконных линий, подводных кабелей или спутниковых каналов (некоторые интересные карты магистральных сетей см. В Атласе киберпространств). Таким образом, каждый компьютер в Интернете подключен ко всем остальным компьютерам в Интернете.

Клиенты и серверы​

В общем, все машины в Интернете можно разделить на два типа: серверы и клиенты. Те машины, которые предоставляют услуги (например, веб-серверы или FTP-серверы) другим машинам, являются серверами. И машины, которые используются для подключения к этим службам, являются клиентами. При подключении к Yahoo! на www.yahoo.com, чтобы прочитать страницу, Yahoo! предоставляет машину (вероятно, кластер очень больших машин) для использования в Интернете для обслуживания вашего запроса. Yahoo! предоставляет сервер. С другой стороны, ваша машина, вероятно, не предоставляет никаких услуг в Интернете. Следовательно, это пользовательский компьютер, также известный как клиент. Машина может быть и сервером, и клиентом, но для наших целей вы можете рассматривать большинство машин как одну или другую.
Серверная машина может предоставлять одну или несколько услуг в Интернете. Например, на серверном компьютере может быть запущено программное обеспечение, которое позволяет ему действовать как веб-сервер, сервер электронной почты и FTP- сервер. Клиенты, которые приходят на серверную машину, делают это с определенным намерением, поэтому клиенты направляют свои запросы на конкретный программный сервер, работающий на общей серверной машине. Например, если на вашем компьютере запущен веб-браузер, он, скорее всего, захочет поговорить с веб-сервером на сервере. Ваше приложение Telnet будет взаимодействовать с сервером Telnet, приложение электронной почты будет взаимодействовать с сервером электронной почты и т.д.

IP-адреса​

Чтобы все эти машины были в порядке, каждой машине в Интернете назначается уникальный адрес, называемый IP-адресом. IP означает Интернет-протокол, и эти адреса представляют собой 32-битные числа, обычно выражаемые как четыре «октета» в «десятичном числе с точками». Типичный IP-адрес выглядит так:
216.27.61.137
Четыре числа в IP-адресе называются октетами, потому что они могут иметь значения от 0 до 255, что составляет 2 8 вариантов на октет.
Каждая машина в Интернете имеет уникальный IP-адрес. У сервера есть статический IP-адрес, который не очень часто меняется. Домашний компьютер, который набирает номер через модем, часто имеет IP-адрес, который назначается поставщиком Интернет-услуг при подключении устройства. Этот IP-адрес уникален для данного сеанса - он может быть другим при следующем подключении устройства. Это Таким образом, интернет-провайдеру нужен только один IP-адрес для каждого поддерживаемого модема, а не для каждого клиента.
Если вы работаете на компьютере под управлением Windows, вы можете просмотреть большую часть информации о своем компьютере в Интернете, включая текущий IP-адрес и имя хоста, с помощью команды WINIPCFG.EXE (IPCONFIG.EXE для Windows 2000 / XP). На компьютере UNIX введите в командной строке nslookup вместе с именем компьютера, например www.carder.market, например «nslookup www.carder.market», чтобы отобразить IP-адрес компьютера, и вы можете использовать имя хоста команды, чтобы узнать имя вашего компьютера. (Для получения дополнительной информации об IP-адресах см. IANA)
Что касается компьютеров в Интернете, IP-адрес - это все, что вам нужно для общения с сервером. Например, в браузере вы можете ввести URL-адрес и перейти на компьютер, на котором находится веб-сервер для Carder. На некоторых серверах одного IP-адреса недостаточно, но на большинстве крупных серверов этого достаточно - читайте подробности.

Доменные имена​

Поскольку у большинства людей возникают проблемы с запоминанием числовых последовательностей, составляющих IP-адреса, и поскольку IP-адреса иногда необходимо менять, все серверы в Интернете также имеют удобочитаемые имена, называемые доменными именами. Например, www.carder.market - постоянное, удобочитаемое имя. Большинству из нас легче запомнить www.carder.market, чем 209.116.69.77.
Название www.carder.market состоит из трех частей:
  1. Имя хоста ("www")
  2. Доменное имя ("carder")
  3. Доменное имя верхнего уровня ("uk")
Доменные имена в домене ".uk" управляются регистратором VeriSign. VeriSign также управляет доменными именами ".com". Другие регистраторы (например, RegistryPro, NeuLevel и Public Interest Registry) управляют другими доменами (например, .pro, .biz и .org). VeriSign создает доменные имена верхнего уровня и гарантирует, что все имена в домене верхнего уровня уникальны. VeriSign также поддерживает контактную информацию для каждого сайта и ведет базу данных whois. Имя хоста создается компанией, на которой размещен домен. «www» - очень распространенное имя хоста, но сейчас во многих местах оно либо опускается, либо заменяется другим именем хоста, которое указывает на конкретную область сайта. Например, в encarta.msn.com, доменное имя энциклопедии Microsoft Encarta, в качестве имени хоста используется «encarta» вместо «www».

Серверы имён​

Набор серверов, называемых серверами доменных имен (DNS), сопоставляет удобочитаемые имена с IP-адресами. Эти серверы представляют собой простые базы данных, которые сопоставляют имена с IP-адресами, и они распределены по всему Интернету. Большинство отдельных компаний, интернет-провайдеров и университетов поддерживают небольшие серверы имен для сопоставления имен хостов с IP-адресами. Существуют также центральные серверы имен, которые используют данные, предоставленные VeriSign, для сопоставления доменных имен с IP-адресами.
Если вы введете URL-адрес «https://carder.market» в свой браузер, ваш браузер извлечет имя «www.carder.market», передаст его серверу доменных имен, а домен Сервер имен возвращает правильный IP-адрес для www.carder.market. Для получения правильного IP-адреса может быть задействовано несколько серверов имен. Например, в случае www.carder.market сервер имен для домена верхнего уровня «uk» будет знать IP-адрес сервера имен, который знает имена хостов, и отдельный запрос к этому серверу имен, управляемый Интернет-провайдер Carder может предоставить фактический IP-адрес для серверного компьютера Carder.
На компьютере UNIX вы можете получить доступ к той же службе с помощью команды nslookup. Просто введите в командной строке такое имя, как «www.carder.market», и команда запросит серверы имен и доставит вам соответствующий IP-адрес.
Итак, вот оно: Интернет состоит из миллионов машин, каждая из которых имеет уникальный IP-адрес. Многие из этих машин являются серверами , что означает, что они предоставляют услуги другим машинам в Интернете. Вы слышали о многих из этих серверов: серверах электронной почты, веб-серверах, FTP-серверах, серверах Gopher и серверах Telnet, и это лишь некоторые из них. Все это обеспечивается серверными машинами.

Команда whois
На компьютере UNIX вы можете использовать команду whois для поиска информации о доменном имени. Вы можете сделать то же самое, используя форму whois на VeriSign. Если вы введете доменное имя, например «carder.market», оно вернет вам регистрационную информацию для этого домена, включая его IP-адрес.

Порты​

Любой серверный компьютер делает свои службы доступными в Интернете, используя пронумерованные порты , по одному для каждой службы, доступной на сервере. Например, если на сервере запущены веб-сервер и FTP-сервер, веб-сервер обычно будет доступен на порту 80, а FTP-сервер будет доступен на порту 21. Клиенты подключаются к службе по определенному IP-адресу и на конкретный порт.
Каждая из самых известных служб доступна по известному номеру порта. Вот некоторые общие номера портов:
  • echo 7
  • daytime 13
  • qotd 17 (Цитата дня)
  • ftp 21
  • telnet 23
  • smtp 25 (простой почтовый перевод, то есть электронная почта)
  • time 37
  • nameserver 53
  • nicname 43 (Кто есть)
  • gopher 70
  • finger 79
  • WWW 80
Если серверная машина принимает подключения к порту из внешнего мира, и если брандмауэр не защищает порт, вы можете подключиться к порту из любого места в Интернете и использовать службу. Обратите внимание, что нет ничего, что заставляло бы, например, веб-сервер быть на порту 80. Если бы вы настроили свою собственную машину и загрузили на нее программное обеспечение веб-сервера, вы могли бы поместить веб-сервер на порт 918 или любой другой неиспользуемый порт, если хотите. Затем, если ваша машина была известна как xxx.yyy.com, кто-то в Интернете мог бы подключиться к вашему серверу по URL-адресу . «: 918» явно указывает номер порта и должен быть включен, чтобы кто-то мог связаться с вашим сервером. Если порт не указан, браузер просто предполагает, что сервер использует хорошо известный порт 80.

Протоколы​

После того, как клиент подключился к службе на определенном порту, он обращается к службе, используя определенный протокол. Протокол является предопределенным способом , что кто - то хочет использовать услугу переговоры с этой службой. «Кто-то» может быть человеком, но чаще это компьютерная программа, такая как веб-браузер. Протоколы часто являются текстовыми и просто описывают, как клиент и сервер будут общаться.
Возможно, самый простой протокол - дневной протокол. Если вы подключаетесь к порту 13 на машине, которая поддерживает дневной сервер, сервер отправит вам свое впечатление о текущей дате и времени, а затем закроет соединение. Протокол такой: «Если вы подключитесь ко мне, я пришлю вам дату и время, а затем отключусь». Большинство компьютеров UNIX поддерживают этот сервер. Если вы хотите попробовать, вы можете подключиться к нему с помощью приложения Telnet. В UNIX сеанс будет выглядеть так:
% telnet web67.ntx.net 13 Попытка 216.27.61.137 ... Подключено к web67.ntx.net. escape-символ - '^]'. Вс, 25 октября, 08:34:06 1998 Соединение закрыто внешним хостом.
На компьютере с Windows вы можете получить доступ к этому серверу, набрав «telnet web67.ntx.net 13» в командной строке MSDOS.
В этом примере web67.ntx.net - это UNIX-машина сервера, а 13 - номер порта для дневной службы. Приложение Telnet подключается к порту 13 (telnet, естественно, подключается к порту 23, но вы можете направить его для подключения к любому порту), затем сервер отправляет дату и время и отключается. Большинство версий Telnet позволяют указать номер порта, поэтому вы можете попробовать это, используя любую версию Telnet, доступную на вашем компьютере.
Большинство протоколов более сложны, чем дневные, и указаны в документах Request for Comment (RFC), которые общедоступны (см. http://sunsite.auc.dk/RFC/, где можно найти хороший архив всех RFC). Каждый веб-сервер в Интернете соответствует протоколу HTTP, который прекрасно описан в The Original HTTP, как это было определено в 1991 году. Самая простая форма протокола, понятная HTTP-серверу, включает только одну команду: GET. Если вы подключаетесь к серверу, который понимает протокол HTTP, и сообщаете ему «GET filename», сервер ответит, отправив вам содержимое указанного файла, а затем отключится. Вот типичный сеанс:
% telnet www.carder.market80 Попытка 216.27.61.137 ... Подключено к howstuffworks.com. Экранирующий символ - '^]'. ПОЛУЧИТЬ https://www.carder.market/ ... Соединение закрыто внешним хостом.
В исходном протоколе HTTP все, что вы должны были послать, - это фактическое имя файла, например «/» или «/web-server.htm». Позднее протокол был изменен для обработки отправки полного URL-адреса. Это позволило компаниям, которые размещают виртуальные домены , где многие домены находятся на одной машине, использовать один IP-адрес для всех доменов, которые они размещают. Оказывается, сотни доменов размещены на 209.116.69.77 - IP-адресе Carder.

Собираем все вместе​

Теперь вы знаете очень много об Интернете. Вы знаете, что когда вы вводите URL-адрес в браузере, происходят следующие шаги:
Браузер разбивает URL-адрес на три части:
  1. Протокол ("https")
  2. Имя сервера («www.carder.market»)
  3. Имя файла ("index.php")
Браузер взаимодействует с сервером имен, чтобы преобразовать имя сервера «www.howstuffworks.com» в IP-адрес, который он использует для подключения к этому серверу. Затем браузер устанавливает соединение с веб-сервером по этому IP-адресу на порту 80. Следуя протоколу HTTP, браузер отправляет на сервер запрос GET, запрашивая файл «https://www.carder.market/index.php" (Обратите внимание, что файлы cookie могут быть отправлены из браузера на сервер с помощью запроса GET - подробности см. В разделе Как работают файлы cookie в Интернете .) Сервер отправляет текст HTML для веб-страницы в браузер. (Файлы cookie также могут отправляться с сервера в браузер в заголовке страницы.) Браузер считывает теги HTML и форматирует страницу на вашем экране.

Безопасность​

Из этого описания видно, что веб-сервер может быть довольно простым программным обеспечением. Он берет имя файла, отправленное с командой GET, извлекает этот файл и отправляет его по сети в браузер. Даже если вы примете во внимание весь код для обработки портов и соединений портов, вы можете легко создать программу C, которая реализует простой веб-сервер менее чем в 500 строк кода. Очевидно, что полноценный веб-сервер корпоративного уровня более сложен, но основы очень просты.
Большинство серверов добавляют некоторый уровень безопасности к процессу обслуживания. Например, если вы когда-либо заходили на веб-страницу и в браузере открывалось диалоговое окно с запросом вашего имени и пароля, вы столкнулись со страницей, защищенной паролем. Сервер позволяет владельцу страницы вести список имен и паролей для тех людей, которым разрешен доступ к странице; сервер позволяет просматривать страницу только тем людям, которые знают правильный пароль. Более продвинутые серверы добавляют дополнительную безопасность, позволяя зашифрованное соединение между сервером и браузером, так что конфиденциальная информация, такая как номера кредитных карт, может быть отправлена через Интернет.
Это действительно все, что нужно для веб-сервера, который предоставляет стандартные статические страницы. Статические страницы - это страницы, которые не изменяются, пока создатель не редактирует страницу.

Динамические страницы​

Но как насчет динамических веб-страниц ? Например:
  • Любая гостевая книга позволяет вам ввести сообщение в форме HTML, и при следующем просмотре гостевой книги страница будет содержать новую запись.
  • Форма whois в Network Solutions позволяет вам вводить доменное имя в форму, а возвращаемая страница может отличаться в зависимости от введенного доменного имени.
  • Любая поисковая система позволяет вам вводить ключевые слова в HTML-форму, а затем динамически создает страницу на основе введенных вами ключевых слов.
Во всех этих случаях веб-сервер не просто «ищет файл». Фактически он обрабатывает информацию и генерирует страницу на основе специфики запроса. Почти во всех случаях для выполнения этой задачи веб-сервер использует так называемые сценарии CGI. Сценарии CGI представляют собой отдельную тему и описаны в статье "Как работают сценарии CGI".
 
Top