You would have gotten more out of SICP if you had paid attention while reading it.
The way this happens is that the let expression is interpreted as an alternate syntax for
((lambda (<var1> ...<varn>) <body>) <exp1> <expn>)
No new mechanism is required in the interpreter in order to provide local variables. A let expression is simply syntactic sugar for the underlying lambda application.