IP Header
This topic is a very old story. But if you work in Networking area, you should know this story. May be it’s a nice tale before sleep to my son.
Long time ago, when I was still not born yet , some people outhere made an internet standard for something called Internet Protocol. This standard were documented in RFC 791. Because of this tale, you can read my blog (if you read my blog).
One of the important thing about this document is IP Header. IP Header is something look like this picture :

Look, this is the sample of IP header, captured by ethereal
Let me tell you about every block :
-
Ver is a 4 bits value represent the version of internet protocol. The value depends on what version of internet protocol we are using, for example: 4 for IPv4, 6 to IPv6, 16 for Novell IPX (RFC 1639)
-
IHL (stands for Internet Protocol Header Length) is a 4 bits value to represent the length of internet header in 32 bit words
-
Type of Services is a 8 bit value to represent the quality of service desired. The value of each bits are as shown in the picture below :
-
Total Length is a 16 bit value represent the total length (in bytes) of the datagram including the header and the data.
- Identification is a 16 bit identification value used to reassembly the fragmented packet.
- Fragment Offset is a 13 bit value to represent the location of fragmented datagram in the datagram count from the start of the original sent packet.
- TTL (stands for Time To Live) is a 8 bit value to represent the number of hop the datagram may be routed. Once the datagram reach one hop, the value is decreased by one. If the value is zero, then the datagram is destroyed.
- Protocol is 8 bit value to represent the protocol used by the datagram. For example 1 for ICMP, 6 for TCP, 17 for UDP, 50 for ESP. The list of the protocol and its value is provided by IANA in this link.
-
Header Checksum is 16 bit value to represent the 1’s complement checksum inserted by the original sender and updated by each hop the datagram was passing. The function of this checksum header is to detect the processing error in the datagram.
-
Source IP and Destination IP are 32 bits value to represent the source IP and destination IP. Then, what about IPv6 which is 128 bits? a 32 bits space for source IP and destination IP will not enough for IPv6.
Then thanks to some geeks overthere making this stuff possible. They told this things in another story and another RFC. It’s RFC 2640. Yes, their story simplified the IPv6 header. They do manything to simplify the header such as no header checksum, no fragmentation in the router, fixed length of header, etc..
These new things are … ops.. Saladin’s already sleeping. Okay son, I’ll tell you about IPv6 header in the next story. Have a nice dream. *kissing my son’s forehead* I love you.



good asrticle
Comment by ineke |
Indonesia | April 23, 2007 | Internet Explorer 6.0 on Windows XP
thanks for providing such article. however, it arise me a question. identification field is a 16 bits used to fragment and reassembly packets. so how if identification is recycle (repeat) to identify fragement. will this cause problem for the host tackle it? or will it cause any side effect for higher layer protocol?
thank you.
Comment by neo |
United Kingdom | June 9, 2007 | Mozilla Firefox 2.0.0.4 on Linux
Hi Neo. Thanks for comment. Do you mean that this case is for vpn? That the identification then is used to refragment the packet. and for this case, this is not the first identification.
Comment by Anthony Fajri |
Singapore | June 10, 2007 | Mozilla Firefox 2.0.0.4 on Windows XP
What I mean is in the case that IP packet would be fragmented and reassembled, in which identification field would be set.
When searching on the internet, I read a message (http://www.inf.ed.ac.uk/teaching/courses/cn/lect6_8.pdf), saying that `identification field should not be reused for a sufficient period’ because it might result in conflict with previous packets being fragmented. That is why I am confused due to I have no idea, 1st, why it would cause such conflict; 2nd, how to avoid this (or solution that currently internet arch takes)? 3rd, what kind of problem it would have influence on the higher level layer?
thanks your reply,
Comment by neo |
United Kingdom | June 10, 2007 | Mozilla Firefox 2.0.0.4 on Linux
[...] packet, which contain IP Header and data. So I can say that MTU is Header (which is 20 bytes for IP header) + MSS. MSS is the masimum size of data frame in [...]
Pingback by fajri.freebsd.or.id - Fragmentation |
United States | June 12, 2008 | WordPress 2.5.1