https://github.com/lucasrmagalhaes/web-http
HTTP: Entendendo a web por baixo dos panos
https://github.com/lucasrmagalhaes/web-http
alura http web
Last synced: 3 months ago
JSON representation
HTTP: Entendendo a web por baixo dos panos
- Host: GitHub
- URL: https://github.com/lucasrmagalhaes/web-http
- Owner: lucasrmagalhaes
- License: mit
- Created: 2023-03-02T06:54:29.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-03T01:56:10.000Z (over 3 years ago)
- Last Synced: 2026-01-21T14:20:34.716Z (5 months ago)
- Topics: alura, http, web
- Homepage:
- Size: 58.6 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
### HTTP: Entendendo a web por baixo dos panos
**HTTPS**
- Web Segura
- Certificado Digital (identidade)
- Chaves (pública e privada)
**Descobrir o IP**
```
nslookup google.com
```
**O que é um domínio na Internet?**
- O domínio é o nome do site na Web. Ele facilita a navegação do usuário, que não precisa lembrar o IP de cada site.
**Como funciona o DNS?**
- O DNS tem como função realizar a tradução do nome de um domínio para o endereço de IP correspondente.
**Porta padrão HTTP**
- 80
**Endereços**
- URL são endereços da WEB
- Uma URL começa com o protocolo (http://) seguido pelo domínio (www.alura.com.br)
- Após o domínio é especificado o caminho para um recurso (course/introducao-html-css)
- Um recurso é algo conectado que queremos acessar

**smb**
- Server Message Block. Ele é utilizado para compartilhar arquivos dentro de uma rede local.
**HTTP (REQUEST-RESPONSE)**
- O protocolo HTTP segue o modelo REQUISIÇÃO-RESPOSTA
- Uma requisição precisa ter todas as informações para o servidor gerar a resposta
- HTTP é STATELESS! (Não mantém informações entre requisições)
- As plataformas de desenvolvimento usam sessões para guardar informações entre requisições
Uma requisição sempre deve ser enviada com todas as informações necessárias, o que faz uma requisição ser sempre independente das demais.
**Sessão HTTP**
- É o tempo que o cliente utiliza um web app.
- Uma sessão HTTP nada mais é que um tempo que o cliente permanece ativo no sistema! Isso é parecido com uma sessão no cinema. Uma sessão, nesse contexto, é o tempo que o cliente usa a sala no cinema para assistir a um filme. Quando você sai da sala, termina a sessão. Ou seja, quando você se desloga, a Alura termina a sua sessão.
Uma comunicação com HTTP sempre é iniciada pelo cliente que manda uma requisição ao servidor esperando por uma resposta.
* [Status Code](https://www.w3schools.com/tags/ref_httpmessages.asp)
* [HTTP STATUS DOGS](https://httpstatusdogs.com/)
* [HTTP Cats](https://http.cat/)
* [HTTP Status Codes Glossary](https://www.webfx.com/web-development/glossary/http-status-codes/)
```
200, 203, 207 -> Respostas de Sucesso
300, 301, 302 -> Mensagem de redirecionamento
401, 404, 405 -> Respostas de erro do cliente
500, 502, 503 -> Respostas de erro do servidor
```
**Sobre o HTTP**
- Requisições HTTP podem ser enviadas através de qualquer aplicativo/software que entenda o protocolo.
- HTTP é totalmente independente do formato dos dados.
- HTTP pode trafegar tanto dados binários quanto dados textuais.
**Sobre o formato**
- Pelo cabeçalho Accept.
```
Accept: text/html, Accept: text/css, Accept: application/xml, Accept: application/json, Accept:image/jpeg e Accept: image/*
```
```
Accept: */*
```
**REST (Representational State Transfer - Transferência de Estado Representacional)**
- É um padrão arquitetural para comunicações entre aplicações
- Aproveita da estrutura que o HTTP proporciona
- Recursos são definidos via URI
- Operações com os métodos do HTTP (GET/POST/PUT/DELETE)
- Cabeçalhos (Accept/Content-Type) para especificar a representação (JSON, XML, ...)

[MIME types](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types)
**HTTP2 - Dados binários, GZIP ativo e TLS**
```
curl -v google.com.br
```





**Motivos por trás do HTTP/2**
- Com o crescimento do número de dispositivos móveis conectados a Web, é cada vez mais importante que a quantidade de dados trafegada seja a menor possível, afinal este tipo de dispositivo não costuma ter uma conexão com muita banda larga. O protocolo HTTP/2 traz diversas tecnologias para diminuir o tamanho das requisições.
- Por padrão, no protocolo HTTP versão 1.1 não é necessário o uso da camada de segurança TSL/SSL. Como hoje em dia trafegamos muitos dados críticos na Web, como senhas, logins e dados bancários, um protocolo atualizado que faz uso dessa segurança parece quase uma necessidade.
**Para que serve a tecnologia HPACK implementada no protocolo HTTP/2 ?**
- Para comprimir os Headers da comunicação HTTP, deixando-os mais leves.
**Selecione as afirmativas verdadeiras sobre as versões 1.1 e 2.0 do protocolo HTTP:**
- No HTTP/1.1 o Gzip não é nativo do protocolo, no HTTP/2 ele já vem por padrão.
- No HTTP/2 o uso do HTTPS é obrigatório, no HTTP/1.1 não.
- No HTTP/2 os dados são trafegados em binário, no HTTP/1.1 eles são trafegados como texto.
**Como a tecnologia de Headers Stateful pode nos ajudar a economizar dados?**
- Como trafegamos apenas os headers que mudam de uma requisição para outra, acabamos por economizar uma boa quantidade de dados, pois não precisamos enviar headers que mudam poucas vezes a todo momento, como o Accept.
- Quando estamos utilizando Headers Stateful, simplesmente colocamos nas requisições os cabeçalhos que se alteraram entre uma e outra, trazendo uma enorme economia de dados, visto que toda requisição HTTP possui um cabeçalho e que, muitas vezes, no HTTP/1.1, cabeçalhos repetidos eram trafegados em todas as requisições.
**HTTP2 - Server Push**
- O servidor pode empurrar para o clientes certos recursos antes mesmo de serem solicitados, pois ele consegue analisar o HTML e ver o que mais é preciso para carregar a página fazendo com que não seja necessário gastar tempo pedindo todos os outros recursos.

**HTTP2 - Multiplexação**

**HTTP/2**
- Atua sobre o que já se conhece de HTTP
- Headers binários e comprimidos (HPACK)
- GZIP padrão na resposta
- Multiplexing (requisição e respostas são paralelas)
- Headers Stateful (mandamos apenas os cabeçalhos que mudam)
- Server-Push