HTTP (and https) don't have state.
Every connection is a 'new connection'.
Now a session introduces such state, either via cookies, or by modifiying urls.
What you want to prevent is somebody 'stealing a session', ie. transfering the state to another machine.
(Note that the attacker needs to somehow capture the session identifier for this).
The most common approach to close that (tiny) loophole is to check the client's ip on each visit (and store the ip in your session data ).
But you'll lock out people who have 'round robin' proxys, and it won't help against an attacker who's using the same proxy, or can fake
the ip ( seldom, but possible).
In my mind, it usually isn't worth it. There are only three plausible ways to gain a session id
-by listening to network traffic. Those guys are the ones that could have established a transparent proxy for the user in the first place, so you won't gain anything by checking the ip.
-by a cross side scripting attack, getting the web browser to send the session id someplace else. Yes you could prevent that attack with ip checking, but you're better of preventing cross side scripting, as it also might be used to create sites that appear to come from you, but contain foreign content.
-by having a spy on the users host. Guess what, that spy can also act as a proxy for the attacker, same ip, you still haven't gained anything.
So long,
->Tyberius Prime