Throughput is the rate at which data is traversing a link. For example, take a look at the virtual router output below. The throughput rate is 643Kbps in each direction.
CSR1KV01#show interface gi1 | include rate
30 second input rate 643000 bits/sec, 58 packets/sec
30 second output rate 643000 bits/sec, 58 packets/sec
Goodput is the rate at which useful data traverses a link. Assuming an uncongested path between endpoints, goodput and throughput will be as close as they are theoretically able to be.
The difference between goodput and throughput is that throughput is the measurement of all data flowing through a link whether it is useful data or not, while goodput is focused on useful data only. Throughput measurements, such as those reported by router interface statistics, cannot distinguish the nature of the data flowing through the interface — merely that bits have gone past. Throughput is not the same as goodput because throughput can include undesirable data such as data retransmissions, or overhead data such as protocol wrappers.
In the case of TCP/IP, retransmissions occur because TCP data did not make it to the recipient in a timely fashion. Receivers signal to senders with an ACK that data was received. If a sender does not receive an expected ACK for a block of data, it will retransmit that data. Retransmissions are a waste of bandwidth; the same data traversing a link twice is definitely not part of goodput. Although there are many reasons that retransmissions can occur, they very often happen during times of interface congestion. This means that while a completely full interface has maximized its throughput, it has very likely not maximized its goodput. In fact, the greater the onslaught of data congesting the interface, the larger the number of retransmissions will be.
Besides retransmissions, protocol overhead — the packet and frame headers and other data wrapped around application data — is also excluded from goodput measurement. While goodput is not a common measurement offered by network devices, data analytics software can often generate a goodput rate.