An IPv6 packet consists of an IPv6 header, extension headers, and an upper-layer protocol data unit. Figure 4-1 shows the structure of an IPv6 packet.
Figure 4-1. The structure of an IPv6 packet
The components of an IPv6 packet are the following:
The IPv6 header is always present and is a fixed size of 40 bytes. The fields in the IPv6 header are described in "IPv6 Header" in this chapter.
Zero or more extension headers can be present and are of varying lengths. A Next Header field in the IPv6 header indicates the first extension header. Within each extension header is another Next Header field, indicating the next extension header. The last extension header indicates the header for the upper-layer protocol—such as Transmission Control Protocol (TCP), User Datagram Protocol (UDP), or Internet Control Message Protocol version 6 (ICMPv6)—contained within the upper-layer protocol data unit.
The IPv6 header and extension headers replace the existing IPv4 header and its options. The new extension header format allows IPv6 to be enhanced to support future needs and capabilities. Unlike options in the IPv4 header, IPv6 extension headers have no maximum size and can expand to accommodate all of the extension data needed for IPv6 communication. IPv6 extension headers are described in "IPv6 Extension Headers" in this chapter.
The upper-layer protocol data unit (PDU) typically consists of an upper-layer protocol header and its payload (for example, an ICMPv6 message, a TCP segment, or a UDP message).
The IPv6 packet payload is the combination of the IPv6 extension headers and the upper-layer PDU. Normally, it can be up to 65,535 bytes long. IPv6 packets with payloads larger than 65,535 bytes in length, known as jumbograms, can also be sent.