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

11

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

localhost:8080

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

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

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

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

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

softeng
источник
2
Я хотел бы пригласить вас прочитать RFC 7230 .
Майкл Хэмптон
Похоже, это ганна будет долгой ночью;)
смягчение

Ответы:

9

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

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

  2. Любое имя хоста или IP-адрес, за которым следуют такие символы, как a :и номер порта, :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/подключить к тому же адресу внутрибрюшинно , а на 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. В Windows файл 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-программы, которые генерируют контент для отправки в ваш браузер.

Кит Рейнольдс
источник
Ничего не объясняет Очень поверхностный
Грин,
@Green, что конкретно вы искали? Имя локального узла, преобразующее в адрес, и номер порта TCP, были покрыты. Я не освещал: как различные серверы обрабатывают перечисление в порт, пулы серверов обрабатывают несколько соединений, как настроить веб-серверы, внутреннюю работу TCP-коммуникаций, объяснение полных заголовков HTTP или как работает разрешение имен для доменов, не найденных в хостах файл, каждый будет далеко за рамки вопроса.
Кит Рейнольдс
1

Когда вы вводите 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, а затем AppServer работает на вторичном порту (например, 8080). Таким образом, статические страницы обслуживаются быстро, и когда пользователи нажимают на ссылку, которая переводит их на динамическую страницу, ссылка либо переходит на 8080 (на который отвечает сервер приложений), либо веб-сервер настраивается для пересылки определенных запросов на сервер приложений (в в этом случае он все еще выглядит как порт 80 по умолчанию и поэтому выглядит немного приятнее для пользователя).

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

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

Барри Поллард
источник
1

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

Али Пандидан
источник
0

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

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

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

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

narrsf
источник