What are the main causes of Overshoot and undershoot of a signal?
You really only need to read about and understand the reflection coefficient.
Wikepedia: http://en.wikipedia.org/wiki/Reflection_coefficient is a good simple starting point.

As you can see, it's all about impedance mismatch. You do not need standing waves or any of that nonsense - just some kind of edge going from one characteristic impedance ZS to another ZL.

If ZL is bigger than ZS you get overshoot. If it's the other way around you get undershoot. Positive or negative reflection coefficient.

Let me know if you need more to fully comprehend this.