Bah, I've signed up for the list, but don't seem to be getting the emails (wonder if someone installed a spam-blocker I don't know about on my mail server). I'll make sure I keep up to date reading the archives.
> So is the problem just that the PUSH bit isn't being set on some data segments? It certainly appears to be the case. It looks like this only happens when a segment of data larger than an ethernet frame size is sent out via java.nio.channels.SocketChannel.write(). Basically I'm sending a 3008 byte ByteBuffer and getting this behaviour. > that might just be a question of what the OS on which you're running chooses to do in its TCP stack. I'm running Windows 2000 with a Sun 1.4.0 series VM (and my face is red for not mentioning it earlier). Today I plan to try and reproduce this with a small test implementation. If I have success, expect some sniffer traces and source code to follow. I've certainly never seen a Windows program do anything similar just using the (more or less) standard Windows Sockets API. (Of course, this may just be because I don't get out enough...) -Bob [EMAIL PROTECTED] -----Original Message----- From: Guy Harris [mailto:[EMAIL PROTECTED] Sent: Thursday, February 27, 2003 9:06 PM To: Bob Eby Cc: '[EMAIL PROTECTED]' Subject: Re: [Ethereal-users] TCP ACK packets with data in them... On Thu, Feb 27, 2003 at 05:34:31PM -0800, Bob Eby wrote: > I've been using ethereal for a while now to diagnose network problems > and test software. Recently I've been working on a Java application > that sends and receives TCP data using the java.nio package. In a > recent sniffer trace I see examples of TCP ACK packets that contain > large amounts of data that resembles what I'm trying to send. At the > same time I *don't* see PUSH/ACK packets containing this same data. So is the problem just that the PUSH bit isn't being set on some data segments? If so, that might just be a question of what the OS on which you're running chooses to do in its TCP stack. If it has no API to allow a sending application to force a push, it's not a problem in java.nio, as there's nothing java.nio can do about it (except *maybe* write in a fashion that triggers pushing, *if* the OS's stack does a push if it infers from the writes being done that a push should be done - I've no idea whether any OSes do that). If it does have such an API, then it's a problem with java.nio only to the extent that it doesn't offer, say, a "push" method - but perhaps they didn't think exposing the notion of pushes was a good idea.