Path: utzoo!utgpu!watserv1!watmath!att!linac!pacific.mps.ohio-state.edu!zaphod.mps.ohio-state.edu!think.com!barmar From: barmar@think.com (Barry Margolin) Newsgroups: comp.protocols.tcp-ip Subject: Re: connect "collisions" in TCP Message-ID: <1991Jan31.224331.9800@Think.COM> Date: 31 Jan 91 22:43:31 GMT References: <9101302235.AA04289@europa.InterLan.Com> Sender: news@Think.COM Organization: Thinking Machines Corporation, Cambridge MA, USA Lines: 39 In article <9101302235.AA04289@europa.InterLan.Com> kasten@EUROPA.INTERLAN.COM (Frank Kastenholz) writes: > > From: usc!cs.utexas.edu!calvert@ucsd.edu (Kenneth L. Calvert) > > 1. Can anyone cite an application or higher-level protocol that > > makes use of (or could, if it were possible) this fact, > > i.e. permits users to establish connections symmetrically? > > I can think of one possibility: the FTP data connection, > > but I don't think it works that way. > >Generally, the client/server model of communications that we use >precludes the possibility of a "connect collision". Assuming that >it was possible to cause such a thing to happen, I am not sure why >one would explicitly want to do so -- the end result is the same >regardless of whether there was such a "conenct collision" or not -- >a full duplex connection. It's unlikely to happen with client-server protocols, but I can imagine it happening with peer-peer protocols. Most such protocols that I can think of are datagram and possibly broadcast/multicast based, rather than using TCP. One application I can think of would be the use of a long-lived TCP connection to emulate a point-to-point link. This might be specified such that a particular pair of hosts always use the same pair of port numbers, i.e. instead of a well-known server port, there would be a well-known quadruple (for simplicity, both ports would probably be chosen to be the same). When a host boots, it sends out a SYNs using this well-known quad, until the connection succeeds. If the other host was up while this host was down, it will notice the out-of-sequence SYN, close its end (sending out a RST, I guess), and then try to open the connection, which should succeed using a connect collision. If both hosts were down at the same time, then when they each come up they'll start sending out SYNs, and when both are up a connection collision will occur. -- Barry Margolin, Thinking Machines Corp. barmar@think.com {uunet,harvard}!think!barmar