What is the difference between a hard link and a soft link in Linux, and how do they behave at the filesystem level?