Что именно происходит, когда я захожу на localhost:8080 в моем веб-браузере? (Apache Tomcat)

Я посвятил всю свою карьеру программированию локальных приложений (приложения на C++ и все такое). Однако сейчас я пытаюсь погрузиться в мир Интернета. Я использую Eclipse (Mars) и Apache Tomcat 8.0.23, чтобы попытаться настроить среду, в которой я могу экспериментировать и узнавать о программировании на стороне сервера (JSP, PHP и т. Д.). У меня все настроено так, что когда я печатаю

localhost:8080

в моем браузере он указывает на правильную страницу кота. Я знаю, что это, наверное, очень просто, но это как бы ошеломляет меня.

Что именно происходит, когда я набираю localhost?

Откуда берется страница кота, если не интернет? Я почти уверен, что данные поступают с сервера, который, благодаря Tomcat, находится на моем ПК, но как мой браузер узнал, где найти информацию только из localhost:8080?

Я предполагаю, что 8080 - это порт или что-то в этом роде, но я действительно не уверен в этом, и если это порт, я не совсем уверен, что это значит.

По сути, все, что я знаю (я думаю...) о веб-разработке на стороне сервера, - это то, что в чистой веб-разработке на html / css вся работа выполняется локально после того, как все загружено, но с серверами часть работы (внутри некоторых разделителей) уходит в сервер и возвращается, введенный в html в другой форме (очень похоже на отправку данных в функцию в C++ и возвращение других данных), которые затем снова выводятся на страницу локально.

4 ответа

Решение

Что именно происходит, когда я указываю своему веб-браузеру перейти на localhost:8080?

  1. Вы заставляете свой веб-браузер запрашивать у вашей операционной системы имя хоста localhost, Операционные системы обычно разрешают имя хоста localhost в 127.0.0.1Ваш обратный интерфейс.

  2. Любое имя хоста или IP-адрес, сопровождаемый : и номер порта, как :8080 говорит браузеру подключиться к этому TCP-порту вместо порта 80 веб-сервера по умолчанию.

    Как только http://localhost:80/, http://localhost/, http://127.0.0.1/:80, а также http://127.0.0.1/ каждый подключается к одному серверу и порту, так же http://localhost:8080/ а также http://127.0.0.1:8080/ также подключиться к тому же IP-адресу, но через TCP-порт 8080

Дополнительное примечание: В HTTP/1.1, хотя веб-браузер подключается к одному и тому же IP-адресу и порту, ко многим веб-серверам существует небольшая разница между localhost и 127.0.0.1. В зависимости от того, что находится в адресной строке, ваш браузер отправит поле заголовка запроса с Host: localhost или же Host: 127.0.0.1 в этом. Когда веб-сервер настроен правильно, поле заголовка "Хост" браузера позволяет одному веб-серверу прослушивать один порт IP-адреса и обслуживать разные веб-страницы для множества разных доменов, которые разрешают один и тот же IP-адрес.

Как операционная система обычно разрешает имена хостов, такие как localhost?

  1. В Unix-системах или Unix-подобных ОС, таких как Linux или Freebsd, файл находится в / etc / hosts и, вероятно, будет иметь такие строки:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. На окнах файл c:\windows\system32\drivers\etc\hosts и обычно будет иметь похожую строку:

    127.0.0.1   localhost
    

Дополнительное примечание: если хотите, вы можете добавить строки в ваш файл hosts, например:

127.0.0.1     localhost
127.0.0.1     developer.yourdomain.com
# Deny Browser Request For These Sites
127.0.0.2     www.spam.advertisements.com
127.0.0.2     super.ads.com
# Block These Sites
127.0.0.3     www.dont.go.here.com
127.0.0.3     nsfw.stuff.com 
  • Унифицированный указатель ресурса (URL) http://developer.yourdomain.com:8080/ в адресной строке вашего браузера указывает веб-браузеру установить TCP-соединение с портом 8080 вашего локального петлевого адреса 127.0.0.1.

  • Кроме того, согласно странице 4 rfc1700 любой адрес в диапазоне 127.0.0.0/8 также является адресом обратной связи. Таким образом, правильно настроенный веб-сервер, работающий на вашем компьютере, может отклонить все запросы на порт 127.0.0.2, выдав при этом общее сообщение "Не следует заходить сюда. Сайт заблокирован" для подключений на 127.0.0.3.

Откуда берется страница кота?

Apache Tomcat - это сервер, который прослушивает порт и запускает Java-программы, которые генерируют контент для отправки в ваш браузер.

В этом сценарии вы отправляете запрос для разрешения localhost, который является 127.0.0.1 (интерфейс обратной связи), и Apache настроен на прослушивание через порт 8080, когда вы обращаетесь к localhost через порт 8080, он возвращает VirtualHost по умолчанию.

Когда вы вводите www.google.com в свой веб-браузер, он открывает соединение через порт 80 по умолчанию с сервером Google (через поиск в DNS, чтобы узнать, какой IP-адрес www.google.com) и запрашивает веб-страницу. Сервер Google отвечает веб-страницей, которую ваш браузер рисует на экране (обычно путем дальнейших вызовов изображений, CSS и JavaScript).

Когда вы переходите на localhost:8080, это то же самое. Имя сервера Localhost всегда соответствует компьютеру, на котором вы работаете, и использует поддельный IP-адрес 127.0.0.1 (у вашего компьютера будет два IP-адреса - этот поддельный, который есть у каждого компьютера, и настоящий). Поэтому у вас должен быть экземпляр Tomcat, работающий локально и прослушивающий соединения через порт 8080.

Почему порт 8080, а не порт http по умолчанию 80? Это на тот случай, если у вас уже есть веб-сервер.

Обычно у вас есть веб-серверы и серверы приложений.

  1. Веб-серверы (например, Apache httpd) обслуживают статические страницы. По сути это похоже на модный односторонний FTP-сервер. Вы открываете соединение TCP и запрашиваете файл, используя команды HTTP (обычно GET). Веб-сервер возвращает файл HTML, и ваш браузер загружает его и анализирует, видит, что ему нужны другие изображения, и запрашивает их. Веб-сервер очень быстрый, но в основном снимает файлы с локального диска и возвращает их.

  2. Сервер приложений (такой как Tomcat или JBoss) похож, за исключением того, что он обычно запускает код для "создания" запрашиваемой страницы, а не поднимает ее прямо с диска. Что он делает для создания этой страницы, зависит от вашего приложения. Он может подключаться к базе данных, запускать программу, произвольно обслуживать страницу... И т. Д. Когда вы входите, например, в свой онлайн-банк, сервер приложений устанавливает для вас сеанс, возвращает идентификатор этого сеанса в файле cookie, который ваш браузер отправляет обратно каждый раз, когда вы делаете запрос, пока вы не выйдете из системы. Поэтому, если вы запрашиваете страницу "Мои остатки", тогда банк ищет, кто вы, на основе вашего идентификатора сеанса, затем идет в свою базу данных, чтобы узнать ваше имя и остаток на счете, а затем создает страницу с надписью "Привет, Джон Смит, ваш баланс это 100 евро." Серверы приложений обычно медленнее, но более универсальны, чем веб-серверы.

Во многих местах WebServer работает с портом по умолчанию 80, а затем App Server работает на вторичном порту (например, 8080). Таким образом, статические страницы обслуживаются быстро, и когда пользователи нажимают на ссылку, которая переводит их на динамическую страницу, ссылка либо переходит на 8080 (на который отвечает сервер приложений), либо веб-сервер настраивается для пересылки определенных запросов на сервер приложений (в в этом случае он все еще выглядит как порт 80 по умолчанию и поэтому выглядит немного приятнее для пользователя).

Конечно, это обзор очень высокого уровня, и ничто не является черно-белым. Большинство веб-серверов могут создавать некоторый динамический контент с помощью сценариев (обычно CGI через сценарии, которые она использует с помощью Perl или PHP), и большинство серверов приложений также могут обслуживать простые файлы, такие как веб-сервер. Фактически можно просто запустить сервер приложений и изменить номер порта tomcat с 8080 на 80.

Наконец, многие приложения отходят от предоставления полных HTML-страниц для каждого запроса на сервер приложений (который рассматривается как медленный и неэффективный) и вместо этого отвечают только фрагментами данных, используя AJAX для отправки JSON или XML. Вернитесь на исходный сайт www.google.com, который вы использовали для ввода поискового запроса, нажмите "Поиск" и получите страницу с результатами. Теперь вместо этого, когда вы печатаете, ваш браузер постоянно отправляет запросы AJAX в Google, который отвечает обновленными результатами поиска, основанными на том, что вы уже ввели, и затем ваш браузер обновляет страницу. Это означает, что нет необходимости ждать, пока пользователь отправит страницу так быстро и более динамично для пользователя (как в случае со старым настольным приложением).

Делая это простым, localhost в качестве веб-адреса подключается к вашему локальному компьютеру, где в этом случае у вас установлен Apache в качестве веб-сервера.

Вторая часть:8080, означает подключение к порту 8080 этого веб-адреса. Если вы не укажете его, ваш веб-браузер подключится к порту веб-сервера по умолчанию, который является портом 80.

Если у вас есть IP-адреса, localhost - это фиксированная DNS-ссылка на 127.0.0.1.

Должен получить тебя там...

Другие вопросы по тегам