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 8038680386 and newer) can use an offset big enough to cover all their address space, making memory segmentation a complication that's no longer necessary. Read x86 memory segmentation and the flat memory model for more details.