Datagrama: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
GKNishimoto (discussão | contribs)
GKNishimoto (discussão | contribs)
Etiqueta: Inserção de predefinição obsoleta
 
Linha 1:
Um '''datagrama''' é uma unidade de transferência básica associada a uma [[Comutação de pacotes|rede de comutação de pacotes]]. Os datagramas são normalmente estruturados em seções de [[cabeçalho]] e [[Carga útil (computação)|carga útil]]. Os datagramas fornecem um serviço de <!-- [[:en:Connectionless communication]] -->comunicação sem conexão em uma rede comutada por pacotes. A entrega, a hora de chegada e a ordem de chegada dos datagramas não precisam ser garantidas pela rede.
Conforme a RFC 1594, um '''Datagrama''' (ou '''Trama''') é "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'''.
 
==História==
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.<ref name="kurose">Kurose, James F. & Ross, Keith W. (2007), "Redes de Computadores e a Internet: Uma Abordagem Top-down" ISBN 8588639971</ref> Segundo, se um datagrama [[Fragmentação IP|fragmenta-se]], então seus fragmentos podem ser referidos como pacotes, mas não como datagramas. No entanto, o T[[TCP|CP]] se refere a seus fragmentos como [[Transmission Control Protocol#Estrutura do segmento TCP|segmentos TCP]], e não como pacotes,<ref name="rfc793">RFC 793</ref> presumivelmente, para afirmar que seus fragmentos são confiáveis.
 
No início dos anos 1970, o termo datagrama foi criado pela combinação das palavras ''data'' e ''telegram'' pelo relator do [[Setor de Normatização das Telecomunicações|''CCITT'']] sobre comutação de pacotes,<ref>{{cite web|title=O ''CCITT'' estuda a comutação de pacotes como parte do desenvolvimento da rede pública de dados|url=https://www.deepdyve.com/lp/association-for-computing-machinery/the-ccitt-studies-packet-switching-as-part-of-public-data-network-TU05NzohPP|language=en}}</ref> <!-- [[:en:Halvor Bothner-By]] -->Halvor Bothner-By.<ref>{{cite web|title=Circuitos virtuais X.25 - Transpac na França - Rede de dados pré ''Internet''|url=https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5621965|language=en}}</ref><ref>{{cite web|url=http://old.open-root.eu/la-doc/histoire-des-reseaux/le-datagramme/|urlmorta=sim|archive-url=https://web.archive.org/web/20190228065633/http://old.open-root.eu/la-doc/histoire-des-reseaux/le-datagramme/|archive-date=2019-02-28|title=Como eu inventei o datagrama|language=fr}}</ref>
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.
 
Embora a palavra fosse nova, o conceito já tinha uma longa história.
== Ver também ==
 
* [[Padrão federal 1037C]]
Em 1962, [[Paul Baran]] descreveu, em um relatório da [[RAND Corporation|corporação de pesquisa e desenvolvimento (''RAND Corporation'')]], uma rede militar hipotética tendo que resistir a um ataque nuclear. Pequenos "''blocos de mensagem''" padronizados, contendo endereços de origem e destino, foram [[Store-and-forward|armazenados e encaminhados]] em ''nós'' de computadores de uma rede de computadores em malha altamente redundante.<ref>{{cite web|title=Em redes de comunicações distribuídas|url=http://pages.cs.wisc.edu/~akella/CS740/F08/740-Papers/Bar64.pdf|urlmorta=sim|archive-url=https://web.archive.org/web/20161026145448/https://pages.cs.wisc.edu/~akella/CS740/F08/740-Papers/Bar64.pdf|archive-date=2016-10-26|language=en}}</ref> "O usuário da rede que acessou uma "''conexão virtual''" com uma estação final e transmitiu mensagens ... também pode ver o sistema como uma caixa preta fornecendo uma conexão de circuito aparente".
 
Em 1967, [[Donald Davies]] publicou um artigo seminal no qual introduziu as palavras agora amplamente utilizadas ''[[pacote]]'' e [[comutação de pacotes]].<ref>{{cite web|title=Uma rede de comunicação digital para computadores com resposta rápida em terminais remotos|url=https://people.mpi-sws.org/~gummadi/teaching/sp07/sys_seminar/how_did_erope_blow_this_vision.pdf|language=en}}</ref> Sua rede principal é semelhante à de Paul Baran, embora tenha sido projetada de forma independente. Para lidar com permutações de datagramas (devido a preferências de roteamento atualizadas dinamicamente) e perdas de datagramas (inevitáveis quando as fontes rápidas enviam para destinos lentos), ele assume que "todos os usuários da rede se fornecerão algum tipo de controle de erro" (o que será chamado mais tarde em um serviço de ''datagrama puro''). Seu alvo é, pela primeira vez na comutação de pacotes, uma "rede de comunicação de operadora comum". Para oferecer suporte ao acesso remoto a serviços de computador por terminais de usuário, que naquela época transmitia em geral carácter por carácter, ele incluiu na interface de rede computadores que convertem fluxos de caracteres em fluxos de pacotes e vice-versa.
 
Em 1970, Lawrence Roberts e Barry D. Wessler publicou um artigo sobre a [[ARPANET|rede da agência para projetos de pesquisas avançadas (''ARPANET'')]], a primeira rede de comutação de pacotes de vários nós.<ref>{{cite web|url=https://www.researchgate.net/profile/Lawrence_Roberts/publication/234815171_Computer_Network_Development_to_Achieve_Resource_Sharing/links/546d0ac50cf2193b94c57d5a/Computer-Network-Development-to-Achieve-Resource-Sharing.pdf|title=Desenvolvimento de rede de computadores para alcançar o compartilhamento de recursos|author1=Lawrence Roberts|author2=Barry D. Wessler|year=1970|doi=10.1145/1476936.1477020|language=en}}</ref> Um documento acompanhante descreveu seus nós de comutação (os ''IMPs'') e seus formatos de pacote.<ref>{{cite web|author1=Frank E Heart|author2=R E Kahn|author3=Severo M Ornstein|author4=William R Crowther|author5=David C Walden|url=https://dl.acm.org/doi/10.1145/1476936.1477021|doi=10.1145/1476936.1477021|title=O processador de mensagens de interface para a rede de computadores ''ARPA''|language=en}}</ref> O núcleo da rede executou a comutação de datagramas como no modelo de Baran e Davies, mas uma provisão foi adicionada dentro da rede, em seu contorno exterior, para lidar com perdas e permutações de datagramas. Um serviço confiável de transferência de mensagens foi, portanto, oferecido aos computadores dos usuários, simplificando muito seu próprio trabalho e o mantendo menos dependente de pesquisas futuras.
 
Em 1973, [[Louis Pouzin]] apresentou seu projeto para a <!-- [[:en:CYCLADES]] -->''Cyclades'', a primeira rede de tamanho real implementando o modelo de datagrama puro de Donald Davies.<ref>{{cite web|title=Apresentação e os principais aspectos do projeto da rede ''Cyclades''|url=http://rogerdmoore.ca/PS/CYCLB.html|archive-url=https://web.archive.org/web/20070927205826/http://rogerdmoore.ca/PS/CYCLB.html|archive-date=27-09-2007|language=en}}
</ref> A equipe da ''Cyclades'' foi, portanto, a primeira a enfrentar o problema altamente complexo de fornecer às aplicações do usuário um serviço de circuito virtual confiável (o equivalente a uma conexão do protocolo de controle de transmissão (''TCP'') da ''Internet'')<ref>{{cite web|title=Estendendo o ''TCP'' para transações - Conceitos|url=https://datatracker.ietf.org/doc/html/rfc1379|rfc=1379|doi=10.17487/RFC1379|language=en}}</ref>, enquanto usa um serviço de rede ponto a ponto conhecido por possivelmente produzir perdas não desprezíveis de datagramas e permutações. Embora a preocupação de Pouzin "em um primeiro estágio não seja fazer um avanço na tecnologia de comutação de pacotes, mas construir uma ferramenta de comunicação confiável para a ''Cyclades''", dois membros de sua equipe, <!-- [[:en:Hubert Zimmermann]] -->Hubert Zimmerman e <!-- [[:en:Gérard Le Lann]] -->Gérard Le Lann, deram contribuições significativas para o ''design'' do protocolo de controle de transmissão (''TCP'') da ''Internet'' que [[Vint Cerf]], seu principal ''designer'', reconheceu.<ref>{{cite web|title=Especificação do programa de controle de transmissão da ''Internet''|url=https://datatracker.ietf.org/doc/html/rfc675|rfc=675|doi=10.17487/RFC0675|language=en}}</ref>
 
Em 1981, a [[Defense Advanced Research Projects Agency|agência de projetos de pesquisa avançada de defesa (''DARPA'')]] emitiu a primeira especificação do [[Protocolo de Internet|protocolo de ''Internet'' (''IP'')]]. Ela introduziu uma grande evolução do conceito de datagrama: <!-- [[:en:IP fragmentation]] -->fragmentação.<ref>{{cite web|title=Protocolo de ''Internet'' - especificação do protocolo do programa de ''Internet'' ''Darpa''|url=https://datatracker.ietf.org/doc/html/rfc791|rfc=791|doi=10.17487/RFC0791|language=en}}</ref> Com a fragmentação, algumas partes da rede global podem usar grandes tamanhos de pacote (normalmente [[Rede de área local|redes locais]] para minimizar o poder de processamento), enquanto outras podem impor tamanhos menores de pacotes (normalmente [[Rede de longa distância|redes de longa distância]] para minimizar o tempo de resposta). Os nós da rede podem dividir um pacote de datagrama em vários pacotes menores do mesmo datagrama.
 
Em 1999, a [[Internet Engineering Task Force|força tarefa de engenharia da ''Internet'' (''IETF'')]] oficializou o uso da [[Network address translation|tradução de endereços de rede (''NAT'')]] já amplamente implantada, por meio da qual cada endereço público pode ser compartilhado por vários dispositivos privados.<ref>{{cite web|title=Terminologia e considerações do tradutor de endereço de rede ''IP'' (''NAT'')|url=https://datatracker.ietf.org/doc/html/rfc2663|rfc=2663|doi=10.17487/RFC2663|language=en}}</ref> Com ela, o iminente [[Exaustão do IPv4|esgotamento dos endereços da ''Internet'']] foi atrasado, deixando tempo suficiente para introduzir o [[IPv6|protocolo de ''Internet'' versão 6 (''IPv6'')]], a nova geração de pacotes de ''Internet'' que suportam endereços mais longos (maiores). O princípio inicial de transparência de rede ponta a ponta para datagramas foi relaxado para isso: os ''nós'' de(a) tradução de endereços de rede (''NAT'') tiveram que gerenciar estados por conexão, os tornando em parte <!-- [[:en:Connection-oriented communication]] -->orientados à conexão.
 
Em 2015, a [[Internet Engineering Task Force|força tarefa de engenharia da ''Internet'' (''IETF'')]] atualizou sua recomendação "informativa" fraca de 1998, de que os ''nós'' de comutação de datagrama executam <!-- [[:en:Active queue management]] -->gerenciamento ativo de fila (''AQM''), para a tornar uma recomendação de <!-- [[:en:Best current practice]] -->"melhor prática atual" mais forte e detalhada.<ref>{{cite web|title=Recomendações da ''IETF'' sobre o gerenciamento de fila ativa|url=https://datatracker.ietf.org/doc/html/rfc7567|rfc=7567|doi=10.17487/RFC7567|language=en}}</ref> Embora o modelo inicial de enfileiramento de datagramas fosse simples de implementar e não precisasse de mais ajustes do que comprimentos de fila, o suporte de mecanismos mais sofisticados e parametrizados foi considerado necessário "para melhorar e preservar o desempenho da Internet" (<!-- [[:en:Random early detection]] -->detecção inicial aleatória (''RED''), [[Explicit Congestion Notification|notificação de congestionamento explícita (''ECN'')]] e etc.). Também foram necessárias novas pesquisas sobre o assunto, com uma lista de itens identificados.
 
==Definição==
 
A RFC 1594 define o termo datagrama da seguinte forma:
 
{{quote|“Uma entidade independente e autocontida de dados que transporta informações suficientes para serem roteadas da origem ao computador de destino sem depender de trocas anteriores entre este computador de origem e de 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 há, por exemplo, na maioria das conversas telefônicas de voz.<ref>{{cite book|last1=Tanenbaum|last2=Wetherall|first1=Andrew S.|first2=David J.|title=Redes de computadores, quinta edição|year=2011|page=59|isbn=978-0-13-255317-9|language=en}}</ref>
 
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 nenhuma garantia de entrega e nenhuma confirmação após a entrega bem sucedida. O serviço de datagrama é, portanto, considerado <!-- [[:en:Reliability (computer networking)]] -->não confiável. O serviço de datagrama roteia datagramas sem primeiro criar um caminho predeterminado. O serviço de datagrama é, portanto, considerado <!-- [[:en:Connectionless communication]] -->sem conexão. Também não há consideração dada à ordem em que ele e outros datagramas são enviados ou recebidos. Na verdade, muitos datagramas no mesmo grupo podem viajar por caminhos diferentes antes de chegar ao mesmo destino. [Carece de fontes?]
 
==Estrutura==
 
UmCada datagrama consistepossui dedois componentes, um [[cabeçalho]] e áreasuma [[Carga útil (computação)|carga útil]] de dados,. onde oO cabeçalho contém todas as informações suficientes para o roteamento do equipamento de origem para o deao destino, sem depender de trocas anterioresprévias entre o equipamento e a rede. Os cabeçalhos podem incluir endereços de origem e destino, bem como um campo de tipo. A carga útil são encontradosos nodados cabeçalhoa serem transportados. Esse processo de aninhamento de cargas úteis de dados em um datagrama.cabeçalho marcado é chamado de [[Encapsulamento (rede)|encapsulamento]].
 
==Exemplos==
 
{| class="wikitable"
|+ Nomenclatura do datagrama
! Camada do ''OSI''
! Nome
|-
| Camada 4
| Segmento de dados
|-
| Camada 3
| [[Pacote|Pacote de dados]]
|-
| Camada 2
| <!-- [[:en:Ethernet frame]] -->Quadro (''IEEE 802.3'')<br/><!-- [[:en:IEEE 802.11#Layer 2 .E2.80.93 Datagrams]] -->Quadros (''IEEE 802.11'')<br/>[[Asynchronous Transfer Mode#Célula ATM|Célula (''ATM'')]]
|-
| Camada 1
| <!-- [[:en:Chip (CDMA)]] -->''Chip'' (''CDMA'')
|}
 
===Protocolo de ''Internet''===
 
O [[Protocolo de Internet|protocolo de ''Internet'' (''IP'')]] define padrões para vários tipos de datagramas. A <!-- [[:en:Internet layer]] -->camada de ''internet'' é um serviço de datagrama fornecido por um protocolo de ''Internet'' (''IP''). Por exemplo, o [[Protocolo de datagrama do usuário|protocolo de datagrama do usuário (''UDP'')]] é executado por um serviço de datagrama na camada da ''Internet''. O protocolo de ''Internet'' (''IP'') é um serviço de entrega de mensagens totalmente sem conexão, de melhor esforço e não confiável. O [[Protocolo de controle de transmissão|protocolo de controle de transmissão (''TCP'')]] é um protocolo de nível superior executado em cima do protocolo de ''Internet'' (''IP'') que fornece um serviço orientado a conexão confiável.
 
== Ver também ==
 
* [[Soquete de rede]]
* [[Quadro (redes)]]
 
{{== Referências}} ==
{{Reflist}}
 
[[Categoria:RedesUnidades de computadoresinformação]]
[[Categoria:Estruturas de dados]]