Clientes e servidores se comunicam usando uma combinação de protocolos e técnicas, confiando principalmente em um
solicitação-resposta modelo. Aqui está um colapso:
1. Estabelecendo uma conexão: *
TCP (protocolo de controle de transmissão): Este é o protocolo mais comum para comunicação confiável. Ele estabelece uma conexão dedicada entre cliente e servidor, garantindo a entrega de dados ordenados e verificados por erros. Pense nisso como um telefonema - você estabelece uma conexão antes de poder falar. O "aperto de mão de três vias" é usado para configurar essa conexão.
*
udp (protocolo de datagrama do usuário): Este é um protocolo sem conexão, o que significa que não estabelece uma conexão dedicada. Os dados são enviados em pacotes e não há garantia de entrega ou pedido. É mais rápido, mas menos confiável, adequado para aplicações em que alguma perda de pacotes é aceitável (por exemplo, streaming).
2. Protocolos de comunicação: Depois que uma conexão (ou falta dela no caso da UDP) é estabelecida, vários protocolos definem o * formato * e * significado * dos dados trocados. Exemplos comuns:
*
http (protocolo de transferência de hipertexto): Usado para navegação na web. O cliente (navegador da web) envia solicitações (por exemplo, `get /index.html`) e o servidor (servidor da web) envia respostas (html, imagens, etc.). É construído no TCP.
*
https (protocolo de transferência de hipertexto seguro): HTTP sobre TLS/SSL, adicionando criptografia para comunicação segura.
*
ftp (protocolo de transferência de arquivo): Para transferir arquivos.
*
smtp (protocolo de transferência de correio simples): Para enviar e -mails.
*
POP3/IMAP: Protocolos para recuperar e -mails de um servidor.
*
websockets: Fornece um canal de comunicação persistente e bidirecional. Ao contrário do modelo de reposição de solicitação da HTTP, os websockets permitem comunicação bidirecional em tempo real. Freqüentemente usado em aplicativos de bate -papo e jogos online.
*
GRPC: Uma estrutura de RPC universal de alto desempenho e código aberto. Ele usa buffers de protocolo para serialização eficiente de dados.
3. Formato de dados: Os dados trocados precisam estar em um formato, tanto o cliente quanto o servidor. Os formatos comuns incluem:
* Formatos baseados em texto: Como JSON (notação de objeto JavaScript) ou XML (Language extensível de marcação). Estes são legíveis por humanos, mas podem ser menos eficientes que os formatos binários.
*
Formatos binários: Como buffers de protocolo ou Apache avro. Estes são mais compactos e rápidos para analisar do que os formatos baseados em texto.
4. O ciclo de solicitação-resposta (para protocolos baseados em TCP): 1.
Solicitação do cliente: O cliente inicia a comunicação enviando uma solicitação ao servidor. Esta solicitação especifica o que o cliente deseja (por exemplo, uma página da web, um arquivo etc.).
2.
Processamento do servidor: O servidor recebe a solicitação, a processa (por exemplo, recupera dados de um banco de dados) e prepara uma resposta.
3.
Resposta do servidor: O servidor envia uma resposta de volta ao cliente. Esta resposta contém os dados solicitados ou uma mensagem de erro.
4.
Manuseio do cliente: O cliente recebe a resposta e o processa (por exemplo, exibe uma página da web, salva um arquivo).
em resumo: Clientes e servidores se comunicam estabelecendo uma conexão (geralmente usando o TCP), usando um protocolo de comunicação para definir o formato da mensagem, trocando dados em um formato estruturado (por exemplo, JSON) e seguindo um padrão de resposta à solicitação (ou um padrão bidirecional no caso de websockets). Os protocolos e formatos de dados específicos usados dependem do aplicativo.