Source Routing is a technique whereby the sender of a packet can specify the route that a packet should take through the network.
Remember that as a packet travels through the network, each router will examine the "destination IP address" and choose the next hop to forward the packet to. In source routing, the "source" (i.e. the sender) makes some or all of these decisions
In strict source routing, the sender specifies the exact route the packet must take. This is virtually never used.
The more common form is loose source record route (LSRR), in which the sender gives one or more hops that the packet must go through. In high-level terms, it may look like:
To:Alice From:Bob Via:Mark
Source routing is used for the following purposes:
mapping the network
used with traceroute in order to find all the routes between points on the network.
trying to figure out from point "A" why machines "F" and "L" cannot talk with each other.
a network manager might decide to force an alternate link (such as a satellite connection) that is slower, but avoids congesting the correct routes
LSRR can be used in a number of ways for hacking purposes. Sometimes machines will be on the Internet, but will not be reachable. (It may be using a private address like 10.0.0.1). However, there may be some other machine that is reachable to both sides that forwards packets. Someone can then reach that private machine from the Internet by source routing through that intermediate machine.