jducoeur: (Default)
[personal profile] jducoeur
Just an odd thought, as I prep for the presentation I'm about to give on the new Windows Communication Foundation: does the current "usual" network stack make any sense at all? Or has it gotten so layer-on-layer bloated as to be a bit ridiculous?

I am led to this chain of thought as I ponder the layers of a typical WCF implementation. Mind, I *like* WCF -- it's one of those "Microsoft does something right" moments, and implements a lot of really fine ideas. (It's the first really complete WS-* implementation.)

But consider how a fairly typical binding is built. At the bottom you have, essentially, UDP -- raw IP packets. On top of that is TCP, turning those raw packets into an undifferentiated stream. On top of that you have HTTP, imposing a common protocol over that stream. And on top of that, WCF takes that HTTP stream and turns it into -- packets again. (WCF is a strictly service-oriented architecture, where everything is a "Message".) And the stack begins to loop from there: if you want, you can add the WS-ReliableMessaging protocol, which adds TCP-style reliability at the next higher level up. (Yes, that sounds pointless, but it makes an odd sort of sense when you understand the rest of the architecture.) It's all rather odd-looking.

So I'm left wondering: if we knew where we were trying to be at the top level, would we have constructed this network stack underneath it? Probably not: in particular, I more and more think that TCP streams are an unfortunate side-track in the middle of the stack, the wrong way to implement order and reliability. (And the use of HTTP as a standard security workaround is just silly.)

I don't dispute the success of this stack, and I understand perfectly well how it got this way, but the end result is a bit inelegant. It's a classic case of technological evolution: sufficiently well-evolved to its scenario to function adequately, and useful for interoperability, but impressively bloated and over-complex for all that...

(no subject)

Date: 2006-11-16 05:01 pm (UTC)
dsrtao: dsr as a LEGO minifig (Default)
From: [personal profile] dsrtao
I think you're looking at a specialized view of the world.

In my world*, we have a variety of bandwidth methods (L0) which have specific local interaction protocols (L1) which all provide a way to carry IP packets (L2). That's the only ubiquitous facility. If you don't build on that, you're not part of the Rest Of The World, often called the Internet. Extremely common but not ubiquitous is TCP (L3) which offers reasonably reliable data streams. There are other L3 systems that make sense, but if you want reliable bidirectional transactions between nodes defined by IP addresses, TCP is a very well-debugged choice.

After that is an explosion, and some of them get highly layered. I really don't care about most of them.


*I can't claim that my world is better than yours, but I do think it is more generally applicable.

(no subject)

Date: 2006-11-17 05:53 am (UTC)
From: [identity profile] sichling.livejournal.com
I'm a bit confused. In my world, there is the physical layer which is L1 - for instance SONET. Then there is the link layer (L2), which is say PPP or Ethernet or ATM or such. Then is the network layer (L3) which is usually IP. TCP and UDP and RTP and so on are all L4 - the transport layer.

I'm also not sure why Justin thinks that TCP is on top of UDP? They're not stacked like that, though I guess you could picture TCP as adding functionality to UDP, but there are so many differences I'm not sure that's really useful.

(no subject)

Date: 2006-11-17 11:29 am (UTC)
dsrtao: dsr as a LEGO minifig (Default)
From: [personal profile] dsrtao
In my world, sometimes we have off-by-one errors.

(no subject)

Date: 2006-11-17 05:55 am (UTC)
From: [identity profile] sichling.livejournal.com
I should add, of course, that I think of the layer recursion happening at a much lower layer. For instance, the tunneling of frame-relay or Ethernet packets across an MPLS network or the increasing use of IP in IP or in MPLS and so on.

Profile

jducoeur: (Default)
jducoeur

June 2025

S M T W T F S
12 34567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags