suppose i have a 4MBits network and i want to calculate the data throughput, this is considering the max transfer rate minus overhead from ethernet/IP/TCP headers.
Reading on the web i found out that the MSS ( maximum segment size) of a TCP segment is 576 – 20 – 20, these last two being TCP and IP headers overhead, resulting in a 93% of data, meaning i will be only using 93% of my 4MBits link to transfer data. Now where's the link ayer overhead? Shouldn't it be added as well? If im not wrong an ethernet header is around 46 bytes so the final sum would be 576 – 20 – 20 – 46 = 490, resulting in an 85% data throughput, but am i doing something wrong?
Calculating network throughput
ethernetiptcpthroughput
Best Answer
Just work bottom up. Regular ethernet frames (no jumbo frames, no vlan tagging) are
1542 bytes
in total and can have a payload of1500 bytes
. An Ipv4 header without options is20 bytes
and a TCP header without options also20 bytes
. So you end up with1460 bytes
possible payload of a1542 byte
link-layer frame. So your efficiency is1460/1542=0.9468223086900129
, resulting in a maximum throughput of3.7872892347600517Mbps
.Notice however this will usually be lower. This is the theoretical maximum rate for a continuous stream you can get on a full duplex link, after the TCP session is established and when you're the only user of that link. Also note that as soon as you're sending at a slightly higher rate for some time your link will get congested, you will see drops and your actual TCP throughput might drop significantly because of slow-start.
If the link is wireless (802.11) the calculation becomes a lot more complex because of RTS/CTS mechanisms, but it's about
/2
for only one active user and that's without incorporating loss, which is unrealistic.