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.
História
[editar | editar código]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,[1] Halvor Bothner-By.[2][3] 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".[4] O conceito do que hoje chamamos de circuito virtual aparece no projeto,[5] embora nenhuma rede tenha sido construída na época.
Em 1967, Donald Davies publicou um artigo seminal no qual introduziu o pacote e a comutação de pacotes. Sua proposta de rede central é semelhante à proposta por Paul Baran, embora desenvolvida de forma independente. Ele assume que "todos os usuários da rede se proverão de algum tipo de controle de erros". Seu objetivo é uma "rede de comunicação de operadora comum". Para suportar o acesso remoto a serviços de computação por terminais de usuário, que naquela época transmitiam caractere por caractere, ele incluiu, na periferia da rede, computadores de interface que convertem fluxos de caracteres em fluxos de pacotes e vice-versa.[6] Davies escreveu: "éramos realmente contra o circuito virtual, porque acreditávamos que uma rede de comunicação deveria se preocupar apenas com pacotes, e que quaisquer protocolos envolvidos na montagem desses pacotes deveriam ser feitos de ponta a ponta, entre os próprios clientes."[5]
Em 1970, Lawrence Roberts e Barry D. Wessler publicaram um artigo sobre a ARPANET, a primeira rede de comutação de pacotes com múltiplos nós.[7] Um documento complementar descreveu seus nós de comutação (os IMPs) e seus formatos de pacotes.[8] O núcleo da rede realizava a comutação de datagramas como no modelo de Baran e Davies, mas o serviço oferecido aos hosts pela rede era orientado à conexão.[9][10] Um serviço confiável de transferência de mensagens era, portanto, oferecido aos computadores dos usuários, simplificando muito o design da rede. Isso tornou a ARPANET o que viria a ser chamado de uma rede de circuito virtual.[11]
Roberts apresentou a ideia da comutação de pacotes aos profissionais de comunicação e enfrentou raiva e hostilidade. Antes da ARPANET operar, eles argumentavam que os buffers dos roteadores se esgotariam rapidamente. Depois que a ARPANET entrou em operação, argumentaram que a comutação de pacotes nunca seria econômica sem o subsídio do governo. Baran enfrentou a mesma rejeição e, portanto, não conseguiu convencer os militares a construir uma rede de comutação de pacotes.[12]
Em 1973, Louis Pouzin apresentou seu projeto para a CYCLADES, a primeira rede de larga escala a implementar o modelo puro de datagrama de Davies.[13] A equipe da CYCLADES foi, assim, a primeira a enfrentar o problema altamente complexo de fornecer às aplicações dos usuários um serviço de circuito virtual confiável[14] enquanto utilizava o princípio fim-a-fim em um serviço de rede conhecido por possivelmente produzir perdas e reordenações não negligenciáveis de datagramas.[15] Embora a preocupação de Pouzin "em um primeiro estágio não fosse realizar um avanço [sic] na tecnologia de comutação de pacotes, mas construir uma ferramenta de comunicação confiável para a Cyclades",[13] dois membros de sua equipe, Hubert Zimmerman e Gérard Le Lann, fizeram contribuições significativas para o design do TCP da Internet que Vint Cerf, seu principal designer, reconheceu.[16]
Em 1981, a Agência de Projetos de Pesquisa Avançada de Defesa (DARPA) emitiu a primeira especificação do Protocolo de Internet (IP). Ela introduziu uma grande evolução no conceito de datagrama: a fragmentação.[17] Com a fragmentação, algumas partes da rede global podem usar pacotes de tamanho grande (tipicamente redes locais para minimizar a sobrecarga de processamento), enquanto outras podem impor tamanhos de pacote menores (tipicamente redes de longa distância para minimizar o tempo de resposta). Os nós da rede podem fragmentar um datagrama em vários pacotes menores.
Em 1999, a Força-Tarefa de Engenharia da Internet (IETF) sancionou o uso do NAT (tradução de endereços de rede), já amplamente implantado, pelo qual cada endereço público pode ser compartilhado por vários dispositivos privados.[18] Com isso, a iminente exaustão de endereços de Internet foi adiada, deixando tempo suficiente para introduzir o IPv6, a nova geração do Protocolo de Internet que suporta endereços mais longos. O princípio inicial de transparência total da rede ponta a ponta para datagramas foi relaxado para isso: os nós NAT precisavam gerenciar estados por conexão, tornando-os em parte orientados à conexão.
Em 2015, a IETF atualizou sua RFC 2309 informativa de 1998[19], estabelecendo que os nós de comutação de datagramas realizem gerenciamento ativo de fila, para torná-la uma recomendação de melhores práticas atuais mais forte e detalhada através da publicação da RFC 7567. Embora o modelo inicial de enfileiramento de datagramas fosse simples de implementar e não precisasse de mais ajustes do que o comprimento das filas, o suporte a mecanismos mais sofisticados e parametrizados foi considerado necessário "para melhorar e preservar o desempenho da Internet" (RED, ECN etc.). Pesquisas adicionais sobre o assunto também foram solicitadas, com uma lista de itens identificados.[20]
Definição
[editar | editar código]O termo datagrama é definido da seguinte forma:[21]
"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."
— RFC 1594
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.[22]
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.[23]
Estrutura
[editar | editar código]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.
Exemplos
[editar | editar código]| Camada OSI | Nome |
|---|---|
| Camada 4 | Segmento TCP |
| Camada 3 | Pacote de rede |
| Camada 2 | Quadro Ethernet (IEEE 802.3) Quadro LAN sem fio (IEEE 802.11) |
| Camada 1 | Chip (CDMA) |
Protocolo de Internet
[editar | editar código]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.
Ver também
[editar | editar código]Referências
[editar | editar código]- ↑ Bothner, H. (1975). «The CCITT studies packet switching as part of public data network development». ACM SIGCOMM Computer Communication Review. 5 (2): 9–17. doi:10.1145/1024916.1024918
- ↑ Rémi Després (novembro de 2010). «X.25 virtual circuits — Transpac in France — Pre-Internet data networking». IEEE Communications Magazine. 48 (10): 40. Bibcode:2010IComM..48k..40S. doi:10.1109/MCOM.2010.5621965
- ↑ «Comment j'ai inventé le Datagramme» (em francês). Cópia arquivada em 28 de fevereiro de 2019
- ↑ «On distributed communications networks» (PDF). Cópia arquivada (PDF) em 26 de outubro de 2016
- 1 2 Pelkey, James L. (27 de maio de 1988). «Interview of Donald Davies» (PDF). p. 7
- ↑ «A digital communication network for computers giving rapid response at remote terminals» (PDF). Cópia arquivada (PDF) em 9 de outubro de 2022
- ↑ Lawrence Roberts; Barry D. Wessler (1970). «Computer network development to achieve resource sharing». Proceedings of the May 5-7, 1970, spring joint computer conference on - AFIPS '70 (Spring). [S.l.: s.n.] p. 543. doi:10.1145/1476936.1477020
- ↑ Frank E Heart; R E Kahn; Severo M Ornstein; William R Crowther; David C Walden (1970). «The interface message processor for the ARPA computer network». Proceedings of the May 5-7, 1970, spring joint computer conference on - AFIPS '70 (Spring). [S.l.: s.n.] pp. 551–567. ISBN 978-1-4503-7903-8. doi:10.1145/1476936.1477021
- ↑ «INTERFACE MESSAGE PROCESSOR Specifications for the Interconnection of a Host» (PDF). Janeiro de 2014. Cópia arquivada (PDF) em 20 de julho de 2025.
three parameters uniquely specify a connection between source and destination Hosts." "The destination IMP returns a positive acknowledgment for receipt of the message to the source IMP, which in turn passes this acknowledgment to the source Host." "Each link is unidirectional and is controlled by the network so that no more than one message at a time may be sent over it.
- ↑ Pelkey, James. «8.4 Transmission Control Protocol (TCP) 1973-1976». Entrepreneurial Capitalism and Innovation: A History of Computer Communications 1968–1988. [S.l.: s.n.]
Arpanet had its deficiencies, however, for it was neither a true datagram network nor did it provide end-to-end error correction.
- ↑ «An Interview with LOUIS POUZIN Conducted by Andrew L. Russell» (PDF). Abril de 2012.
Arpanet was virtual circuit." "essentially a virtual circuit service using internal datagram
- ↑ Roberts, L. (1 de janeiro de 1988), «The arpanet and computer networks», ISBN 978-0-201-11259-7, New York, NY, USA: Association for Computing Machinery, A history of personal workstations, pp. 141–172, doi:10.1145/61975.66916
, consultado em 30 de novembro de 2023 - 1 2 Pouzen, Louis. «Presentation and major design aspects of the Cyclades network». Cópia arquivada em 27 de setembro de 2007
- ↑ Extending TCP for transactions -- Concepts. doi:10.17487/RFC1379
. Request for Comments 1379 - ↑ Bennett, Richard (setembro de 2009). «Designed for Change: End-to-End Arguments, Internet Innovation, and the Net Neutrality Debate» (PDF). Information Technology and Innovation Foundation. pp. 7, 11. Consultado em 11 de setembro de 2017
- ↑ RFC 675
- ↑ RFC 791
- ↑ RFC 2663
- ↑ Zhang, Lixia; Partridge, Craig; Shenker, Scott; Wroclawski, John T.; Ramakrishnan, K. K.; Peterson, Larry; Clark, David D.; Minshall, Greg; Crowcroft, Jon (1 de abril de 1998). «Recommendations on Queue Management and Congestion Avoidance in the Internet». Internet Engineering Task Force. RFC 2309
- ↑ RFC 7567
- ↑ RFC 1594
- ↑ Tanenbaum, Andrew S.; Wetherall, David J. (2011). Computer networks, fifth edition. [S.l.]: Pearson. p. 59. ISBN 978-0-13-255317-9
- ↑ Packet Reordering Metrics. Novembro de 2006. doi:10.17487/RFC4737
. Request for Comments 4737
