RFC 791: Internet Protocol
Overview
RFC 791 defines the Internet Protocol (IP) as the fundamental, connectionless, best-effort packet delivery service that underpins the Internet. It specifies a datagram model where independent packets are routed from source to destination without prior setup, leaving reliability, ordering, and flow control to higher-level protocols. The specification establishes the core semantics and operational behaviors required for interoperable internetworking among heterogeneous networks.
Datagram Format and Header Fields
The IP datagram begins with a variable-length header followed by payload data. The fixed portion of the header is 20 bytes and includes fields for version, header length, type of service, and a 16-bit total length that sets an upper bound of 65,535 bytes for the entire datagram. Essential control fields include an identification value, fragment-related flags and offset, an 8-bit time-to-live (TTL) to prevent indefinite forwarding loops, an 8-bit protocol number to demultiplex upper-layer protocols, and a 16-bit header checksum that covers only the header.
Header options, when present, extend the header length in 32-bit words and permit features such as source routing, record route, and timestamping. The Internet Header Length (IHL) field indicates the header size so receivers can locate payload data. Options are optional and may impose processing costs on routers, so they are used sparingly.
Addressing and Address Classes
IP uses 32-bit addresses to identify hosts and routers on the internetwork. The addressing architecture described in the specification supports hierarchical allocation and includes the notion of address classes as a means to partition the address space for different network sizes. Source and destination addresses in the header provide the basis for routing decisions; routers forward datagrams based on destination addresses without maintaining per-flow state.
Broadcast semantics are supported for local networks, allowing a datagram to be delivered to all hosts on a directly attached network segment. The document establishes how addresses are to be interpreted by gateways and hosts and outlines considerations for address organization to facilitate scalable routing.
Fragmentation and Reassembly
To accommodate diverse network maximum transmission units (MTUs), RFC 791 defines fragmentation: a datagram may be split into multiple fragments for transmission over a network with a smaller MTU. Each fragment carries the same identification field so the destination can recognize fragments that belong together. Fragment offsets are expressed in 8-byte units and flags indicate whether more fragments follow.
Reassembly is performed only at the final destination; routers do not reassemble fragments except under special circumstances. The specification details how to handle missing or overlapping fragments, including timeout considerations and the requirement that incomplete fragment sets be discarded if reassembly cannot be completed within a reasonable interval. The "don't fragment" (DF) flag allows a sender to request that a datagram not be fragmented.
Operational Behavior and Reliability
IP provides an unreliable, best-effort delivery service: datagrams may be lost, duplicated, or delivered out of order. Reliably delivered services are the responsibility of higher-layer protocols such as TCP. The TTL field limits packet lifetime to inhibit routing loops, and the header checksum detects corruption in the header during transit. Routers perform forwarding and minimal processing, consulting routing tables maintained by routing protocols or administrative configuration.
Error reporting and informational messages are delegated to companion protocols, notably the Internet Control Message Protocol (ICMP), which uses IP to carry its messages. Encapsulation of higher-layer protocols is mediated by the protocol field, enabling multiple transport and management protocols to coexist over IP.
Impact and Limitations
RFC 791 established a simple, extensible framework for internetworking that prioritized interoperability and router simplicity. Its design choices, 32-bit addressing, connectionless datagrams, header checksum, fragmentation model, and minimal in-network state, shaped the architecture and scaling characteristics of the Internet. Limitations noted by the specification include lack of built-in reliability, potential inefficiencies from fragmentation, and the need for careful address management; these constraints motivated later protocol evolutions and complementary technologies.
RFC 791 defines the Internet Protocol (IP) as the fundamental, connectionless, best-effort packet delivery service that underpins the Internet. It specifies a datagram model where independent packets are routed from source to destination without prior setup, leaving reliability, ordering, and flow control to higher-level protocols. The specification establishes the core semantics and operational behaviors required for interoperable internetworking among heterogeneous networks.
Datagram Format and Header Fields
The IP datagram begins with a variable-length header followed by payload data. The fixed portion of the header is 20 bytes and includes fields for version, header length, type of service, and a 16-bit total length that sets an upper bound of 65,535 bytes for the entire datagram. Essential control fields include an identification value, fragment-related flags and offset, an 8-bit time-to-live (TTL) to prevent indefinite forwarding loops, an 8-bit protocol number to demultiplex upper-layer protocols, and a 16-bit header checksum that covers only the header.
Header options, when present, extend the header length in 32-bit words and permit features such as source routing, record route, and timestamping. The Internet Header Length (IHL) field indicates the header size so receivers can locate payload data. Options are optional and may impose processing costs on routers, so they are used sparingly.
Addressing and Address Classes
IP uses 32-bit addresses to identify hosts and routers on the internetwork. The addressing architecture described in the specification supports hierarchical allocation and includes the notion of address classes as a means to partition the address space for different network sizes. Source and destination addresses in the header provide the basis for routing decisions; routers forward datagrams based on destination addresses without maintaining per-flow state.
Broadcast semantics are supported for local networks, allowing a datagram to be delivered to all hosts on a directly attached network segment. The document establishes how addresses are to be interpreted by gateways and hosts and outlines considerations for address organization to facilitate scalable routing.
Fragmentation and Reassembly
To accommodate diverse network maximum transmission units (MTUs), RFC 791 defines fragmentation: a datagram may be split into multiple fragments for transmission over a network with a smaller MTU. Each fragment carries the same identification field so the destination can recognize fragments that belong together. Fragment offsets are expressed in 8-byte units and flags indicate whether more fragments follow.
Reassembly is performed only at the final destination; routers do not reassemble fragments except under special circumstances. The specification details how to handle missing or overlapping fragments, including timeout considerations and the requirement that incomplete fragment sets be discarded if reassembly cannot be completed within a reasonable interval. The "don't fragment" (DF) flag allows a sender to request that a datagram not be fragmented.
Operational Behavior and Reliability
IP provides an unreliable, best-effort delivery service: datagrams may be lost, duplicated, or delivered out of order. Reliably delivered services are the responsibility of higher-layer protocols such as TCP. The TTL field limits packet lifetime to inhibit routing loops, and the header checksum detects corruption in the header during transit. Routers perform forwarding and minimal processing, consulting routing tables maintained by routing protocols or administrative configuration.
Error reporting and informational messages are delegated to companion protocols, notably the Internet Control Message Protocol (ICMP), which uses IP to carry its messages. Encapsulation of higher-layer protocols is mediated by the protocol field, enabling multiple transport and management protocols to coexist over IP.
Impact and Limitations
RFC 791 established a simple, extensible framework for internetworking that prioritized interoperability and router simplicity. Its design choices, 32-bit addressing, connectionless datagrams, header checksum, fragmentation model, and minimal in-network state, shaped the architecture and scaling characteristics of the Internet. Limitations noted by the specification include lack of built-in reliability, potential inefficiencies from fragmentation, and the need for careful address management; these constraints motivated later protocol evolutions and complementary technologies.
RFC 791: Internet Protocol
This work details the Internet Protocol (IP), a widely adopted communications protocol for packet-switched internetworks that forms the basis of the Internet. It covers addressing, data packet, fragmentation and reassembly, and other essential features.
- Publication Year: 1981
- Type: Technical Specification
- Genre: Computer Science, Networking
- Language: English
- View all works by Jon Postel on Amazon
Author: Jon Postel
Jon Postel, a key figure in Internet history, known for his role in developing TCP/IP and managing DNS.
More about Jon Postel
- Occup.: Scientist
- From: USA
- Other works:
- RFC 760: DoD Standard Internet Protocol (1980 Technical Specification)
- RFC 768: User Datagram Protocol (1980 Technical Specification)
- RFC 793: Transmission Control Protocol (1981 Technical Specification)
- RFC 821: Simple Mail Transfer Protocol (1982 Technical Specification)
- RFC 854: Telnet Protocol Specification (1983 Technical Specification)