Rewrite ProtocolService to return strings, and have no relation to ITransport. Also update tests.