A client handles negotiating the connection, then sending frames, receiving frames, closing, and reconnecting that connection
Handles establishing and controlling the TCP connection
Functions for parsing and encoding frames