A IP datagram is a unit of data transmitted using the IP protocol, following a specific format which describes various aspects of the datagram, its source and its destination.
The IPv4 datagram consists of the following headers and fields:
Bits | Name | Description |
---|---|---|
4 | VERS | IP version number 0100 (4) or 0110 (6). |
4 | HLEN | Header length in 32-bit words, so if the number is 6, then 6 x 32 bit words are in the header i.e. 24 bytes. The maximum size is 15 x 32-bit words which is 60 bytes. The minimum size is 20 bytes or 5 x 32-bit words. |
8 | Type of Service | The TOS field. |
16 | Total Length | is the number of octets that the IP datagram takes up including the header. The maximum size that an IP datagram can be is 65,535 octets. |
16 | Identification | The Identification is a unique number assigned to a datagram fragment to help in the reassembly of fragmented datagrams. |
3 | Flags | Bit 0 is always 0 and is reserved. Bit 1 indicates whether a datagram can be fragmented (0) or not (1). Bit 2 indicates to the receiving unit whether the fragment is the last one in the datagram (1) or if there are still more fragments to come (0). |
13 | Frag Offset | in units of 8 octets (64 bits) this specifies a value for each data fragment in the reassembly process. Different sized Maximum Transmission Units (MTUs) can be used throughout the Internet. |
8 | TTL | the time that the datagram is allowed to exist on the network. A router that processes the packet decrements this by one. Once the value reaches 0, the packet is discarded. |
8 | Protocol | Layer 4 protocol sending the datagram, UDP uses the number 17, TCP uses 6, ICMP uses 1, IGRP uses 88 and OSPF uses 89. |
16 | Header Checksum | Header checksum error control. |
?? | IP Options | Optional field for testing, debugging and security. |
?? | Data | Packet contents, actual data. |
?? | Padding | Optionally, padding is added to make the datagram into multiples of 32 bits. |