A principal diferença entre os soquetes sem conexão (datagrama) e orientados para conexão (fluxo) está na maneira como eles lidam com a transmissão de dados:
soquetes sem conexão (por exemplo, UDP): *
sem estabelecimento de conexão: Antes de enviar dados, não há configuração de handshake ou conexão entre o remetente e o receptor. Cada pacote é independente e enviado individualmente.
*
Entrega não confiável: Os pacotes podem ser perdidos, duplicados ou chegam fora de ordem. Não há garantia de entrega.
*
mais rápido: Como não há sobrecarga de configuração de conexão, eles oferecem velocidades de transmissão mais rápidas. Isso ocorre porque há menos latência inicial.
*
inferior sobrecarga: Menos processamento é necessário por pacote.
*
sem controle de fluxo: O remetente não sabe se o receptor pode lidar com a taxa de dados; apenas envia.
*
sem controle de congestionamento: O remetente não ajusta sua taxa de envio com base nas condições da rede.
*
Entrega de melhor esforço: A rede faz o possível para entregar os pacotes, mas não oferece garantias.
*
Adequado para: Aplicações em que a perda de dados ocasional é aceitável e a velocidade é fundamental, como jogos on -line, streaming (com correção de erros), pesquisas de DNS e VoIP (às vezes).
soquetes orientados para a conexão (por exemplo, TCP): *
Estabelecimento de conexão: Um aperto de mão de três vias (Syn, Syn-ack, ACK) é realizado antes da transmissão de dados começar a estabelecer uma conexão confiável.
*
Entrega confiável: Os pacotes são entregues na ordem em que foram enviados e mecanismos como reconhecimentos (ACKs) e retransmissões garantem entrega confiável. Pacotes perdidos ou danificados são enviados novamente.
*
mais lento: A configuração da conexão adiciona latência.
*
Sobrecarga mais alta: Mais processamento está envolvido devido à verificação de erros e controle de fluxo.
*
Controle de fluxo: O remetente adapta sua taxa de envio para corresponder à capacidade do receptor, impedindo a sobrecarga do receptor.
*
Controle de congestionamento: O remetente ajusta sua taxa de envio com base no congestionamento da rede para evitar sobrecarregar a rede.
*
Entrega ordenada: Os pacotes são garantidos para chegar na ordem em que foram enviados.
*
Adequado para: Aplicativos que exigem transmissão de dados confiáveis, como navegação na Web (HTTP), transferência de arquivo (FTP), email (SMTP) e comunicação segura (SSH).
em suma: Escolha soquetes sem conexão quando a velocidade e a baixa sobrecarga forem críticas e alguma perda de dados é aceitável. Escolha soquetes orientados para a conexão quando a entrega confiável de dados for essencial. A escolha geralmente depende dos requisitos do aplicativo.