I'm currently studying Internet protocols and had a question regarding the IP datagram.
Within the IP header I am aware there is a field called "total length" which specifies the total length of the particular fragmented datagram in bits. However, while reading the textbook ("TCP/IP Illustrated Vol. 1") I read that "a host is not required to be able to receive an IPv4 datagram larger than 576 bytes."
If it says that it's "not required," then doesn't it mean that it technically would be able to transport it? Why is there such a limit in terms of the IP MTU?
One thing that I came across while studying TCP reminded me of this question I asked previously.
TCP is a transport layer (layer 4 in the conventional OSI model) protocol that runs encapsulated inside the lower network layer (layer 3) protocol. This is also where the Internet "power horse" known as IP is used.
All protocols have a specific kind of header, and in the case of IP and TCP, both of their headers have a minimum of length 20 bytes (in TCP's case, the maximum length is 60 bytes including options added at the end).
TCP protocol use things called "segments" which are equivalent to packets for other protocols. The maximum segment size (MSS) is "the largest segment that a TCP is willing to receive from its peer and, consequently, the largest size its peer should ever use when sending." (TCP/IP Illustrated, Vol. 1, 2e p. 606).
The MSS is usually specified as an option in the TCP header, but if it's not specified then the default size is 536 bytes. Recall that the IP header and TCP basic header are both a minimum of 20 bytes. This means: 20 (IP header) + 20 (TCP header) + 536 (default MSS) = 576 bytes.
Thus, the minimum required packet size that IPv4 hosts should be able to process are 576 bytes.