Table of Contents

Internet Protocol Datagram

The title of this RFC is “Internet Protocol Datagram” (RFC 791)

A datagram is a basic unit of data that is transferred across a network using the Internet Protocol (IP). In the context of networking, a datagram is a self-contained message that includes both the data payload and the necessary information in the IP header to route the message to its destination. Unlike a stream-based protocol, such as TCP, datagram transmission is inherently connectionless, meaning each datagram is handled independently of others. The related RFC is RFC 791, which defines the structure of an IP datagram and the fields within its header. https://en.wikipedia.org/wiki/Datagram https://tools.ietf.org/html/rfc791

Datagrams play a fundamental role in the IP layer, which operates at the network layer of the OSI model. At this layer, each datagram is routed individually through the network, and there is no guarantee that the packets will arrive in the same order they were sent or even reach the destination. The IP protocol does not provide error correction or guarantee delivery, leaving these tasks to higher-layer protocols, such as TCP. This makes datagrams efficient for applications where rapid, lightweight communication is required. The related RFC is RFC 1122, which outlines requirements for Internet hosts using IP. https://en.wikipedia.org/wiki/OSI_model https://tools.ietf.org/html/rfc1122

One of the critical features of an IP datagram is its header, which contains key information used for routing and delivering the datagram to its destination. The header includes fields such as the source and destination IP addresses, the protocol used (e.g., TCP or UDP), and various flags and control fields. The total length of the datagram is also specified in the header, which allows receiving devices to know how much data to expect. The related RFC is RFC 791, which defines the structure and fields of the IP header. https://en.wikipedia.org/wiki/IPv4 https://tools.ietf.org/html/rfc791

The datagram transmission model is used by both IPv4 and IPv6. In IPv4, the datagram consists of the header followed by the data payload, with the header length being variable depending on whether options are used. The IPv6 datagram has a fixed header size, which simplifies processing and improves performance. Both protocols handle datagram fragmentation if the datagram is too large to be transmitted over a link with a smaller MTU. In such cases, the datagram is broken into smaller fragments, each with its own header, and reassembled at the destination. The related RFC is RFC 2460, which specifies IPv6 handling of datagrams and fragmentation. https://en.wikipedia.org/wiki/IPv6 https://tools.ietf.org/html/rfc2460

Fragmentation is one of the challenges associated with datagram transmission. If a datagram exceeds the MTU of the network path, it must be fragmented. Each fragment is treated as an individual datagram, with its own header and Fragment Offset field. The destination device must reassemble the fragments in the correct order to recreate the original datagram. If any fragment is lost, the entire datagram is discarded, requiring retransmission. The related RFC is RFC 1191, which describes Path MTU Discovery to avoid fragmentation whenever possible. https://en.wikipedia.org/wiki/Maximum_transmission_unit https://tools.ietf.org/html/rfc1191

While datagrams are commonly associated with connectionless protocols such as UDP, they are also used in connection-oriented protocols like TCP. UDP transmits individual datagrams without establishing a connection or ensuring delivery, making it suitable for time-sensitive applications such as video streaming or online gaming. In contrast, TCP uses datagrams as part of a connection, with mechanisms in place to ensure that the data is received in the correct order and without errors. The related RFC is RFC 768, which defines the UDP protocol and its usage of datagrams. https://en.wikipedia.org/wiki/User_Datagram_Protocol https://tools.ietf.org/html/rfc768

Datagrams are often used in applications where low latency is critical, and the occasional loss of data is acceptable. For instance, VoIP and real-time video streaming rely on UDP datagrams because these applications prioritize speed over guaranteed delivery. Since each datagram is independent, lost packets do not prevent the remainder of the transmission from proceeding, allowing for continuous playback even in the presence of packet loss. However, this also means that datagrams are not ideal for applications that require reliability, such as file transfers, where every byte of data must be received correctly. The related RFC is RFC 3550, which specifies the Real-time Transport Protocol (RTP) used for media streaming over datagrams. https://en.wikipedia.org/wiki/Real-time_Transport_Protocol https://tools.ietf.org/html/rfc3550

Conclusion

The title of this RFC is “Internet Protocol Datagram (RFC 791).” A datagram is a core component of IP networking, enabling connectionless communication between devices on a network. It provides a flexible and efficient means of transferring data, particularly in applications where speed and simplicity are more important than guaranteed delivery. While fragmentation and packet loss can pose challenges, datagrams remain a fundamental part of modern network communications, particularly in UDP-based applications. The efficiency of datagrams ensures their continued use in high-performance networks and real-time applications.