Wow, This article is brilliant. I learnt so much about the history of HTTP, muxing, protocol like HTTP/1HTTP/2HTTP/3 and QUIC. Thanks a lot! It is also impressive how well-designed solutions such as SSH are still relevant and viable to built great things on top off.
Now, I get why you've built qmux it seems so clear and smart at the same time, that I'm eager to read the code behind it to see how you did it 🤣.
I still have a question though, I don't understand this phrase:
"Whether the transport is WebSocket or stdio, as long as it can reliably transport ordered byte streams, qmux drops right in."
Where would you position qmux in relation to websocket? Websocket is already an application protocol, and it looks like qmux was meant to build other application layers (like websocket) but on top of QUIC or any other transports with muxing built-in.
Thanks again and I'm looking forward to hearing from you.
Take care Jeff
Websocket is arguably another application layer protocol acting as a transport protocol. It's a special case because it's one of the only ways to get bi-directional streams into the browser. With any protocol that can act as a transport you can really nest in arbitrary ways. One of the reasons not to take models like the OSI network layers too seriously.
Wow, This article is brilliant. I learnt so much about the history of
HTTP
, muxing, protocol likeHTTP/1
HTTP/2
HTTP/3
andQUIC
. Thanks a lot! It is also impressive how well-designed solutions such asSSH
are still relevant and viable to built great things on top off.Now, I get why you've built
qmux
it seems so clear and smart at the same time, that I'm eager to read the code behind it to see how you did it 🤣.I still have a question though, I don't understand this phrase:
Where would you position
qmux
in relation towebsocket
? Websocket is already an application protocol, and it looks likeqmux
was meant to build other application layers (likewebsocket
) but on top ofQUIC
or any other transports with muxing built-in.Thanks again and I'm looking forward to hearing from you.
Take care Jeff
Websocket is arguably another application layer protocol acting as a transport protocol. It's a special case because it's one of the only ways to get bi-directional streams into the browser. With any protocol that can act as a transport you can really nest in arbitrary ways. One of the reasons not to take models like the OSI network layers too seriously.
I agree. It is misleading in that case 😅