Path: utzoo!attcan!uunet!dino!cs.iastate.edu!hascall From: hascall@cs.iastate.edu (John Hascall) Newsgroups: comp.protocols.tcp-ip Subject: Proper handling of PUSH & small window by sender? Message-ID: <589@dino.cs.iastate.edu> Date: 13 Feb 90 14:58:34 GMT Sender: usenet@dino.cs.iastate.edu Organization: Iowa State Univ. Computation Center Lines: 43 [I sent this a few days ago (probably with a different subject), but never saw it here, so I'm trying again (sorry if you got this twice).] Hi! I am working on a TCP implementation and have a question about the proper handling of PUSH by the sender which doesn't seem to be addressed (at least clearly) in any RFC I can find. I would greatly appreciate any information anyone might have. Say you have two chunks of data (chunk1 and chunk2) from the user and chunk1 was PUSHed but chunk2 was not. These two chunks have been held for whatever reason (window closed, unACKed data, whatever). Now, however, you are clear to send, I see three cases (associated with three different window sizes) and I am unsure what is the "right" thing to do in any of them. 3 3 3 3 3 3 3 3 3 3 4 4|4 4 4 4 4 4 4 4 5 5 5 (example sequence 0 1 2 3 4 5 6 7 8 9 0 1|2 3 4 5 6 7 8 9 0 1 2 number space) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | chunk1 | chunk2 | +-+-+-+-+-+-+-+-+-+-+-+p+-+-+-+-+-+-+-+-+-+-+-+ case 1 |<--window--->| case 2 |<----------window----------->| case 3 |<--------------------window--------------------->| Case 1: do I hold off, waiting for a bigger window? (deadlock?) do I send what I can? (efficiency?) Case 2: do I hold off, waiting for a bigger window? (doesn't seem right) do I send only chunk1 (setting PUSH) (my current guess) do I send all I can (setting PUSH) (too much pushed?) Case 3: do I send only chunk1 (setting PUSH) (correct?) do I send it all (setting PUSH) (too much pushed?) Thanks for any help, pointers, references you might have, John Hascall / Iowa State Univ / hascall@atanasoff.cs.iastate.edu