‫Instrutor: Nosso objetivo é
‫desenvolver aplicativos back-end com o
‫Node e, portanto, é provavelmente uma
‫boa ideia obter uma compreensão básica de como a
‫web realmente funciona nos bastidores, certo?
‫E esta vai ser uma palestra realmente completa.
‫E então vamos mergulhar de cabeça.
‫Agora, para entender melhor como a
‫web realmente funciona, vamos
‫começar perguntando: O que realmente
‫acontece cada vez que digitamos um
‫URL em nosso
‫navegador para abrir uma nova página da web?
‫Ou cada vez que solicitamos dados de alguma API?
‫O que é praticamente o mesmo,
‫então vamos nos concentrar em um exemplo simples de site aqui.
‫Bem, a resposta mais simples é que nosso navegador,
‫também chamado de cliente, envia uma solicitação ao servidor onde
‫a página da web está hospedada.
‫E o servidor enviará de volta uma
‫resposta, que conterá a página da Web que acabamos de solicitar.
‫E esse processo é chamado de modelo de
‫solicitação-resposta ou também de arquitetura cliente-servidor.
‫E tudo o que
‫vamos falar nesta seção gira em torno desse conceito fundamental.
‫Ok, mas agora vamos dar um passo adiante porque
‫isso provavelmente não é realmente novo para
‫você neste momento, certo?
‫Então, digamos que queremos acessar o
‫Google Maps escrevendo google. com / maps em nosso navegador como o URL.
‫E cada URL obtém um HTTP ou HTTPS, que
‫é para o protocolo que será
‫usado na conexão.
‫E vamos falar sobre isso um pouco mais tarde neste vídeo.
‫Então temos o nome do domínio aqui,
‫que é google. com neste
‫caso, e também após uma barra, o chamado
‫recurso que vamos
‫acessar e, neste caso, / maps.
‫Agora o que você precisa saber aqui é que o
‫nome de domínio como google. com não é realmente
‫o endereço real do servidor que estamos tentando
‫acessar, mas apenas um nome legal que seja fácil de memorizar.
‫Portanto, precisamos de uma espécie de conversão do nome de domínio
‫para o endereço real do
‫servidor e isso acontece através de um DNS.
‫Assim, DNS significa Domain Name Server, que
‫são servidores especiais que são basicamente como
‫as listas telefônicas da Internet.
‫Portanto, a primeira etapa que acontece quando abrimos um site
‫é quando o navegador faz uma solicitação a um DNS
‫e esse servidor especial simplesmente associa o
‫endereço da web que digitamos no navegador
‫ao endereço IP real do servidor.
‫Tudo bem.
‫Na verdade, isso acontece
‫através do seu provedor de serviços de Internet ou ISP,
‫mas os detalhes completos não importam para nós.
‫O que você precisa reter
‫desta parte é que o domínio não é o
‫endereço real e que um DNS o converterá nesse endereço IP real, que um
‫navegador pode então chamar depois de ser enviado de volta
‫ao nosso navegador.
‫Então é assim que o endereço real se
‫parece, então ele ainda tem o protocolo, mas depois vem o endereço IP.
‫E também a porta que acessamos no servidor.
‫E o número da porta serve apenas
‫para identificar um serviço específico em execução em um servidor
‫e, portanto, você pode pensar nele como um subendereço.
‫Lembre-se de como ouvimos a porta 8000 em
‫nosso servidor web quando a configuramos na interseção que é exatamente
‫o que esta porta é.
‫Observe também que o número da porta não
‫tem nada a ver com o recurso do Google
‫Maps que desejamos acessar.
‫Esse recurso será realmente
‫enviado na solicitação HTTP, como veremos em breve.
‫Ok, e isso conclui a primeira etapa.
‫Assim, uma vez que temos o endereço
‫web real, uma conexão de soquete TCP é
‫estabelecida entre o navegador e
‫o servidor, que agora estão finalmente conectados.
‫E essa conexão normalmente é mantida ativa durante
‫todo o tempo que leva para transferir
‫todos os arquivos do site.
‫Agora, quais são o nosso TCP e IP?
‫Bem, TCP é o protocolo de controle de transmissão e
‫IP é o protocolo da
‫Internet e, juntos, eles são protocolos de comunicação
‫que definem exatamente como os dados trafegam pela web.
‫Então, eles
‫são basicamente o sistema de controle fundamental
‫da Internet, porque, novamente, são eles que definem as regras
‫sobre como os dados se movem na Internet.
‫E não se preocupe, aprenderemos um pouco mais sobre TCP / IP
‫mais adiante neste vídeo.
‫Enfim, agora é hora de finalmente fazer nosso pedido.
‫E a solicitação que fazemos é
‫uma solicitação HTTP, em que HTTP significa HyperText Transfer Protocol.
‫Portanto, após o TCP / IP, o HTTP é mais um protocolo de comunicação.
‫E, a propósito, um protocolo de comunicação é
‫simplesmente um sistema de regras
‫que permite que duas ou mais partes se comuniquem.
‫E, no caso do HTTP, é apenas um protocolo que
‫permite que clientes e servidores da web se comuniquem
‫enviando solicitações e mensagens de resposta do
‫cliente para o servidor e vice-versa.
‫Agora, uma mensagem de solicitação será semelhante a esta.
‫Portanto, o início da mensagem é a
‫parte mais importante chamada linha inicial, que contém o método
‫HTTP usado na solicitação,
‫depois o destino da solicitação e a versão HTTP.
‫Então, sobre os métodos HTTP, existem muitos disponíveis, mas
‫os mais importantes são obter
‫simplesmente para solicitar dados, postar para enviar dados e
‫colocar e corrigir para basicamente modificar os dados.
‫Portanto, você vê que uma solicitação HTTP para o servidor
‫não é apenas para obter dados, mas também podemos enviar dados.
‫Tudo bem?
‫Agora, por favor, não se preocupe se tudo isso soar um
‫pouco demais para você neste momento.
‫É claro que usaremos essas
‫coisas pelo resto do curso, que
‫é, na verdade, a razão pela qual estou dizendo isso.
‫De qualquer forma, sobre o destino
‫da solicitação, é aqui que se pensa no servidor
‫que queremos acessar o recurso de mapas neste exemplo.
‫Lembre-se disso?
‫Então, tínhamos / maps em nossa URL e agora ele é enviado
‫como o destino na solicitação HTTP para
‫que o servidor possa descobrir o que fazer com ele.
‫E se estiver vazio, então se fosse apenas uma barra, basicamente,
‫estaríamos acessando a raiz do site que
‫seria apenas o google. com neste exemplo.
‫Em seguida, a próxima parte da solicitação são os cabeçalhos da
‫solicitação, que são apenas algumas informações que
‫enviamos sobre a própria
‫solicitação, e há toneladas de cabeçalhos diferentes disponíveis,
‫como qual navegador é usado para fazer
‫a solicitação, a que horas, o idioma do usuário e muitos, muitos outros.
‫Por fim, no caso de estarmos enviando dados para
‫o servidor, também haverá um corpo
‫de solicitação contendo esses dados, por exemplo, provenientes de um formulário HTML.
‫Então essa é a solicitação HTTP.
‫Agora, é claro, não
‫somos nós, desenvolvedores, que escrevemos manualmente
‫essas solicitações, mas ainda é extremamente importante
‫que você entenda o que é uma solicitação HTTP e também
‫uma resposta, porque você trabalhará muito com elas, certo?
‫Além disso, quero mencionar que também há HTTPS, como
‫você provavelmente sabe.
‫E a principal diferença entre HTTP e HTTPS é
‫que HTTPS é criptografado usando TLS ou SSL, que são
‫mais alguns protocolos, mas
‫não vou aborrecê-los com eles.
‫Mas, além dessa criptografia adicional, a
‫lógica entre as solicitações e respostas HTTP ainda
‫se aplica ao HTTPS.
‫Tudo bem, então nosso pedido agora chega ao servidor, que
‫estará trabalhando nele até que tenha nosso site pronto para
‫enviar de volta.
‫E ele o enviará de volta usando, como você
‫pode imaginar, uma resposta HTTP.
‫E a mensagem de resposta HTTP realmente se
‫parece muito com a solicitação.
‫O mesmo ocorre com uma linha de partida, cabeçalhos e um corpo.
‫A linha de largada possui, além da versão HTTP, um
‫código de status e uma mensagem.
‫Então, basicamente, para que o
‫cliente saiba se a solicitação foi bem-sucedida ou não.
‫Este 200, por exemplo, significa ok, e
‫aquele que todos conhecem é o código de status 404,
‫que significa não encontrado.
‫E é daí que vem esse código 404
‫que você já conhecia.
‫Em seguida, os cabeçalhos de resposta ou informações
‫sobre a própria resposta.
‫Assim como antes, e há uma tonelada disponível
‫e também podemos criar nossos próprios cabeçalhos.
‫Agora, a diferença nos cabeçalhos de resposta
‫é que na verdade é o desenvolvedor de back-end
‫como você que os especifica e os envia de volta na resposta.
‫Tudo bem.
‫Finalmente, a última parte da resposta
‫é, novamente, o corpo, que está realmente presente na
‫maioria das respostas.
‫E é também o desenvolvedor que envia de volta
‫especificamente o corpo na resposta.
‫E, na verdade, já fizemos isso na interseção
‫usando a resposta. fim, lembra?
‫E o corpo geralmente deve conter o HTML do
‫site que solicitamos ou, por exemplo, dados JSON
‫vindos de uma API ou algo parecido.
‫Então, falamos detalhadamente sobre as
‫partes mais importantes aqui,
‫que são a solicitação HTTP e a resposta.
‫Mas em nosso exemplo imaginário, apenas fizemos uma solicitação
‫ao google. com e obteve uma resposta.
‫No entanto, se for um site que
‫estamos tentando acessar, haverá muitos, muitos mais pedidos e respostas.
‫E isso porque, quando fazemos a primeira solicitação,
‫tudo o que recebemos é apenas o arquivo HTML inicial,
‫esse arquivo será verificado em busca de todos os
‫ativos de que precisa para construir
‫o site inteiro, como JavaScripts, arquivos CSS, arquivos de imagem ou outros bens.
‫E para cada um desses
‫arquivos diferentes, o navegador fará uma nova solicitação HTTP ao servidor.
‫Então, basicamente, todo esse vaivém
‫entre cliente e servidor que acabamos
‫de explicar acontece
‫para cada arquivo incluído no site.
‫Pode, no entanto, haver várias solicitações e respostas acontecendo
‫ao mesmo tempo.
‫Mas a quantidade é limitada
‫porque, do contrário, a conexão começaria a ficar lenta.
‫Ok, e finalmente, quando todos os arquivos chegaram, o site é
‫renderizado no navegador
‫de acordo com as especificações HTML, CSS e JavaScript
‫que você já deve saber.
‫E agora, como a peça final deste
‫quebra-cabeça, vamos falar novamente sobre TCP / IP
‫e descobrir como os dados de solicitação e resposta
‫são realmente enviados pela web.
‫Dissemos antes que TCP e IP são os
‫protocolos de comunicação que definem
‫como os dados trafegam pela web.
‫Agora, não vou entrar em muitos detalhes aqui, mas aqui
‫está o que você precisa saber.
‫Primeiro, o trabalho do TCP é dividir as solicitações
‫e respostas em milhares de pequenos blocos chamados pacotes antes
‫de serem configurados.
‫Então, assim que chegarem ao destino, ele
‫remontará todos os pacotes
‫na solicitação ou resposta original para
‫que a mensagem chegue ao destino
‫o mais rápido possível, o que não seria
‫possível se enviássemos o site como um grande pedaço.
‫Então isso seria como tentar passar
‫pelo tráfego de dança com o maior ônibus que
‫você pode imaginar.
‫Portanto, não é uma boa ideia.
‫Agora, na segunda parte, o trabalho do protocolo IP
‫é realmente enviar e rotear todos esses
‫pacotes pela Internet.
‫Assim, garante que todos eles cheguem ao
‫destino que deveriam ir usando endereços IP em cada pacote.
‫E, novamente, esta é apenas uma visão geral muito ampla
‫do que realmente acontece nos bastidores da web, porque
‫na verdade são informações demais do que você
‫realmente precisa para se
‫tornar um grande desenvolvedor de back-end.
‫Mas espero que você ainda ache esta
‫informação útil e interessante, e também não muito confusa.
‫Agora, no próximo vídeo, faremos algumas solicitações
‫HTTP para que você se familiarize um pouco mais com
‫o protocolo.