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.
Odpowiedzi:
Co się właściwie dzieje, gdy kieruję przeglądarkę do strony localhost: 8080?
Powodujesz, że przeglądarka internetowa prosi system operacyjny o rozpoznanie nazwy hosta
localhost
. Systemy operacyjne zwykle rozwiązać nazwę hostalocalhost
do127.0.0.1
, interfejs pętli powrotem.Każda nazwa hosta lub adres IP, po którym następuje znak „
:
a” i numer portu,:8080
nakazują 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
, ihttp://127.0.0.1/
każdy połączyć się z samym serwerze i portu, tak mahttp://localhost:8080/
ihttp://127.0.0.1:8080/
również podłączyć do tego samego adresu IP, ale na porcie TCP 8080Uwaga 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: localhost
lubHost: 127.0.0.1
w 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?
W systemach uniksowych lub systemach uniksopodobnych, takich jak Linux lub Freebsd, plik to / etc / hosts i najprawdopodobniej będzie zawierać linie takie jak:
W systemie Windows plik ma
c:\windows\system32\drivers\etc\hosts
i zwykle ma podobną linię:Uwaga dodatkowa: Jeśli chcesz, możesz dodać wiersze do pliku hosts, takie jak:
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.
źródło
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.
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.
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).
źródło
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.
źródło
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ć ...
źródło