Eu li sobre o WebSockets e me pergunto por que o navegador não pode simplesmente abrir uma conexão TCP trivial e se comunicar com o servidor como qualquer outro aplicativo de desktop. E por que essa comunicação é possível via websockets?
167
80
. Por definição, uma porta pode ser conectada SOMENTE a um aplicativo . E se um cliente quiser usar um serviço, além da web (HTTP), mas houver apenas uma porta disponível? Voila! Websockets!Respostas:
É mais fácil se comunicar via soquetes TCP quando você trabalha dentro de um limite da intranet, pois você provavelmente tem controle sobre as máquinas dessa rede e pode abrir portas adequadas para fazer as conexões TCP.
Pela internet, você está se comunicando com o servidor de outra pessoa do outro lado. Eles são extremamente improvável que haja um soquete antigo aberto para conexões. Geralmente eles terão apenas alguns padrão, como a porta 80 para HTTP ou 443 para HTTPS. Portanto, para se comunicar com o servidor, você é obrigado a se conectar usando uma dessas portas.
Dado que essas são portas padrão para servidores Web que geralmente falam HTTP, você é obrigado a estar em conformidade com o protocolo HTTP, caso contrário, o servidor não falará com você. O objetivo dos soquetes da web é permitir que você inicie uma conexão via HTTP, mas negocie para usar o protocolo de soquetes da web (supondo que o servidor seja capaz de fazê-lo) para permitir um fluxo de comunicação mais semelhante ao "soquete TCP".
fonte
Navegadores da Web operam na camada Aplicativo, enquanto o TCP opera na Camada de Transporte. Como desenvolvedor de aplicativos da web, é mais fácil enviar mensagens por cabo pela camada de aplicativos, em vez de bytes brutos na camada de transporte.
O WebSockets subjacente é o TCP, apenas abstraído para simplificar.
fonte
Websocket é um protocolo de camada de aplicativo enquanto TCP é protocolo de camada de transporte. Na camada de transporte, geralmente temos os protocolos TCP e UDP. Qualquer mensagem da camada de aplicação precisa passar pela camada de transporte para ser transmitida para outra máquina. Portanto, websocket e tcp têm um relacionamento entre si e não podem ser comparáveis.
fonte
Para simplificar, as comunicações do soquete da web são feitas pela porta TCP número 80 (ou 443 no caso de conexões criptografadas por TLS), o que é benéfico para os ambientes que bloqueiam conexões de Internet não da Web usando um firewall .
Deseja usar a porta TCP existente ou abrir uma nova porta TCP que possa estar bloqueada pelo firewall?
fonte