質問

I am trying to learn how TCP Flow Control works when I came across the concept of receive window.

My question is, why is the TCP receive window scale-able? Are there any advantages from implementing a small receive window size?

Because as I understand it, the larger the receive window size, the higher the throughput. While the smaller the receive window, the lower the throughput, since TCP will always wait until the allocated buffer is not full before sending more data. So doesn't it make sense to have the receive window at the maximum at all times to have maximum transfer rate?

役に立ちましたか?

解決

My question is, why is the TCP receive window scale-able?

There are two questions there. Window scaling is the ability to multiply the scale by a power of 2 so you can have window sizes > 64k. However the rest of your question indicates that you are really asking why it is resizeable, to which the answer is 'so the application can choose its own receive window size'.

Are there any advantages from implementing a small receive window size?

Not really.

Because as I understand it, the larger the receive window size, the higher the throughput.

Correct, up to the bandwidth-delay product. Beyond that, increasing it has no effect.

While the smaller the receive window, the lower the throughput, since TCP will always wait until the allocated buffer is not full before sending more data. So doesn't it make sense to have the receive window at the maximum at all times to have maximum transfer rate?

Yes, up to the bandwidth-delay product (see above).

A small receive window ensures that when a packet loss is detected (which happens frequently on high collision network),

No it doesn't. Simulations show that if packet loss gets above a few %, TCP becomes unusable.

the sender will not need to resend a lot of packets.

It doesn't happen like that. There aren't any advantages to small window sizes except lower memory occupancy.

他のヒント

After much reading around, I think I might just have found an answer.

Throughput is not just a function of receive window. Both small and large receive windows have their own benefits and harms.

A small receive window ensures that when a packet loss is detected (which happens frequently on high collision network), the sender will not need to resend a lot of packets.

A large receive window ensures that the sender will not be idle a most of the time as it waits for the receiver to acknowledge that a packet has been received.

The receive window needs to be adjustable to get the optimal throughput for any given network.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top