code: public void startTransportProtocol(SshTransport provider,
  			Ssh2Context context, String localIdentification,
  			String remoteIdentification, Ssh2Client client) throws SshException {
  
  		try {
  			this.transportIn = new DataInputStream(provider.getInputStream());
  			this.transportOut = provider.getOutputStream();
  			this.provider = provider;
  			this.localIdentification = localIdentification;
  			this.remoteIdentification = remoteIdentification;
  			this.transportContext = context;
  			this.incomingMessage = new byte[transportContext
  					.getMaximumPacketLength()];
  			this.outgoingMessage = new ByteArrayWriter(
  					transportContext.getMaximumPacketLength());
  			this.client = client;
  
  			// Negotiate the protocol version
  			currentState = TransportProtocol.NEGOTIATING_PROTOCOL;
  
  			// Perform key exchange
  			sendKeyExchangeInit(false);
  
  			if (Log.isDebugEnabled()) {
  				Log.debug(this,
  						"Waiting for transport protocol to complete initialization");
  			}
  
  			while (processMessage(readMessage()) && currentState != CONNECTED) {
  				;
  			}
  		} catch (IOException ex) {
  			throw new SshException(ex, SshException.CONNECT_FAILED);
  		}
  
  		if (Log.isDebugEnabled()) {
  			Log.debug(this, "Transport protocol initialized");
  		}
  
  	}
docs: Starts the protocol on the provider.