A quick question about TCP/IP
Aug. 6th, 2014 01:51 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
I was reading about TCP, congestion, etc. because of some presentation slides (which I wish I had the notes for, because I'd like the explanations that go with some of them.
And I realised that there was an inefficiency I was seeing. And the reason may be historical, or (entirely likely) something I'm just overlooking.
Why does _every_ packet requires an acknowledgement packet? Chances are that most packets are travelling as part of a set of packets - probably the maximum possible for the window size. So rather than taking up bandwidth sending back a load of them, why not delay a trivial amount of time after the first packet arrives and then acknowledge the highest number for which you have all of the previous packets?
You wouldn't want to delay long - but then you shouldn't need to - you'd generally expect that the next n packets would be arriving immediately behind each other, so acknowledging only only once every n milliseconds should work pretty effectively.
So if packets 2-6 arrive, send an ACK saying "*6" (or some equivalent signal), rather than five separate acks? I know ACK packets are tiny, but it still seems wasteful.
Anyone who's knowledgable in the area care to fill me in?
And I realised that there was an inefficiency I was seeing. And the reason may be historical, or (entirely likely) something I'm just overlooking.
Why does _every_ packet requires an acknowledgement packet? Chances are that most packets are travelling as part of a set of packets - probably the maximum possible for the window size. So rather than taking up bandwidth sending back a load of them, why not delay a trivial amount of time after the first packet arrives and then acknowledge the highest number for which you have all of the previous packets?
You wouldn't want to delay long - but then you shouldn't need to - you'd generally expect that the next n packets would be arriving immediately behind each other, so acknowledging only only once every n milliseconds should work pretty effectively.
So if packets 2-6 arrive, send an ACK saying "*6" (or some equivalent signal), rather than five separate acks? I know ACK packets are tiny, but it still seems wasteful.
Anyone who's knowledgable in the area care to fill me in?
no subject
Date: 2014-08-07 08:50 am (UTC)There are products that, as part of WAN optimisation/acceleration, will proxy TCP flow elements to eliminate much of TCP's chattiness/overhead.
no subject
Date: 2014-08-07 09:28 am (UTC)