[Rede de Computadores] Protocolo de Camada de Aplicação HTTP

Prefácio

Pelo estudo anterior, já sabemos que um acordo é na verdade um acordo, que exige que ambas as partes compreendam a mensagem da outra parte. O protocolo na camada de aplicação não pertence ao sistema operacional. Ele é personalizado por nós mesmos. Contanto que ambas as partes possam entendê-lo, vamos aprender sobre o protocolo HTTP hoje.

URL

O que é url:
Insira a descrição da imagem aqui

urlencode e urldecode

O URL não foi projetado apenas para http. Espera-se que o URL seja usado por todos os protocolos de rede. No entanto, o protocolo estipula que caracteres não-ASCII não podem aparecer, portanto, caracteres não-ASCII devem ser escapados. Por exemplo, na imagem, /?: e assim por diante foram tratados como caracteres especiais. Se quiser representar esses caracteres separadamente, você deve primeiro escapar dos caracteres especiais.

Regras:
Converta os caracteres que precisam ser transcodificados em hexadecimal.
Faça um dígito para cada dois dígitos, adicione% na frente e codifique como% XY

Por exemplo:
seu hexadecimal é 0xE4BDA0 (utf-8)
%E4%BD%A0

Formato HTTP

  • perguntar
    Insira a descrição da imagem aqui

  • Primeira linha: método + url + versão

  • Cabeçalho: atributos solicitados, pares de valores-chave separados por dois pontos; cada grupo é separado por \n; uma linha em branco indica o final

    • Conexão: conexões longas e curtas. Conexões longas permitem o recebimento de múltiplas solicitações; conexões curtas são desconectadas após a resposta.
  • Corpo: A linha em branco é seguida pelo conteúdo do corpo. O Corpo pode ser definido como uma string vazia; se o corpo existir, haverá um Content-Length no Cabeçalho para identificar o comprimento do corpo.

  • resposta

Insira a descrição da imagem aqui

  • Primeira linha: número da versão + código de status + explicação do código de status
  • Cabeçalho: o atributo da resposta, que também é um par chave-valor. As regras são as mesmas acima.
  • Corpo: Abaixo da linha em branco está o corpo. Se o servidor retornar uma interface, a página html estará no corpo.

método

GET e POST são os mais comuns, entre os quais GET obtém recursos e POST transmite entidades de recursos.

<form action = "a/c.exe",method="GET">
    姓名:<input type="text" name="myname" value="输入姓名"><br/>
    密码:<input type="text" name="mypass" value=""><br/>
    
    <input type="submit" value="submit"><br/>
</form>

A diferença entre os métodos GET e POST:
Insira a descrição da imagem aqui


Insira a descrição da imagem aqui
A diferença entre GET e POST:

  • Dados: GET coloca os dados na URL e POST os coloca diretamente no texto.
  • Tamanho: GET é limitado pelo tamanho da URL e não pode ser muito longo. POST pode ser maior.
  • Segurança: GET é exposto diretamente na URL e não é adequado para transmissão de dados confidenciais, enquanto POST é relativamente mais seguro.

Código de status HTTP

  • 1XX: Código de status da informação, a solicitação recebida está sendo processada
  • 2XX: Código de status de sucesso, a solicitação é processada normalmente.
  • 3XX: Código de status de redirecionamento: ação adicional necessária para concluir a solicitação
  • 4XX: Código de erro do cliente: O servidor não pode processar a solicitação
  • 5XX: Código de erro do servidor: O servidor encontrou um erro ao processar a solicitação.

Redirecionar

Redirecionamento temporário: Não altera nenhuma informação de endereço do navegador.
Redirecionamento permanente: Um redirecionamento permanente alterará os favoritos locais do navegador.

Redirecionar para a página inicial do qq:

    std::string response;
    response += "HTTP/1.0 302 Found" + SEP;
    response += "Location: https://www.qq.com/" + SEP;
    response += SEP;

Os principais cenários de uso do redirecionamento temporário incluem: manutenção de sites antigos, saltos de publicidade ativa, etc. O
redirecionamento permanente não é comum em nosso uso. Os mecanismos de pesquisa precisam rastrear periodicamente os dados de toda a rede. Se um site redirecionado permanentemente for rastreado, ele modificará o salto correspondente diretamente.

Cabeçalhos comuns HTTP

  • Tipo de conteúdo: tipo de solicitação
  • Comprimento do conteúdo: comprimento do corpo.
  • Host: O cliente informa ao servidor em qual host e porta o recurso solicitado está.
  • User-Agent: declara o sistema operacional e a versão do navegador do usuário (informações forjadas pelo anti-crawler)
  • referer: de qual página a página atual é redirecionada
  • location: usado com 3 para escrever um código de status de redirecionamento
  • Cookie: armazena uma pequena quantidade de informações sobre o cliente para implementar funções de sessão

Persistência de sessão

O próprio HTTP não tem estado - os acessos não podem ser lembrados. http não está diretamente envolvido, mas o usuário precisa manter a sessão, portanto, se o usuário está online deve ser registrado.

Cookies são uma tecnologia usada para armazenar em cache as informações do nosso usuário. O navegador trará automaticamente as informações dos cookies que salvamos e as enviará para o site correspondente. No entanto, fazer isso é arriscado: expomos diretamente as informações do usuário ao mundo exterior. Se isso as informações do cookie forem obtidas por um intermediário, não apenas a conta do site será roubada, mas também será extremamente provável que as informações pessoais sejam roubadas.

A prática comum atual é que o servidor mantenha suas informações de maneira uniforme. Depois de fazer login e verificar, o servidor formará um objeto de sessão e retornará o sessionid (exclusivo) ao nosso cliente. O arquivo cookie do cliente armazena apenas esse sessionid. Neste Dessa forma, mesmo que você seja interceptado no meio, você não precisa se preocupar com o vazamento de informações do usuário.

Ao mesmo tempo, o servidor também fará alguns trabalhos de identificação, como detectar se o seu IP está anormal, se os dados estão anormais, etc... Com base nessas anormalidades, sua sessão será inválida.

Conclusão

Apesar disso, o protocolo HTTP ainda é inseguro. Embora a solicitação de postagem evite o cache do navegador e não possa ser compartilhada e marcada diretamente, cookies e sessões também tentam garantir a segurança das informações do usuário, mas ainda existem muitos problemas de segurança: a solicitação de postagem é capturado pela rede, ao efetuar login, foi interceptado por um intermediário ao efetuar login. Para resolver esses problemas de segurança, precisamos introduzir um novo protocolo: HTTPS.

Acho que você gosta

Origin blog.csdn.net/m0_73209194/article/details/132157688
Recomendado
Clasificación