RFC 7540 – HTTP2
A lot of this sounds like transport layer instead of application layer.  I'm curious why it ended up in HTTP instead of TCP.For example, you could specify that ports 49152 to 50179 formed a block on a given host, and so on in groups of 1028.  Ports in a block would have to connect to the same port on the other end, and would share a packet buffer.  There could be some rules to let the network stack pass on data to a process in anticipation of a three way handshake completing, TLS could assume that new connections shared the same secrets as existing ones, and so on.  That seems simpler, and it prevents the wheel from having to be reinvented for every new application protocol.An obvious reason not to do that is that TCP is too widely used for the effects of changes to be predicted.  Is that the only reason?