Decoding IP headers
In the Decoding Ethernet headers recipe, we created the got_packet()
callback function that libpcap called for each packet that was captured. In this function, we showed you how to pull the Ethernet header information from the packet and created a switch
statement that called different functions based on the protocol type. In that switch
statement, we made a reference to a decodeIp()
function that is used to decode the IP headers. In this recipe, we will create this decodeIp()
function.
The IP header is a part of the second layer (Internet layer) of our header stack. Its structure is shown in the following diagram:
The components are explained as follows:
Version: This is the version of the IP packet. It can either be 4 (IPv4) or 6 (IPv6). For our examples, we will only look at IPv4.
Header Length: This indicates the number of the 32-bit words in the TCP header. The minimum value is
5
.Type of Service: This is now known as DSCP (Differentiated Services Code Point); it may...