On Fri, Feb 28, 2003 at 05:42:43PM -0800, Bob Eby wrote: > So, now that I know what's happening what do I do with it? I'm not > exactly a network guru here, I don't know whether to go to Sun and > Microsoft to make a stink about this, I guess the first question is "is this a problem"? You send 1600 bytes over the wire; that requies one 1460-byte TCP segment and one 140-byte TCP segment. As you're sending it in one call, you presumably don't expect that the receiver will necessarily get notified until the entire packet's worth of data arrives. As such, there's no reason to expect any of the segments other than the last one to have the PUSH bit set. > or if I just attempt to ignore it Is there even anything to ignore? I.e., is it making any difference to your application? If so, what difference is it making? Note that if you send N bytes over TCP, there is no guarantee that a single receive operation on the other end of the connection will get exactly N bytes - it might get more or fewer. If you want to put packet boundaries into a TCP stream, you will have to put them there yourself - TCP exports a byte-stream abstraction, not a sequenced-packet abstraction. > and chock it up as one minor pothole on the information superhighway. It's just a characteristic of TCP in general, and of the Windows 2000 implementation of TCP in particular - although other TCP implementations might well do the same thing, i.e. if you write more than a single TCP segment's worth of data in a single "send data" operation, at least some TCP implementations might set the PUSH bit only on the last segment. > As a start I was hoping someone would duplicate my results and help > affirm that this isn't merely a problem in ethereal or WinPCap. This is not the result of an Ethereal or WinPcap problem; there's no need to try anything to affirm that. WinPcap is just a passive tap, and doesn't magically cause PUSH bits to disappear; Ethereal isn't even a tap, it's just an application that uses a tap to capture packets, saves those packets, and then reads them in and analyzes them. You're seeing exactly what went out over the wire, and it's perfectly legitimate according to the TCP specification.
Powered by MHonArc 2.6.10