Conforme a RFC 1594, um Datagrama é "uma entidade de dados completa e independente que contém informações suficientes para ser roteada da origem ao destino sem precisar confiar em trocas anteriores entre essa fonte, a máquina de destino e a rede de transporte". Um
datagrama é uma unidade de transferência básica associada a uma rede de
comutação de pacotes em que a entrega, hora de chegada, e a ordem
não são garantidos.
O termo datagrama é muitas vezes considerado sinônimo de "
pacote", mas há algumas diferenças. Em primeiro lugar, o termo pacote se aplica a qualquer mensagem formatada como um pacote, enquanto o termo datagrama é geralmente reservado para os pacotes de um serviço "não confiável". Um serviço "não confiável" não notifica o usuário se a entrega falhar. Por exemplo, o próprio
IP fornece um serviço confiável (com o auxilio do protocolo
TCP, que atua na camada de transporte), porém também disponibiliza um serviço não confiável, (Com o uso do protocolo
UDP que também atua na camada de transporte). É por isso que os pacotes UDP são geralmente chamados datagramas. Segundo, se um datagrama fragmenta-se, então seus fragmentos podem ser referidos como pacotes, mas não como datagramas. No entanto, o T
CP se refere a seus fragmentos como segmentos TCP, e não como pacotes, presumivelmente, para afirmar que seus fragmentos são confiáveis.
Um datagrama consiste de um
cabeçalho e áreas de dados, onde o cabeçalho contém informações suficientes para o roteamento do equipamento de origem para o de destino, sem depender de trocas anteriores entre o equipamento e a rede. Os endereços de origem e destino, bem como um campo de tipo são encontrados no cabeçalho de um datagrama.