IPv4 Header Structure

ASCII Diagram:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version|  IHL  |Type of Service|          Total Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Identification        |Flags|      Fragment Offset    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Time to Live |    Protocol   |         Header Checksum       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Source Address                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Destination Address                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Options                    |    Padding    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Field Descriptions

  • Version (4 bits): IP version number (4 for IPv4)

  • IHL (4 bits): Internet Header Length (number of 32-bit words in header)

  • Type of Service (8 bits): QoS parameters (precedence, delay, throughput, reliability)

  • Total Length (16 bits): Total packet length (header + data) in bytes

  • Identification (16 bits): Unique ID for packet fragmentation/reassembly

  • Flags (3 bits): Control flags (reserved, DF, MF)

  • Fragment Offset (13 bits): Position of fragment in original packet

  • Time to Live (8 bits): Packet lifetime (hops countdown)

  • Protocol (8 bits): Upper layer protocol (TCP=6, UDP=17, etc.)

  • Header Checksum (16 bits): Error checking for header only

  • Source Address (32 bits): Sender's IP address

  • Destination Address (32 bits): Recipient's IP address

  • Options (variable): Optional fields (security, routing, etc.)

  • Padding (variable): Zero padding to ensure header ends on 32-bit boundary

Notes

  • Minimum header length is 20 bytes (without options)

  • Maximum header length is 60 bytes (with options)

  • All multi-byte fields are transmitted in network byte order (big-endian)