Skip to content
IPv4 Headers
step 1/5

Reading — step 1 of 5

Read

~1 min readFrames & IP

IPv4 Headers

Every IP packet starts with a fixed-format header (20 bytes minimum).

 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                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Key fields:

  • Version: 4 (or 6 in IPv6).
  • IHL: header length in 32-bit words (5 = 20 bytes, no options).
  • Total Length: header + payload bytes.
  • TTL: decremented by each router; 0 → drop.
  • Protocol: 6 = TCP, 17 = UDP, 1 = ICMP.
  • Header Checksum: sum of all 16-bit words, ones-complement.
  • Source / Destination: 4-byte IPs.
python

Checksum computation: split into 16-bit words, sum (with carry wrap), bitwise-not.

Discussion

Ask a question, share an insight, or help someone who’s stuck.

Sign in to post a comment or reply.

Loading…