https://en.wikipedia.org/wiki/Internet_Protocol_version_4 IPv4 header format +---------+-------+---------------------------------------+---------------------------------------+---------------------------------------+---------------------------------------+ | Offsets | Octet | 0 | 1 | 2 | 3 | | Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | +---------+-------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | 0 | 0 | Version [4] | IHL [>=5] | DSCP | ECN | Total length [>=20, >=4*IHL] | +---------+-------+-------------------+-------------------+-----------------------------+---------+----+----+----+----------------------------------------------------------------+ | 4 | 32 | Identification | 0 | DF | MF | Fragment offset | +---------+-------+---------------------------------------+---------------------------------------+----+----+----+----------------------------------------------------------------+ | 8 | 64 | Time to Live | Protocol | Header checksum | +---------+-------+---------------------------------------+---------------------------------------+-------------------------------------------------------------------------------+ | 12 | 96 | Source address | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 16 | 128 | Destination address | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 20 | 160 | Options (if IHL > 5) | | .. | ... | | | 56 | 448 | | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ https://en.wikipedia.org/wiki/IPv6_packet Fixed header format +---------+-------+---------------------------------------+---------------------------------------+---------------------------------------+---------------------------------------+ | Offsets | Octet | 0 | 1 | 2 | 3 | | Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | +---------+-------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | 0 | 0 | Version [6] | Traffic class (DSCP 6 + ECN 2 bits) | Flow label | +---------+-------+-------------------+---------------------------------------+-------------------+---------------------------------------+---------------------------------------+ | 4 | 32 | Payload length | Next header | Hop limit | +---------+-------+-------------------------------------------------------------------------------+---------------------------------------+---------------------------------------+ | 8 | 64 | Source Address | | 12 | 96 | | | 16 | 128 | | | 20 | 160 | | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 24 | 192 | Destination address | | 28 | 224 | | | 32 | 256 | | | 36 | 288 | | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ https://en.wikipedia.org/wiki/ICMPv6 ICMPv6 header (4 bytes): u8 type, u8 code, u16 checksum (4 bytes in) Message body... (but note in practice it's actually 4 bytes reserved, then 'real' message body at 8 bytes in) https://en.wikipedia.org/wiki/Transmission_Control_Protocol TCP segment header +---------+-------+---------------------------------------+---------------------------------------+---------------------------------------+---------------------------------------+ | Offsets | Octet | 0 | 1 | 2 | 3 | | Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | +---------+-------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | 0 | 0 | Source port | Destination port | +---------+-------+-------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | 4 | 32 | Sequence number | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 8 | 64 | Acknowledgment number (if ACK set) | +---------+-------+-------------------+-------------------+----+----+----+----+----+----+----+----+-------------------------------------------------------------------------------+ | 12 | 96 | Data Offset | Reserved (zero) | CWR| ECE| URG| ACK| PSH| RST| SYN| FIN| Window size | +---------+-------+-------------------+-------------------+----+----+----+----+----+----+----+----+-------------------------------------------------------------------------------+ | 16 | 128 | Checksum | Urgent pointer (if URG set) | +---------+-------+-------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | 20 | 160 | Options (if data offset > 5. Padded at the end with "0" bits if necessary.) | | .. | ... | | | 56 | 448 | | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ https://en.wikipedia.org/wiki/User_Datagram_Protocol UDP datagram header (8 bytes): be16 source port, destination port, length, checksum +---------+-------+---------------------------------------+---------------------------------------+---------------------------------------+---------------------------------------+ | Offsets | Octet | 0 | 1 | 2 | 3 | | Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | +---------+-------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ | 0 | 0 | Source port | Destination port | +---------+-------+-------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | 4 | 32 | Length | Checksum | +---------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+