Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rutgers!mit-eddie!genrad!decvax!decwrl!ucbvax!G.BBN.COM!CLYNN From: CLYNN@G.BBN.COM Newsgroups: comp.protocols.tcp-ip Subject: Re: Re: A New TCP Retransmission Algorithm Message-ID: <[G.BBN.COM]21-Apr-87.18:12:38.CLYNN> Date: Tue, 21-Apr-87 17:12:00 EST Article-I.D.: <[G.BBN.COM]21-Apr-87.18:12:38.CLYNN> Posted: Tue Apr 21 17:12:00 1987 Date-Received: Wed, 22-Apr-87 06:16:51 EST References: <870420213143.005848@MIT-MULTICS.ARPA> Sender: daemon@ucbvax.BERKELEY.EDU Distribution: world Organization: The ARPA Internet Lines: 29 Sure, I'll admit to backing up the window, but not to doing it "illegally". The spec says in the "Managing the Window" section that there is an assumption that the window size is related to the currently available data buffer space available for the connection; that is in fact the case - the user/application supplies one or more buffers to be filled with data and the amount of space provided specifies the window. The spec also says in the "Data Communication" section that a Push requires that any data be placed into the user's buffer and the buffer returned to the user even if it is not full. Consequently, the window is reduced by the amount of unused space in the buffer returned to the user in response to a Push. Since there is justification in the spec for reducing the window, and the spec requires senders to deal with it, it is also used in one other case. If a packet is lost, as indicated by reception of several segments in the window but not at the left edge, the window is reduced to the right edge of the missing data to "encourage" the sender to retransmit the missing data and to "discourage" it from sending additional new data or from retransmitting data which was in fact received but couldn't be acked. (If the sender ignores the hint, which we might call a NAK, nothing goes wrong; the receiver will eventually send ICMP Source Quenches which shouldn't be ignored and if that doesn't work packets will be flushed.) This case can be viewed as a situation where the user has provided buffer space but it cannot be used due to the missing segment(s). If a connection is receiving something from the TCP at the other end, even "obsolete acknowledgements", why shouldn't it be kept "alive"? Charlie