The kernel's idea of time doesn't track daylight savings; usually we let the kernel record time in UTC. This has the advantage that it's unambiguous and simple.
User-facing programs have a timezone, normally passed in the TZ environment variable so that they have consistent view. This is used for converting the internal representation to or from a form that users are happy with.
You can see this in effect if you do
TZ=Europe/Zurich ls -logd
TZ=Australia/Perth ls -logd
The same timestamp is presented two different ways.
The daylight savings adjustment is kept in the timezone database that's installed on your system. As long as that is correct, times in the summer will convert differently from UTC than do times in the winter (in regions with DST). And the timezone database knows all about the rules in the past and has a good idea about the future, except when politicians start meddling.
You only need an external connection if the rules change and you have to install an updated timezone database.