These are my notes from Russell Hay's talk on July 3, 2012 at NodeConf called Node and SPI. You can follow Russell on twitter @russellhay.
What is SPI really? It's a loosely defined specification. There's a lot of things left ambiguous, and lots of variety between implementations (are you triggering on the rising edge or the falling edge of the clock?) It's a 4-wire interface between a master and a slave, and it's full-duplex, so when you're reading you're also writing.
The four signals are: