From owner-freebsd-net@FreeBSD.ORG Sat Nov 17 22:23:14 2007 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB29916A418 for ; Sat, 17 Nov 2007 22:23:14 +0000 (UTC) (envelope-from Hartmut.Brandt@dlr.de) Received: from smtp-1.dlr.de (smtp-1.dlr.de [195.37.61.185]) by mx1.freebsd.org (Postfix) with ESMTP id 7F65F13C458 for ; Sat, 17 Nov 2007 22:23:13 +0000 (UTC) (envelope-from Hartmut.Brandt@dlr.de) Received: from knop-beagle.kn.op.dlr.de ([129.247.173.6]) by smtp-1.dlr.de over TLS secured channel with Microsoft SMTPSVC(6.0.3790.1830); Sat, 17 Nov 2007 23:23:00 +0100 Date: Sat, 17 Nov 2007 23:23:57 +0100 (CET) From: Harti Brandt X-X-Sender: brandt_h@knop-beagle.kn.op.dlr.de To: freebsd-net@freebsd.org Message-ID: <20071117231448.U15300@knop-beagle.kn.op.dlr.de> X-OpenPGP-Key: harti@freebsd.org MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-OriginalArrivalTime: 17 Nov 2007 22:23:00.0239 (UTC) FILETIME=[6970B1F0:01C82968] Subject: TCP conformance question X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Harti Brandt List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Nov 2007 22:23:14 -0000 Hi, I was browsing through our TCP implementation and found the following: according to RFC 793 if a segment with length 0 is received its sequence number must hold: RCV.NXT <= SEG.SEQ < RCV.NXT + RCV.WND. That is, the sequence number must be within the window. Otherwise the segment is not acceptable and an ACK must be sent (see table on p. 69 of the RFC). This is meant to re-synchronize the TCPs. Our TCP responds with an ACK for all sequence numbers outside the window, except for SEG.SEQ == RCV.NXT + RCV.WND. I've no idea whether this can be a problem in bizarre loss situations or not. In any case it would be interesting to know whether this was done on purpose, or is just an implementation effect. The BSD code in 'TCP/IP Illustrated' has the same 'problem' so I suppose that behaviour is rather old. Has anybody insight into this effect? harti