I am learning the basics of internet protocols and related principles. I recently performed experiments comparing UDP and TCP. But when I did that (using the ttcp program) it was only one process and only one port. IIUC we could not parallelize on the same port, but could we increase "efficiency" (throughput or even total data sent) by sending several transmissions at several ports using several processes in parallel? Why not?
If you have a single link out of the host, then your data is only sent serially, so splitting the data stream into "parallel" streams really does nothing but buffer multiple streams contending for the interface instead of one stream queuing up on the interface.
On the other hand, if you have multiple paths from your host, splitting a data stream into multiple streams can cause out-of-order packet delivery, which can be handled by TCP, but at a performance cost to reorder the data before giving it to the application on the other end, but UDP will not reorder the out-of-order data before delivering it to the application, so that must be handled by the application protocol, and it can be death to real-time protocols like VoIP or video, where late data is useless and must be discarded.
There are cases of parallel streams seem to be more efficient, such as HTTP splitting page requests into different streams for different page elements to make it appear that the various parts of the page load simultaneously. It is not really more efficient because everything is serialized, albeit interleaved, but it is more visually appealing.