Quote:
Originally Posted by Florida-Rob
I still think its a mistake forcing TCP
|
At one point during the standard's development, everything was based on UDP for exactly the reasons you gave. The "send and forget" model of UDP is very attractive for small microcontrollers.
As development progressed there were several cases where both ends of the communication link needed to have a consistent view of the protocol state. UDP is an unreliable transport, so maintaining consistency meant building a re-send/re-try/reliability layer on top of UDP.
We actually tried to design this. But building a reliability layer that can handle lost and re-ordered packets over a network with latency and multiple packets in-flight simultaneously meant we were effectively re-implementing the full complexity of TCP in the application layer.
At that point it made more sense to use the standard Layer 3 protocol that already existed rather than develop something new at the application Layer. TCP has existed for decades, and is well understood, and well debugged.
I was perhaps the biggest advocate for the "All UDP" model. I've spent much of my life working with small MCUs, and counting every byte of SRAM and EPROM. But in the end it became clear that using TCP was the best solution, and that it would result in better interoperability.