{"id":841,"date":"2026-03-01T09:59:27","date_gmt":"2026-03-01T09:59:27","guid":{"rendered":"https:\/\/networkingnotebook.com\/?p=841"},"modified":"2026-03-01T10:01:41","modified_gmt":"2026-03-01T10:01:41","slug":"ipv6-header","status":"publish","type":"post","link":"https:\/\/networkingnotebook.com\/?p=841","title":{"rendered":"IPv6 Header"},"content":{"rendered":"\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"428\" data-id=\"843\" src=\"https:\/\/networkingnotebook.com\/wp-content\/uploads\/2026\/03\/image-1024x428.jpg\" alt=\"\" class=\"wp-image-843\" srcset=\"https:\/\/networkingnotebook.com\/wp-content\/uploads\/2026\/03\/image-1024x428.jpg 1024w, https:\/\/networkingnotebook.com\/wp-content\/uploads\/2026\/03\/image-300x126.jpg 300w, https:\/\/networkingnotebook.com\/wp-content\/uploads\/2026\/03\/image-768x321.jpg 768w, https:\/\/networkingnotebook.com\/wp-content\/uploads\/2026\/03\/image-1536x643.jpg 1536w, https:\/\/networkingnotebook.com\/wp-content\/uploads\/2026\/03\/image.jpg 1568w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p>Today I am going to talk about the IPv6 header and the purpose of each field inside of the header. The IPv6 header unlike the IPv4 header is fixed meaning it will always remain 40 bytes. It consists of similar fields as IPv4 but with different names. (PIC)&nbsp;<\/p>\n\n\n\n<p><strong>Version-<\/strong> The IPv6 header starts off with a field called \u201cVersion,\u201d which is 4 bits long. This field is solely to let the receiving device know what IP version is being used. It is similar to the version field in IPv4, but this field will always be set to 6 to indicate that the header is IP version 6 which turns out in binary of (0110.)\u00a0<\/p>\n\n\n\n<p><strong>Traffic Class-<\/strong> The next field that follows the version is still in the first row and it is called \u201cTraffic Class,\u201d and is 8 bits long. The traffic class field is used to identify and prioritize different types of traffic to influence per hop behavior on the path to their destination.This field is very similar to the IPv4 differentiated services field. They even contain the same two sub-fields with the same amount of bits. The first 6 bits belong to DSCP (Differentiated Services Code Point), which is used to classify and provide markings to packets to influence the type of per hop behavior that packet will receive such as being placed in certain queues that will get preferred treatment over other queues. The last 2 bits of traffic class is ECN (Explicit Congestion Notification) which allows for routers to communicate congestion without having to drop any packets. In order for ECN to work effectively, routers along the path must support ECN (ECN-Capable), and when congestion is starting to be experienced while the packet is being routed, the router to detect the congestion will adjust the ECN field to a CE flag meaning &#8220;congestion experienced.\u201d The final receiver notices this and sends the next packet with the ECN field flagged with \u201cECN-echo.\u201d When the sender gets that packet marked with \u201cECN-echo,\u201d it will begin to slow down its transmission without having to have multiple dropped packets.\u00a0<\/p>\n\n\n\n<p><strong>Flow Label-<\/strong> The field that follows the traffic class is \u201cFlow Label\u201d and is 20 bits long. This is the last field in the first row, and its purpose is to mark packets that belong to the same flow. A flow in this context means a sequence of packets sent from a source to destination that may require special handling such as QOS policies. As you may know packets are not always sent as a one and done. In a phone call, analog signals are continually being transformed into digital data and being sent to the same source and destination back and forth (in regards to IP phone to IP phone calls.) Flow label is a field that allows routers along the path to identify sequences of packets that belong to the same flow without having to look at the entire header or performing DPI (Deep Packet Inspection.) This allows routers along the path to identify the type of packet quickly for this example VoIP, and place it into its configured queue quickly as well in this case probably an LLQ (Low Latency Queue.)\u00a0<\/p>\n\n\n\n<p><strong>Payload Length-<\/strong> The first row is finally done, and the second row starts off with \u201cPayload Length\u201d which is 16 bits long. This does exactly what the name says it does and it provides the length of the data portion in bytes following the fixed 40 byte header. This does not include the header unlike \u201cTotal Length\u201d in IPv4 which included both the header and the payload. In IPv6 there are fields called \u201cextension headers\u201d which provide flexibility outside the fixed header and it is also counted in the payload length.\u00a0<\/p>\n\n\n\n<p><strong>Next Header-<\/strong> The field that comes right after payload length is \u201cnext header\u201d and it is 8 bits long. This field is used to identify the type of data that follows the fixed 40 byte header. The two options it can indicate are either an extension header or an upper layer protocol such as TCP or UDP. Upper layer protocols will use specific values per protocol so 6 for TCP, 58 for ICMPv6, and 17 for UDP.\u00a0<\/p>\n\n\n\n<p>Extension headers are unique to IPv6 in that they add additional functionality if chosen to. The type of features that extension headers provide are IPSec headers, fragmentation header, and destination options. There are many more options but I chose the most common ones. As you may know, VPNs use IPSec&nbsp; to encapsulate original packets and put a new header on the outer fields. IPv6 natively gives IPSec an option to do so.&nbsp;<\/p>\n\n\n\n<p>Fragmentation header also can be added. When a packet is fragmented in order for the receiver to be able to put it back in order correctly, they need information that will allow them to do so. In the fragmentation extension header, there is a fragment offset which is an identifier of the fragment in the position of the original packet. It includes a M flag as well to indicate if there are more fragments coming (set to 1), or if the packet is the last fragment(set to 0). It also includes identification which is unique to that certain set of fragmented packets are all a part of the same original packet. The identification is the same number on each of the fragments, so the receiver will not be confused as to which packet it came from. This is very similar to the 2nd row of the IPv4 header, except instead it is an extension.&nbsp;<\/p>\n\n\n\n<p>The last type of extension header that I am going to talk about is destination options. This is an extension header that carries optional information that is only meant for the intended recipient to process. Every other router along the path will see this and ignore it. These usually include metadata that is only relevant to the intended recipient.&nbsp;<\/p>\n\n\n\n<p><strong>Hop Limit- <\/strong>The final field in the third row is \u201cHop Limit\u201d which is 8 bits as well. This functions in similarity to TTL (Time to Live) meaning that it is fundamentally used to prevent routing loops. A route will be assigned a certain number of hop limits such as 64. This means a packet will not be able to traverse more than 64 routers within its life. Every router that processes this IPv6 packet will decrement the hop limit by 1 before it forwards it to another router. When the router has reached a router and the hop limit has become 0, it will send an ICMPv6 message back to the sender saying \u201cTime Exceeded,\u201d similarity to IPv4 TTL. A hop limit of 64 would mean it can traverse a maximum 63 routers, being discarded at the 64th router.\u00a0<\/p>\n\n\n\n<p><strong>Source and Destination- <\/strong>The final two rows of the IPv6 header are source and destination IPv6 address. The source IPv6 allows the receiver to know where the packet came from, and also provides a return address so it will know who to send the reply to. The destination IPv6 address allows the router to be able to know where to forward the packet to according to the routing table. The routing table does not really change, so when a router receives an IPv6 packet it decapsulates the packet all the way up to the network layer (stops at layer 3), looks at the destination IPv6 address, looks up the destination network on the routing table, find the route tied to the specific network address that the destination IPv6 belongs, and creates a new ethernet frame with the link-layer address (MAC address) of the next hop (exactly like IPv4).<br><br>As you can see, although IPv6 comes with a lot of different things than IPv4, there still manages to be a significant amount of similarities despite that. From fragmentation, to the hop limit, to the \u201clife of a packet\u201d packet flow. The IPv6 header may look leaner; it is still around 20 bytes larger (if options aren\u2019t used) because of how large the IPv6 addresses are.\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I am going to talk about the IPv6 header and the purpose of each field inside of the header. The IPv6 header unlike the IPv4 header is fixed meaning it will always remain 40 bytes. It consists of similar fields as IPv4 but with different names. (PIC)&nbsp; Version- The IPv6 header starts off with&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-841","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=\/wp\/v2\/posts\/841","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=841"}],"version-history":[{"count":2,"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=\/wp\/v2\/posts\/841\/revisions"}],"predecessor-version":[{"id":844,"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=\/wp\/v2\/posts\/841\/revisions\/844"}],"wp:attachment":[{"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/networkingnotebook.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}