The segmentation registers are a legacy from the early days of the x86 processors, when the offset wasn't large enough to address all of the memory the processor could address. The original 8086 had a 20-bit address space, but could only use a 16-bit offset. You had to use the segment registers to specify which 64KB of the 1024KB address space you wanted. The segment registers were effectively 20-bit registers where the lowest 4 bits were forced to 0. Loading a segment register set the upper 16 bits of the register. This allowed segment + offset to cover the entire 20-bit address space.
The segment registers still exist, but Linux sets them to 0 so it can pretend they don't. Modern x86 processors (meaning the 80386 and newer) can use an offset big enough to cover all their address space. Read x86 memory segmentation and the flat memory model for more details.