What protocol does the TransportClient use communicate on 9300 with Elastic?

When the Java Transport client communicates with Elastic what protocol is it using? HTTP? TCP/IP?

It's a custom protocol on top of TCP.