Datagram
A datagram is a basic transfer unit associated with a packet-switched network in which the delivery, arrival time, and order of arrival are not guaranteed by the network service.
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.
The Internet Protocol defines standards for several types of datagrams.
The term datagram is often considered synonymous to packet but there are some nuances. The term datagram is generally reserved for packets of an unreliable service that does not notify the user if delivery fails, while the term packet applies to any message formatted as a packet. For example, Internet Protocol (IP) provides an unreliable service and UDP over IP is also unreliable. That is why IP and UDP packets are generally called datagrams.[1]
[edit] Fragmentation
If a datagram fragments, then its fragments may be referred to as packets, but not as datagrams.[2] TCP refers to its fragments as TCP segments, not packets,[3] presumably to distinguish them from unreliable fragments.