What Is Meterpreter?

What Is Meterpreter? Meterpreter is an advanced, dynamically extensible payload that uses in-memory DLL injection stagers and is extended over the network at runtime. It communicates over the stager socket and provides a comprehensive client-side Ruby API. It features command history, tab completion, channels, and more. What is difference between Shell and Meterpreter? Basically windows/shell/reverse_tcp