Subject: Re: TCP sequence numbers.
To: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
From: Steven M. Bellovin <smb@research.att.com>
List: tech-security
Date: 03/25/1999 11:04:58
In message <199903251559.PAA14729@orchard.arlington.ma.us>, Bill Sommerfeld wri
tes:
> > Hm, I think it's not exactly linear - I used tcpdump with option -x
> > to view the packets directly. I've seen that with the time the SEQs
> > increase with a very close algorithm to time.
> >
> > BTW: This's on 1.3.2 x86 and SPARC (Well - both the same
> > source :>).
>
> Are all the connections to the same 4-tuple (src host, src port, dst
> host, dst port)? The iss should be completely random if any of the
> 4-tuple are different; otherwise, the iss should increase by a small,
> but random amount for each connection.
>
> Otherwise, see the following comment in tcp_subr.c:
>
> /*
> * If we were asked to add some amount to a known value,
> * we will take a random value obtained above, mask off the upper
> * bits, and add in the known value. We also add in a constant to
> * ensure that we are at least a certain distance from the original
> * value.
> *
> * This is used when an old connection is in timed wait
> * and we have a new one coming in, for instance.
> */
>
> The sequence numbers are still random in this case, but over a reduced
> range, because they have to be (in order to prevent stale packets from
> the old connection from being mistaken as belonging to the new one).
Also see RFC 1948.