There's a lot of limitations within those protocols that just make things unnecessarily difficult and limit functionality. Port numbers and the lack of logical service names, lack of routing across disparate unroutable routes, lack of carrying forward/back diagnosis of network segments, etc. HTTP as an additional transport protocol is a shitty hack that people use to work around some of those issues but more remain.