When data is transferred over a communications medium, such as the Internet or a local area network (LAN), the average transfer speed is often described as throughput. This measurement includes all the protocol overhead information, such as packet headers and other data that is included in the transfer process. It also includes packets that are retransmitted because of network conflicts or errors. Goodput, on the other hand, only measures the throughput of the original data.
Goodput can be calculated by dividing the size of a transmitted file by the time it takes to transfer the file. Since this calculation does not include the additional information that is transferred between systems, the goodput measurement will always be less than or equal to the throughput. For example, the maximum transmission unit MTU of an Ethernet connection is 1,500 bytes. Therefore, any file over 1,500 bytes must be split into multiple packets. Each packet includes header information (typically 40 bytes), which adds to the total amount of data that needs to be transferred. Therefore, the goodput of an Ethernet connection will always be slightly less than the throughput.
While goodput is typically close to the throughput measurement, several factors can cause the goodput to decrease. For example, network congestion may cause data collisions, which requires packets to be resent. Many protocols also require acknowledgment that packets have been received on the other end, which adds additional overhead to the transfer process. Whenever more overhead is added to a data transfer, it will increase the difference between the throughput and the goodput.