On a typical linux machine, how many times would packets be copied from the application layer to all the way in its journey to the network card. I am assuming the protocol being used here is TCP/IP with the standard implementation of linux kernel network stack and no custom modifications.
I am aware that TCP maintains a buffer (or a window) for congestion and flow control and the size of this window determines how many packets you can send at once before waiting for ACKs. So, at least one copy has to be performed from application's memory into the operating system's transport layer handler memory. From there on, more processing would be done as in putting on IP header and header at Ethernet layer.
I am expecting a detailed description.