To start with, we can distinguish two types of "movement on your feet":
- At every point in time you have at least one foot on the ground. You are walking.
- There is a short moment when both feet are off the ground. You are running.
Depending on context, we use different words for each type. In sports it is easy. In that context, "laufen" is exclusively used for a type 2 movement, while type 1 is called "gehen". So racewalkers are "Geher" in German, while all runners from 100m sprint up to Marathon are called "Läufer". And although we use the noun "Rennen" in sports, the corresponding verb normally isn't used there.
Outside of the sports domain, "rennen" is always used for a type 2 movement:
zur U-Bahn rennen
um die Wette rennen
um sein Leben rennen
Usually it also implies near maximum speed (relative to you capabilities).
The meaning of "laufen", however, can vary. When applied to a person, it always means "movement by feet", but beside this it is a very general word. Consequently, we say "Ein Kind lernt laufen." If you want to learn about speed, you have to listen to the context:
At a party:
Tschüß, ich gehe jetzt nach Hause.
Läufst Du, oder nimmst Du den Bus?
Ich gehe zu Fuß, es ist ja nicht weit.
Here "laufen" is used just to make clear the person is going by feet, and not using a vehicle. Nothing is said about speed, from experience we can conclude she will walk normally.
Some tourists could say
Wir sind den ganzen Tag durch die Stadt gelaufen.
and again we can assume they were walking.
However, when someone says
Ich laufe jeden Morgen 10km.
she most likely means that she is running a lot. The same holds true for phrases like
Seit ich angefangen habe zu laufen, fühle ich mich viel besser. [He wouldn't emphasize that he started it if was about walking.]
And of course in
Lauf um dein Leben!
"laufen" means "rennen" as fast as you can.
And then there are the vague cases, like
Ich muss laufen, um den Bus noch zu kriegen.
From the subclause we can conclude that there is some hurry. But here "laufen" can mean "walk fast" as well as "run" (though maybe not at maximum speed, otherwise using "rennen" would have been more likely). Personally, the phrase sounds a bit strange to me, maybe because it is vague. I would not recommend using it and rather prefer "ich muss mich beeilen" or "ich muss rennen".
One word about "gehen": in many contexts it denotes "changing location" by any means:
ins Exil gehen
zur Schule gehen
ins Gefängnis gehen
But when it is clear that it is about moving by feet, it is always "type 1". In that way it is consistent with sports language.
tl;dr
"Rennen" is running fast and means a type of movement where both your feet are leaving ground at the same time. "Laufen" will mean the same when you are talking about sports, otherwise it is a general word for moving by feet, and you need context to know of there is something said about speed.