How come only the first part of my datagram is getting through?
Unix Socket FAQ for Network programming
(Continued from previous question...)
How come only the first part of my datagram is getting through?
This has to do with the maximum size of a datagram on the two machines
involved. This depends on the sytems involved, and the MTU (Maximum
Transmission Unit). According to "UNIX Network Programming", all
TCP/IP implementations must support a minimum IP datagram size of 576
bytes, regardless of the MTU. Assuming a 20 byte IP header and 8 byte
UDP header, this leaves 548 bytes as a safe maximum size for UDP
messages. The maximum size is 65516 bytes. Some platforms support IP
fragmentation which will allow datagrams to be broken up (because of
MTU values) and then re-assembled on the other end, but not all
implementations support this.
Another issue is fragmentation. If a datagram is sent which is too
large for the network interface it is sent through, then the sending
host will fragment it into smaller packets which are reassembled by
the receiving host. Also, if there are intervening routers, then they
may also need to fragment the packet(s), which greatly increases the
chances of losing one or more fragments (which causes the entire
datagram to be dropped). Thus, large UDP datagrams should be avoided
for applications that are likely to operate over routed nets or the
Internet proper.
(Continued on next question...)
Other Interview Questions
|