O que exatamente está acontecendo quando vou ao localhost: 8080 no meu navegador da web? (Apache Tomcat)


11

Passei minha carreira fazendo toda a programação de aplicativos locais (aplicativos C ++ e outros enfeites). Agora estou tentando cavar meus pés no mundo da web. Estou usando o Eclipse (Mars) e o Apache Tomcat 8.0.23 para tentar configurar um ambiente no qual eu possa experimentar e aprender sobre programação no lado do servidor (JSP, PHP, etc.). Eu tenho tudo configurado para que quando eu digitar

localhost:8080

no meu navegador, ele direciona para a página correta do tomcat. Eu sei que isso provavelmente é muito simples, mas está meio que me impressionando aqui.

O que exatamente está acontecendo quando eu digito localhost?

De onde vem a página do tomcat, se não a internet? Tenho certeza de que os dados vêm de um servidor, que graças ao Tomcat, está no meu PC, mas como meu navegador sabia onde encontrar as informações apenas no localhost: 8080?

Presumo que 8080 seja uma porta ou algo assim, mas também não tenho certeza disso e, se for uma porta, não tenho certeza do que isso significa.

Basicamente, tudo o que sei (eu acho ...) sobre desenvolvimento web no lado do servidor é que, no desenvolvimento web puro html / css, todo o trabalho é feito localmente depois que tudo é baixado, mas com os servidores, parte do trabalho (dentro de alguns delimitadores) sai para o servidor e volta injetado no html de uma forma diferente (como enviar dados para uma função em C ++ e retornar dados diferentes), que são atraídos para a página localmente novamente.


2
Gostaria de convidá-lo para ler a RFC 7230 .
Michael Hampton

Parece que é uma noite longa;) #
softeng

Respostas:


9

O que exatamente está acontecendo quando direciono meu navegador da web para o localhost: 8080?

  1. Você está fazendo com que seu navegador solicite ao sistema operacional que resolva o nome do host localhost. Os sistemas operacionais normalmente resolverão o nome do host localhostpara 127.0.0.1sua interface de loopback.

  2. Qualquer nome de host ou endereço IP seguido por um :e um número de porta como :8080diz ao navegador para conectar-se a essa porta TCP em vez da porta padrão do servidor da web 80.

    Assim como http://localhost:80/, http://localhost/, http://127.0.0.1/:80, e http://127.0.0.1/cada conexão para o mesmo servidor e porto, assim que faz http://localhost:8080/e http://127.0.0.1:8080/também ligar para o mesmo endereço IP, mas na porta TCP 8080

Nota Adicional: No HTTP / 1.1, mesmo que o navegador da Web se conecte ao mesmo endereço IP e porta, a muitos servidores da Web, há uma pequena diferença entre o host local e o 127.0.0.1. Dependendo do que está na barra de endereço, seu navegador enviará um campo de cabeçalho de solicitação com ele Host: localhostou Host: 127.0.0.1nele. Quando um servidor da Web é configurado corretamente, o campo Cabeçalho do host do navegador permite que um único servidor da Web escute em uma única porta de endereço IP e sirva diferentes páginas da Web para muitos domínios diferentes que resolvem o mesmo endereço IP.

Como o sistema operacional normalmente resolve nomes de host como localhost?

  1. Em sistemas Unix ou Unix como SO, como Linux ou Freebsd, o arquivo é / etc / hosts e provavelmente possui linhas como:

    127.0.0.1   localhost
    ::1     localhost ip6-localhost ip6-loopback
    
  2. No Windows, o arquivo é c:\windows\system32\drivers\etc\hostse geralmente terá uma linha semelhante:

    127.0.0.1   localhost
    

Nota adicional: Se desejar, você pode adicionar linhas ao seu arquivo hosts, como:

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 
  • O localizador uniforme de recursos (URL) http://developer.yourdomain.com:8080/na barra de endereços do navegador direciona o navegador da Web a fazer uma conexão TCP à porta 8080 do endereço de loopback local 127.0.0.1.

  • Além disso, de acordo com a rfc1700 página 4, qualquer endereço na faixa 127.0.0.0/8 também é um endereço de loopback. Portanto, um servidor da Web configurado corretamente em execução no computador pode negar todas as solicitações na porta 127.0.0.2 enquanto fornece uma mensagem genérica "Você não deve ir aqui. O site está bloqueado" para conexões em 127.0.0.3.

De onde vem a página do tomcat?

O Apache Tomcat é um servidor que escuta em uma porta e executa programas java que geram conteúdo para enviar ao seu navegador.


Não explica nada. Muito superficial
Green

@ Green, o que especificamente você estava procurando? O nome do host local resolvido para um endereço e o número da porta TCP foram cobertos. Não cobri: como vários servidores lidam com a lista de portas, os pools de servidores lidam com várias conexões, como configurar servidores da Web, o funcionamento interno das comunicações TCP, explicação completa dos cabeçalhos HTTP ou como a resolução de nomes funciona em domínios não encontrados em hosts cada arquivo estaria muito além do escopo da pergunta.
Keith Reynolds

1

Quando você digita www.google.com no navegador da web, ele abre uma conexão na porta padrão 80 com o servidor do Google (por meio de uma pesquisa DNS para ver qual é o endereço IP www.google.com) e solicita a página da web. O servidor do Google responde com uma página da web que o navegador desenha na tela (geralmente fazendo mais chamadas para imagens, CSS e JavaScript).

Quando você vai para localhost: 8080, é exatamente a mesma coisa. O nome do servidor localhost sempre resolve para a máquina em que você está executando e usa o endereço IP falso de 127.0.0.1 (seu computador terá dois endereços IP - esse falso que todo computador possui e o real). Portanto, você deve ter uma instância do Tomcat executando localmente escutando conexões na porta 8080.

Por que a porta 8080 em vez da porta http padrão 80? Bem, no caso de você já ter um servidor da web.

Normalmente você tem servidores da web e servidores de aplicativos.

  1. Servidores da Web (como o Apache httpd) servem páginas estáticas. Na verdade, é como um servidor FTP unidirecional sofisticado. Você abre uma conexão TCP e solicita um arquivo usando os comandos HTTP (normalmente GET). O servidor da web retorna um arquivo HTML e seu navegador baixa e analisa, vê que precisa de outras imagens e solicita-as. Um servidor da web é muito rápido, mas basicamente retira os arquivos do disco local e os retorna.

  2. Um servidor de aplicativos (como o Tomcat ou o JBoss) é semelhante, exceto que normalmente executa o código para "criar" a página solicitada, em vez de a elevar diretamente do disco. O que ele faz para criar essa página depende do seu aplicativo. Ele pode se conectar a um banco de dados, executar um programa, exibir uma página aleatoriamente ... Etc. Quando você faz logon no banco on-line, por exemplo, o servidor de aplicativos configura uma sessão para você, retorna a ID da sessão em um cookie que seu o navegador é reenviado toda vez que você faz uma solicitação até que você se desconecte. Portanto, se você solicitar a página "meus saldos", o banco procurará quem você é com base no seu ID de sessão, depois acessará o banco de dados para obter seu nome e seu saldo bancário e criará uma página dizendo "Olá John Smith, seu saldo é de € 100 ". Os servidores de aplicativos geralmente são mais lentos, mas mais versáteis que os servidores da Web.

Muitos locais têm um WebServer em execução na porta padrão 80 e, em seguida, o AppServer em execução em uma porta secundária (como 8080). Portanto, as páginas estáticas são veiculadas rapidamente e, quando os usuários clicam em um link que as leva a uma página dinâmica, o link vai para 8080 (ao qual o servidor de aplicativos responde) ou o servidor da Web é configurado para encaminhar determinadas solicitações ao servidor de aplicativos (em Nesse caso, ainda parece com a porta padrão 80 e, portanto, é um pouco melhor para o usuário).

Claro que esta é uma visão geral de nível muito alto e nada é preto e branco. A maioria dos servidores da Web pode criar algum conteúdo dinâmico executando scripts (geralmente CGI via scripts usando perl ou PHP) e a maioria dos servidores de aplicativos também pode servir arquivos simples como um servidor da web. Na verdade, é possível simplesmente executar um servidor de aplicativos e alterar o número da porta do tomcat de 8080 para 80.

Finalmente, muitos aplicativos estão deixando de exibir páginas HTML completas para cada solicitação ao servidor de aplicativos (que são vistos como lentos e ineficientes) e estão respondendo apenas com os trechos de dados usando o AJAX para enviar JSON ou XML. Volte ao www.google.com original que você costumava digitar na sua consulta de pesquisa, clique em Pesquisar e obtenha uma página dos seus resultados. Agora, enquanto você digita, seu navegador envia continuamente solicitações AJAX ao Google, que responde com resultados de pesquisa atualizados com base no que você digitou até agora e, em seguida, atualiza a página. Isso significa que não é necessário esperar que o usuário envie a página de forma mais rápida e dinâmica para o usuário (como seria um aplicativo de desktop da velha escola).


1

Nesse cenário, você envia uma solicitação para resolver o host local que é 127.0.0.1 (interface de loopback) e o Apache está configurado para escutar na porta 8080, quando você acessa o host local na porta 8080, ele retorna o VirtualHost padrão.


0

Simplificando, o host local como endereço da web se conecta à sua máquina local, onde neste caso você tem o Apache instalado como servidor da web.

A segunda parte,: 8080, significa conectar-se à porta 8080 desse endereço da web. Se você não o especificar, seu navegador da Web se conectará à porta padrão do servidor da web, que é a porta 80.

Se você já possui endereços IP, localhost é um link DNS fixo para 127.0.0.1.

Deve chegar lá ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.