[BXXPwg] Flow Control again
Mon, 24 Jul 2000 12:07:47 +0800
This is a good book, and I like the picture Figure 20.5 in 20_3 especially.
I had thought that when the sender receives an ack, it will SLIDE the send
window. That is a big misunderstanding.
Not SLIDE the window, when the sender receives an ack the sender will only
ADVANCE the LEFT edge of the send window.
Another pointer is that the window size is relative to the sequence number.
When the sender receives the window size
updates, it will move the RIGHT edge of the send window according to
current position of LEFT edge. The formula is
Wnd.Right = Wnd.Left + Tcb.WndSize; So there are three possible occassions.
First, the RIGHT edge keeps its possition.
Second, the RIGHT edge of the send window will be moved to right, advancing
its old possition. Third, the RIGHT edge of the
send window will be moved to LEFT, which is so called "Shrinking the
Window", which is discouraged in TCP spec. .
So first indicating a big value, and then a small value, doesn't mean
shrinking the window. The window size in the TCP
segment is RELATIVE.
In BXXP, there is no ack for messages, each message is assumed to be
delivered reliably. So when the sender sends a message,
it ADVANCEs the LEFT edge of the send window. When it receives the SEQ
message, it moves the right edge of the send window.
But "Shrinking the Window" is NOT ALLOWED in BXXP. So after a channel has
been created, the window size is determined. It can
only be enlarged.