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.
Respostas:
O que exatamente está acontecendo quando direciono meu navegador da web para o localhost: 8080?
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 hostlocalhost
para127.0.0.1
sua interface de loopback.Qualquer nome de host ou endereço IP seguido por um
:
e um número de porta como:8080
diz 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
, ehttp://127.0.0.1/
cada conexão para o mesmo servidor e porto, assim que fazhttp://localhost:8080/
ehttp://127.0.0.1:8080/
também ligar para o mesmo endereço IP, mas na porta TCP 8080Nota 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: localhost
ouHost: 127.0.0.1
nele. 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?
Em sistemas Unix ou Unix como SO, como Linux ou Freebsd, o arquivo é / etc / hosts e provavelmente possui linhas como:
No Windows, o arquivo é
c:\windows\system32\drivers\etc\hosts
e geralmente terá uma linha semelhante:Nota adicional: Se desejar, você pode adicionar linhas ao seu arquivo hosts, como:
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.
fonte
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.
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.
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).
fonte
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.
fonte
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á ...
fonte