Upon researching, from my own understanding, throughput is the "measurement of ALL data flowing through a link" and goodput is the "measurement of USEFUL data flowing through a link". Knowing this, can I apply this with something similar to text messaging?

For a general example, if I were to send a text message to my Dad, what would be the throughput and goodput in that situation?

For a more specific example, I'm working on a type of mobile wireless messaging using Wi-Fi Direct on Android, if the message that I will be sending from one node to another is considered the "Data" of the throughput, what would the goodput be in this situation?

Can someone kindly enlighten me, please? If possible, I want to know more examples regarding both throughput and goodput.


You will have headers for the various protocols involved in sending the application data.

The application may have application-layer protocols, and each will add some size to the data you are sending. The transport-layer protocol used will add a header to that. The network-layer protocol will add a header, and then the data-link protocol will add a header.

With a small amount of original data, the protocols in use may add a significant size to the original message. For example, sending the original data of "Hello" would add protocol overhead of several times the original data for what is actually sent on the wire.

The useful data is simply the data ("Hello") sent from the application on the source host to the application on the destination host. The protocol overhead plus the original data is what is actually sent from host to host, with the source host adding the overhead to the source application data, and the destination host stripping it off before passing it to the destination application.

  • I kind of grasped the concept of it, but to further elaborate, I apologize if this sounds stupid but what exactly is a protocol overhead? Can you please briefly explain? From my own understanding, please correct me if I'm wrong, in basic terms, its like additional information needed in order to send original data to the destination host, correct? But once the destination host grabs a hold of the data, it removes the overhead since it doesn't need it anymore and puts it in the application. – jam Sep 27 '18 at 4:18
  • For example, ethernet adds a header that has the source and destination MAC addresses, the ethertype, and a footer for the frame check sequence. IPv4 has a minimum 20-byte header, and IPv6 has a 40-byte header. TCP uses a 20-byte header, while UDP uses an 8-byte header. It all depends on which protocol is used at each layer of the network stack, plus whatever overhead the application adds. – Ron Maupin Sep 27 '18 at 4:28
  • Thank you for the response, I have one more clarification, can throughput and goodput be used as a measurement for testing of sending data without needing access to internet/ethernet? – jam Sep 27 '18 at 4:33
  • I don't understand that question. You can test and measure on two hosts directly connected, on the same LAN, on a network of a few LANs, etc. You will want to test and measure on something similar to where you want to deploy. – Ron Maupin Sep 27 '18 at 4:42
  • So if goodput is throughput minus the various overheads, what is bandwidth? (Because many define throughput as bandwidth minus the various overheads). There seems to be a lot of ambiguity – Daniel Jun 26 '20 at 11:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.