Що саме відбувається, коли я переходжу до localhost: 8080 у своєму веб-браузері? (Apache Tomcat)


11

Я провів свою кар’єру, виконуючи всі програми локального застосування (додатки на C ++ і багато чого іншого). Однак я зараз намагаюся копати ноги у світі. Я використовую Eclipse (Mars) і Apache Tomcat 8.0.23, щоб спробувати створити проект, в якому я можу експериментувати і дізнатися про серверне програмування (JSP, PHP тощо) У мене все налаштовано так, що коли я друкую

localhost:8080

у моєму браузері він спрямовує на правильну сторінку tomcat. Я знаю, що це, мабуть, дуже просто, але це свого роду дує тут.

Що саме відбувається, коли я набираю localhost?

Звідки береться сторінка tomcat, якщо не Інтернет? Я впевнений, що дані надходять із сервера, який завдяки Tomcat є на моєму ПК, але як мій браузер знав, де можна знайти інформацію саме з localhost: 8080?

Я припускаю, що 8080 - це порт чи щось таке, але я в цьому теж не впевнений, і якщо це порт, я не дуже впевнений, що це означає.

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


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
    

Додаткова примітка. Якщо вам подобається, ви можете додати рядки до файлу хостів, як-от:

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.

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

Звідки береться сторінка tomcat?

Apache Tomcat - це сервер, який слухає порт і запускає програми java, які генерують контент для надсилання у ваш браузер.


Нічого не пояснює. Дуже поверхово
Зелений

@Green, що конкретно ви шукали? Ім'я Localhost, що вирішує адресу, та номер порту 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.

Повинен вас туди ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.