Co dokładnie się dzieje, kiedy przechodzę do localhost: 8080 w mojej przeglądarce? (Apache Tomcat)

11

Swoją karierę spędziłem na programowaniu wszystkich aplikacji lokalnych (aplikacje C ++ i tak dalej). Jednak teraz próbuję wbić stopy w świat sieci. Korzystam z Eclipse (Mars) i Apache Tomcat 8.0.23, aby spróbować skonfigurować środowisko, w którym mogę eksperymentować i uczyć się o programowaniu po stronie serwera (JSP, PHP itp.). Mam wszystko ustawione tak, że kiedy piszę

localhost:8080

w mojej przeglądarce prowadzi do właściwej strony tomcat. Wiem, że jest to prawdopodobnie bardzo proste, ale tutaj trochę oszałamiam.

Co dokładnie się dzieje, gdy wpisuję localhost?

Skąd pochodzi strona tomcat, jeśli nie Internet? Jestem prawie pewien, że dane pochodzą z serwera, który dzięki Tomcatowi znajduje się na moim komputerze, ale skąd moja przeglądarka wiedziała, gdzie znaleźć informacje tylko z localhost: 8080?

Zakładam, że 8080 to port czy coś takiego, ale tak naprawdę nie jestem tego pewien, a jeśli jest to port, nie jestem pewien, co to znaczy.

Zasadniczo wszystko, co wiem (myślę ...) o tworzeniu stron po stronie serwera to to, że w czystym tworzeniu stron HTML / CSS cała praca jest wykonywana lokalnie po pobraniu wszystkiego, ale na serwerach część pracy (wewnątrz niektórych ograniczników) przechodzi do serwer i wraca wstrzykiwany do html w innej formie (podobnie jak wysyłanie danych do funkcji w C ++ i zwracanie różnych danych), która następnie jest ponownie lokalnie rysowana na stronie.

softeng
źródło
2
Chciałbym zaprosić Cię do przeczytania RFC 7230 .
Michael Hampton
Wygląda na to, że to będzie długa noc;)
softeng

Odpowiedzi:

9

Co się właściwie dzieje, gdy kieruję przeglądarkę do strony localhost: 8080?

  1. Powodujesz, że przeglądarka internetowa prosi system operacyjny o rozpoznanie nazwy hosta localhost. Systemy operacyjne zwykle rozwiązać nazwę hosta localhostdo 127.0.0.1, interfejs pętli powrotem.

  2. Każda nazwa hosta lub adres IP, po którym następuje znak „ :a” i numer portu, :8080nakazują przeglądarce połączyć się z tym portem TCP zamiast domyślnego portu 80 serwera WWW.

    Podobnie jak http://localhost:80/, http://localhost/, http://127.0.0.1/:80, i http://127.0.0.1/każdy połączyć się z samym serwerze i portu, tak ma http://localhost:8080/i http://127.0.0.1:8080/również podłączyć do tego samego adresu IP, ale na porcie TCP 8080

Uwaga dodatkowa: W HTTP / 1.1, mimo że przeglądarka internetowa łączy się z tym samym adresem IP i tym samym portem, z wieloma serwerami internetowymi, istnieje niewielka różnica między localhost a 127.0.0.1. W zależności od tego, co znajduje się na pasku adresu, przeglądarka wyśle ​​pole nagłówka żądania z jednym Host: localhostlub Host: 127.0.0.1w nim. Gdy serwer WWW jest odpowiednio skonfigurowany, pole nagłówka Host przeglądarki pozwala pojedynczemu serwerowi internetowemu nasłuchiwać na jednym porcie adresu IP i obsługiwać różne strony internetowe dla wielu różnych domen, które rozstrzygają ten sam adres IP.

W jaki sposób system operacyjny zazwyczaj rozpoznaje nazwy hostów, takie jak localhost?

  1. W systemach uniksowych lub systemach uniksopodobnych, takich jak Linux lub Freebsd, plik to / etc / hosts i najprawdopodobniej będzie zawierać linie takie jak:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. W systemie Windows plik ma c:\windows\system32\drivers\etc\hostsi zwykle ma podobną linię:

    127.0.0.1   localhost
    

Uwaga dodatkowa: Jeśli chcesz, możesz dodać wiersze do pliku hosts, takie jak:

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 
  • Jednolity lokalizator zasobów (URL) http://developer.yourdomain.com:8080/w pasku adresu przeglądarki kieruje przeglądarkę internetową do nawiązania połączenia TCP z portem 8080 lokalnego adresu sprzężenia zwrotnego 127.0.0.1.

  • Ponadto, zgodnie z rfc1700 strona 4, dowolny adres w zakresie 127.0.0.0/8 jest również adresem pętli zwrotnej. Tak więc poprawnie skonfigurowany serwer WWW działający na twoim komputerze może odrzucić wszystkie żądania na porcie 127.0.0.2, generując ogólny komunikat „Nie powinieneś iść tutaj. Witryna jest zablokowana” dla połączeń na 127.0.0.3.

Skąd pochodzi strona tomcat?

Apache Tomcat to serwer, który nasłuchuje na porcie i uruchamia programy Java, które generują treści do wysłania do przeglądarki.

Keith Reynolds
źródło
Nic nie wyjaśnia. Bardzo powierzchowne
Green
@Green, czego konkretnie szukałeś? Nazwa hosta lokalnego tłumaczącego na adres i numer portu TCP zostały uwzględnione. Nie omówiłem: jak różne serwery obsługują listowanie do portów, pule serwerów obsługują wiele połączeń, jak konfigurować serwery WWW, wewnętrzne funkcjonowanie komunikacji TCP, pełne wyjaśnienie nagłówków HTTP lub jak działa rozpoznawanie nazw dla domen nie znalezionych w hostach plik, każdy byłby daleko poza zakresem pytania.
Keith Reynolds,
1

Gdy wpiszesz www.google.com w przeglądarce internetowej, otworzy ono połączenie z domyślnym portem 80 z serwerem Google (poprzez wyszukiwanie DNS, aby zobaczyć, jaki jest adres IP www.google.com) i zażąda strony internetowej. Serwer Google odpowiada stroną internetową, którą twoja przeglądarka rysuje na ekranie (zwykle wykonując kolejne wywołania obrazów, CSS i JavaScript).

Gdy idziesz do localhost: 8080, jest dokładnie tak samo. Nazwa serwera Localhost zawsze odnosi się do komputera, na którym pracujesz i używa fałszywego adresu IP 127.0.0.1 (twój komputer będzie miał dwa adresy IP - ten fałszywy, który ma każdy komputer i prawdziwy). Musisz mieć instancję Tomcat działającą lokalnie i nasłuchującą połączeń na porcie 8080.

Dlaczego port 8080 zamiast domyślnego portu 80 HTTP? Tak jest w przypadku, gdy masz już serwer WWW.

Zazwyczaj masz serwery sieciowe i serwery aplikacji.

  1. Serwery WWW (takie jak Apache httpd) obsługują strony statyczne. W efekcie jest to podobny do fantazyjnego jednokierunkowego serwera FTP. Otwierasz połączenie TCP i pytasz o plik za pomocą poleceń HTTP (zazwyczaj GET). Serwer internetowy zwraca plik HTML, a przeglądarka pobiera go i analizuje, widzi, że potrzebuje innych obrazów i żąda ich. Serwer WWW jest bardzo szybki, ale w zasadzie usuwa pliki z dysku lokalnego i zwraca je.

  2. Serwer aplikacji (taki jak Tomcat lub JBoss) jest podobny, z tym wyjątkiem, że zwykle uruchamia kod w celu „utworzenia” strony, o którą prosisz, zamiast wyciągać ją bezpośrednio z dysku. To, co robi, aby utworzyć tę stronę, zależy od twojej aplikacji. Może łączyć się z bazą danych, uruchamiać program, losowo obsługiwać stronę ... Itd. Na przykład, gdy logujesz się do bankowości internetowej, serwer aplikacji konfiguruje sesję, zwraca identyfikator sesji w pliku cookie, który przeglądarka ponownie wysyła odpowiedź za każdym razem, gdy wysyłasz żądanie, aż się wylogujesz. Jeśli więc poprosisz o stronę „moje salda”, bank sprawdza, kim jesteś na podstawie identyfikatora sesji, a następnie przechodzi do swojej bazy danych, aby uzyskać twoje imię i saldo, a następnie tworzy stronę z napisem „Cześć John Smith, saldo wynosi 100 € ”. Serwery aplikacji są zwykle wolniejsze, ale bardziej wszechstronne niż serwery WWW.

W wielu miejscach WebServer działa w domyślnym porcie 80, a następnie AppServer działa na drugim porcie (np. 8080). Tak więc strony statyczne są wyświetlane szybko, a gdy użytkownik kliknie link prowadzący do strony dynamicznej, link przechodzi do 8080 (na który odpowiada serwer aplikacji) lub serwer WWW jest skonfigurowany do przekazywania określonych żądań do serwera aplikacji (w który przypadek nadal wygląda jak domyślny port 80, a więc wygląda trochę ładniej dla użytkownika).

Oczywiście jest to przegląd bardzo wysokiego poziomu i nic nie jest tak czarno-białe. Większość serwerów WWW może tworzyć dynamiczną zawartość, uruchamiając skrypty (zwykle CGI za pośrednictwem skryptów używających Perla lub PHP), a większość serwerów aplikacji może również obsługiwać zwykłe pliki, takie jak serwer WWW. W rzeczywistości można po prostu uruchomić serwer aplikacji i zmienić numer portu tomcat z 8080 na 80.

W końcu wiele aplikacji odchodzi od wyświetlania pełnych stron HTML dla każdego żądania do serwera aplikacji (co jest postrzegane jako powolne i nieefektywne) i zamiast tego odpowiada tylko fragmentami danych używającymi AJAX do wysyłania JSON lub XML. Wróć do oryginalnej strony www.google.com, w której wpisałeś zapytanie, kliknij Wyszukaj i uzyskaj stronę z wynikami. Teraz, w trakcie pisania, Twoja przeglądarka ciągle wysyła do Google żądania AJAX, które odpowiadają aktualnymi wynikami wyszukiwania na podstawie tego, co wpisałeś do tej pory, a następnie przeglądarka aktualizuje stronę. Oznacza to, że nie trzeba czekać, aż użytkownik prześle stronę tak szybko i bardziej dynamicznie (tak jak w starej aplikacji komputerowej).

Barry Pollard
źródło
1

W tym scenariuszu wysyłasz żądanie rozwiązania localhost, który jest 127.0.0.1 (interfejs pętli zwrotnej), a Apache jest skonfigurowany do nasłuchiwania na porcie 8080, gdy uzyskujesz dostęp do localhost na porcie 8080, zwraca domyślny VirtualHost.

Ali Pandidan
źródło
0

Upraszczając, localhost jako adres internetowy łączy się z komputerem lokalnym, na którym w tym przypadku Apache jest zainstalowany jako serwer WWW.

Druga część: 8080 oznacza połączenie z portem 8080 tego adresu internetowego. Jeśli go nie określisz, przeglądarka internetowa połączy się z domyślnym portem serwera WWW, którym jest port 80.

Jeśli masz już adresy IP, localhost jest stałym łączem DNS do 127.0.0.1.

Powinien cię tam zabrać ...

narrsf
źródło