A datagram is a basic transfer unit associated with a packet-switched network. Datagrams are typically structured in header and payload sections. Datagrams provide a connectionless communication service across a packet-switched network. The delivery, arrival time, and order of arrival of datagrams need not be guaranteed by the network.


See also: Packet switching § History

In the early 1970s, the term datagram was created by combining the words data and telegram by the CCITT rapporteur on packet switching,[1] Halvor Bothner-By.[2][3] While the word was new, the concept had already a long history.

In 1962, Paul Baran described, in a RAND Corporation report, a hypothetical military network having to resist a nuclear attack. Small standardized message blocks, bearing source and destination addresses, were stored and forwarded in computer nodes of a highly redundant meshed computer network.[4] "The network user who has called up a virtual connection to an end station and has transmitted messages ... might also view the system as a black box providing an apparent circuit connection".

In 1967, Donald Davies published a seminal article in which he introduced the packet and packet switching.[5] His proposed core network is similar to the one proposed by Paul Baran though developed independently. He assumes that "all users of the network will provide themselves with some kind of error control". His target is, a "common-carrier communication network". To support remote access to computer services by user terminals, which at that time were transmitted character by character, he included, at the network periphery, interface computers that convert character flows into packet flows and vise versa.

In 1970, Lawrence Roberts and Barry D. Wessler published an article about ARPANET, the first multi-node packet-switching network.[6] An accompanying paper described its switching nodes (the IMPs) and its packet formats.[7] The network core performed datagram switching as in Baran's and Davies' model, but the end-to-end principle was applied at its periphery to deal with datagram losses and reordering. A reliable message transfer service was thus offered to user computers, thus greatly simplifying the network design.

In 1973, Louis Pouzin presented his design for CYCLADES, the first large-scale network implementing the pure Davies datagram model.[8] The CYCLADES team has thus been first to tackle the highly complex problem of providing to user applications a reliable virtual circuit service[9] while using an end to end network service known to possibly produce non-negligible datagram losses and reordering. Although Pouzin's concern "in a first stage is not to make breakthrough [sic] in packet switching technology, but to build a reliable communications tool for Cyclades",[8] two members of his team, Hubert Zimmerman and Gérard Le Lann, made significant contributions to the design of Internet's TCP that Vint Cerf, its main designer, acknowledged.[10]

In 1981, the Defense Advanced Research Projects Agency (DARPA) issued the first specification the Internet Protocol (IP). It introduced a major evolution of the datagram concept: fragmentation.[11] With fragmentation, some parts of the global network may use large packet size (typically local area networks for processing power minimization), while some others may impose smaller packet sizes (typically wide area networks for response time minimization). Network nodes may split a packet of a datagram into several smaller packets of the same datagram.

In 1999, the Internet Engineering Task Force (IETF) officialised the use of the already largely deployed Network address translation (NAT) whereby each public address can be shared by several private devices.[12] With it, the forthcoming Internet Address exhaustion was delayed, leaving enough time to introduce IPv6, the new generation of Internet packets supporting longer addresses. The initial principle of full end to end network transparency to datagrams was for this relaxed: NAT nodes had to manage per-connection states, making them in part connection oriented.

In 2015, the IETF upgraded its weak "informational" recommendation of 1998, that datagram switching nodes perform active queue management (AQM), to make it a stronger and more detailed "best current practice" recommendation.[13] While the initial datagram queueing model was simple to implement and needed no more tuning than queue lengths, support of more sophisticated and parametrized mechanisms were found necessary "to improve and preserve Internet performance" (RED, ECN etc.). Further research on the subject was also called for, with a list of identified items.


The term datagram is defined as follows:[14]

"A self-contained, independent entity of data carrying sufficient information to be routed from the source to the destination computer without reliance on earlier exchanges between this source and destination computer and the transporting network."

— RFC 1594

A datagram needs to be self-contained without reliance on earlier exchanges because there is no connection of fixed duration between the two communicating points as there is, for example, in most voice telephone conversations.[15]

Datagram service is often compared to a mail delivery service; the user only provides the destination address, but receives no guarantee of delivery, and no confirmation upon successful delivery. Datagram service is therefore considered unreliable. Datagram service routes datagrams without first creating a predetermined path. Datagram service is therefore considered connectionless. There is also no consideration given to the order in which it and other datagrams are sent or received. In fact, many datagrams in the same group can travel along different paths before reaching the same destination.[citation needed]


Each datagram has two components, a header and a data payload. The header contains all the information sufficient for routing from the originating equipment to the destination without relying on prior exchanges between the equipment and the network. Headers may include source and destination addresses as well as a type field. The payload is the data to be transported. This process of nesting data payloads in a tagged header is called encapsulation.


Datagram nomenclature
OSI layer Name
Layer 4 Data segment
Layer 3 Data packet
Layer 2 Ethernet frame (IEEE 802.3)
Wireless LAN frame (IEEE 802.11)
Layer 1 Chip (CDMA)

Internet Protocol

The Internet Protocol (IP) defines standards for several types of datagrams. The internet layer is a datagram service provided by an IP. For example, UDP is run by a datagram service on the internet layer. IP is an entirely connectionless, best effort, unreliable, message delivery service. TCP is a higher level protocol running on top of IP that provides a reliable connection-oriented service.

See also


  1. ^ "The CCITT studies packet switching as part of public data network development".
  2. ^ Rémi Després (November 2010). "X.25 virtual circuits — Transpac in France — Pre-Internet data networking". IEEE Communications Magazine. 48 (10). doi:10.1109/MCOM.2010.5621965.
  3. ^ "Comment j'ai inventé le Datagramme" (in French). Archived from the original on 2019-02-28.
  4. ^ "On distributed communications networks" (PDF). Archived from the original (PDF) on 2016-10-26.
  5. ^ "A digital communication network for computers giving rapid response at remote terminals" (PDF). Archived (PDF) from the original on 2022-10-09.
  6. ^ 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). p. 543. doi:10.1145/1476936.1477020. S2CID 9343511.
  7. ^ 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). p. 551. doi:10.1145/1476936.1477021. S2CID 9647377.
  8. ^ a b Pouzen, Louis. "Presentation and major design aspects of the Cyclades network". Archived from the original on September 27, 2007.
  9. ^ Extending TCP for transactions -- Concepts. doi:10.17487/RFC1379. RFC 1379.
  10. ^ V. Cerf; Y. Dalal; C. Sunshine (December 1974). SPECIFICATION OF INTERNET TRANSMISSION CONTROL PROGRAM. Network Working Group. doi:10.17487/RFC0698. RFC 698. Obsolete. Obsoleted by RFC 7805. NIC 2. INWG 72.
  11. ^ J. Postel, ed. (September 1981). INTERNET PROTOCOL - DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION. IETF. doi:10.17487/RFC0791. STD 5. RFC 791. IEN 128, 123, 111, 80, 54, 44, 41, 28, 26. Internet Standard. Obsoletes RFC 760. Updated by RFC 1349, 2474 and 6864.
  12. ^ P. Srisuresh; M. Holdrege (August 1999). IP Network Address Translator (NAT) Terminology and Considerations. Network Working Group. doi:10.17487/RFC2663. RFC 2663. Informational.
  13. ^ F. Baker; G. Fairhurst, eds. (July 2015). IETF Recommendations Regarding Active Queue Management. Internet Engineering Task Force. doi:10.17487/RFC7567. ISSN 2070-1721. BCP 197. RFC 7567. Best Common Practice. Obsoletes RFC 2309.
  14. ^ A. Marine; J. Reynolds; G. Malkin (March 1994). FYI on Questions and Answers - Answers to Commonly asked "New Internet User" Questions. Network Working Group. doi:10.17487/RFC1594. FYI 4. RFC 1594. Obsolete. Obsoleted by RFC 2664. Obsoletes RFC 1325.
  15. ^ Tanenbaum, Andrew S.; Wetherall, David J. (2011). Computer networks, fifth edition. p. 59. ISBN 978-0-13-255317-9.