Work out how many segments a 3,150-byte message becomes on a 1,500-byte MTU
Work out how many segments a 3,150-byte message becomes on a 1,500-byte MTU
Answer
int mtu = 1500, ipHeader = 20, tcpHeader = 20; int mss = mtu - ipHeader - tcpHeader; // 1460 payload bytes per segment int message = 3150; // 3,000 of body plus 150 of headers int segments = (message + mss - 1) / mss; // ceiling, without floating point System.out.println(message + " bytes -> " + segments + " segments of at most " + mss);
The two subtractions are the encapsulation cost made arithmetic: every segment loses 40 bytes to the TCP and IP headers before any of your data fits. `(a + b - 1) / b` is the standard integer ceiling idiom — you will reach for it every time you cut a payload into fixed-size pieces.
Harold 4e ch1 §The Layers of a Network