Some answer you can find here. That covers also the run-time managed sections heap and stack (that was the original answer).
In short (an extended):
.bss is for uninitialized variables declared static and with global scope. This is not actually stored in the file, but just reserved and cleared at run-time right before `main() is called.
.data contains explicitly initialized variables.
.const contains const declared objects.
.text is where the program code is stored. Note that is not the source code, but the compiled program code!
There is also a plethora of other sections in normal "ELF" object files which contain debugging information, etc.
For more information, read about object file formats. One of the most widely used is ELF.