Hi Zack,
Hmm DCCP looks pretty cool but how supported is it? Games and p2p just use UDP and TCP right now.
It's in linux kernel, but the firewalls and NATs virtually prevent it to be used on WAN.
Originally I think a mistake was made in the design of the internet where it should have gone IP->UDP->TCP instead of IP->UDP and IP->TCP. That way if TCP worked, UDP would have too, and we wouldn't have run into the problems with NAT we have now for UDP. Although NAT issues are by design in many ways, so perhaps we still would have. I realize that TCP header savings used to be important but I don't think they are nearly as much now except for wireless.
I think you underestimate human ability to screw things :) Interesting related paper btw: http://tools.ietf.org/html/draft-tschofenig-hourglass-00
Mainly what I would like is a wrapper that turns an unreliable layer like UDP into a reliable one. Like literally give me a socket that acts like a TCP socket but uses UDP internally. I thought about implementing this somehow as a library that returns a pipe to the process but didn't get far with it. I'm still reading about nanomsg and it looks like it doesn't maintain its own queues, so I'm wondering if it's even possible.
If you want it to behave like TCP, why not simply use TCP? What are the TCP shortcomings you are trying to overcome?
Martin