On Wed, 2008-10-01 at 07:53 -0700, Andrew Lentvorski wrote: > SJS wrote: > > begin quoting Andrew Lentvorski as of Tue, Sep 30, 2008 at 01:48:53PM > > -0700: > >> Unfortunately, everybody forgets that TCP/IP is two state machines on > >> different computers that are in *absolute lockstep* with one another. > >> > >> Not exactly loose coupling ... > > > > This just doesn't sit right with me, for some reason. Implementation > > difficulty or adherence to an interface isn't the primary measure of > > coupling -- rather, it's how easy (or hard) it is to rip out one > > implemenation and replace it with another. > > Well, the continuing frustratation^Wmigration from IPv4 to IPv6 shows > this is *very* tightly coupled. It is not very easy to rip out. The > problem, of course, if the fact that you have to replace the state > machines on *both* sides simultaneously.
"Loosely coupled" does not mean "easy to replace". Indeed, loosely coupled interfaces often are the ones that are most difficult to replace. "Loosely coupled" does mean that you can change an implementation without breaking things. There are an insane number of different TCP/IP stacks out there. Heck, there are a ton of different TCP *algorithms* out there. Just recompiling my Linux kernel I can probably create IP stacks that behave in hundreds of different ways. Going from IPv4 to IPv6 means you are replacing the *protocol itself* and how easy it is to do that is entirely orthogonal to how loosely coupled it is. That's about how easy it is to deploy a new protocol, which isn't a function of the "coupling" at all, but rather a function of the number of nodes on the network and the costs and benefits for each node of using the new protocol. > > If the Internet isn't loosely coupled -- and don't get me wrong, I think > > this is an interesting viewpoint to consider, and I'd like to beat it to > > death -- then just what would you consider to be loosely coupled? > > I would probably define "Loosely coupled" in the context of the IntarWeb > as the ability to replace *one side* of the system with an alternative > and have it still work. Right, and I can switch between a variety of IP stacks, and stuff still works. > Generally, the issue is that of *state*. Probably a good measure of > coupling is to take the number of states per link side (n) and consider > the coupling to be (n*n)!. Not at all. A sufficiently complex interface might be stately and still be tightly coupled. > This tends to match my experience. Any man+dog can write a text web > server or client--TCP/IP stacks tend to be rare as hen's teeth and rife > with obscure bugs. I dunnoh. I seem to run in to a lot more web server and client bugs than TCP/IP bugs... --Chris -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg
