Linux treats all devices as files that can be accessed in the same way. Devices are split into three categories: block devices, character devices, and network devices. Block devices represent storage devices and allow random access to fixed size blocks of data. Character devices like keyboards are accessed sequentially one character at a time. Network devices are accessed indirectly through opening a connection to the kernel's networking subsystem rather than direct data transfer.