The concept of a "stream" is simply a sequence of bytes encapsulated by a class that tracks the length, current position, number of "objects" or bytes on the stream etc... and provides for seeking to and fro in the stream of objects (or bytes, etc...)
So the underlying "construct" as you put it, is simply an array of bytes (or a file on disk or pointers to classes, structures or even integral types) which "serves" up the objects on it according to the streams encapsulation.
Imagine that I have 10 rubber duckies and am standing next to an actual real world stream of water. I place a duck in the stream and it starts to float down-stream. I now have 1 duck on the stream. I place another duck in the stream and it starts to float down-stream. I now have 2 ducks on the stream. This continues on until... you run out of memory. Now I run downstream and grab the 2nd ducks from the water (seeking). There are now 9 ducks in the stream and I'm at position 2...
So streaming an object differs from placing it in an array or a list in that it can be "operated on" by the encapsulating stream class.
What's neat about streaming is that you can create different streams on top of other streams allowing for a certain level of abstraction. For example in .NET I can create a StreamWriter on top of a FileStream which allows me to write strings to the file stream without having to manually convert them to bytes arrays.
Hopefully that helps. Feel free to correct or add whatever is necessary. I don't claim to be an expert.
(BTW, there is no need to be obtuse and claim "too general", "i don't understand" etc... Let's be a little more understanding and courteous, get down off our pulpits and explain things in a reasonable fashion.)