Datagrama
Um datagrama é uma unidade básica de transferência associada a uma rede de comutação de pacotes. Os datagramas são tipicamente estruturados em seções de cabeçalho (header) e carga útil (payload). Os datagramas fornecem um serviço de comunicação sem conexão através de uma rede de comutação de pacotes. A entrega, o tempo de chegada e a ordem de chegada dos datagramas não precisam ser garantidos pela rede.
Imagem: Tpdkuroi · BY-SA · Openverse
No início da década de 1970, o termo datagrama foi criado pela combinação das palavras dado (data) e telegrama pelo relator do CCITT sobre comutação de pacotes, Halvor Bothner-By. Embora a palavra fosse nova, o conceito já possuía uma longa história. Em 1964, Paul Baran descreveu, em um relatório da RAND Corporation, uma rede militar hipotética que deveria resistir a um ataque nuclear. Pequenos "blocos de mensagens" padronizados, contendo endereços de origem e destino, eram armazenados e encaminhados em nós de computadores de uma rede em malha altamente redundante. Baran escreveu: "O usuário da rede que solicitou uma conexão virtual a uma estação final e transmitiu mensagens... também pode visualizar o sistema como uma caixa preta que fornece uma conexão de circuito aparente". O conceito do que hoje chamamos de circuito virtual aparece no projeto, embora nenhuma rede tenha sido construída na época.
Imagem: JSegarraF · BY-SA · Openverse
O termo datagrama é definido da seguinte forma: "Uma entidade de dados independente e autocontida, carregando informações suficientes para ser roteada do computador de origem ao de destino sem depender de trocas anteriores entre este computador de origem e destino e a rede de transporte." Um datagrama precisa ser autocontido, sem depender de trocas anteriores, porque não há conexão de duração fixa entre os dois pontos de comunicação, como ocorre, por exemplo, na maioria das conversas telefônicas de voz. O serviço de datagrama é frequentemente comparado a um serviço de entrega de correio; o usuário fornece apenas o endereço de destino, mas não recebe garantia de entrega nem confirmação após o recebimento bem-sucedido. O serviço de datagrama é, portanto, considerado não confiável. O serviço de datagrama roteia os dados sem criar primeiro um caminho predeterminado. O serviço de datagrama é, portanto, considerado sem conexão. Também não há consideração quanto à ordem em que ele e outros datagramas são enviados ou recebidos. De fato, muitos datagramas do mesmo grupo podem viajar por caminhos diferentes antes de chegar ao mesmo destino em uma ordem diferente.
Imagem: Protoplasmakid · BY-SA · Openverse
Cada datagrama possui dois componentes: um cabeçalho (header) e uma carga útil de dados (payload). O cabeçalho contém todas as informações suficientes para o roteamento do equipamento de origem ao destino, sem depender de trocas prévias entre o equipamento e a rede. Os cabeçalhos podem incluir endereços de origem e destino, bem como campos de tipo e comprimento. A carga útil são os dados a serem transportados. Esse processo de aninhar cargas úteis de dados em um cabeçalho marcado é chamado de encapsulamento.
Protocolo de Internet
O Protocolo de Internet (IP) define padrões para vários tipos de datagramas. A camada de internet é um serviço de datagrama fornecido por um IP. Por exemplo, o UDP é executado por um serviço de datagrama na camada de internet. O IP é um serviço de entrega de mensagens inteiramente sem conexão, de melhor esforço (best effort) e não confiável. O TCP é um protocolo de nível superior executado sobre o IP que fornece um serviço confiável orientado à conexão.


