A stream is what we'd typically think of as a communication channel. Remote logins, file transfers, mail delivery - all use streams. A stream appears to be like a pipeline. It has two endpoints. Data is put in one end and comes out the other. None of the data is duplicated, or discarded, or reorganized in any way. Two streams can be paired together to form a full duplex connection.
A datagram, often called a packet, is much more atomic in nature. It is a small piece of data, often required to be less than a maximum length (typically in the 256 to 2000 byte range). Datagrams are completely self contained. They have a source and a destination, but nothing that could be called a connection. Datagrams have no relationship to any others that came before or after them.
Although most networking communication uses streams, all Internet transfers are in the form of datagrams. Internet streams are actually emulated using datagrams by the TCP Protocol. To diagnose Internet operation, a packet decoder such as TCPdump is used to view individual packets. This, along with a knowledge of TCP operation, enables the Internet engineer to assemble a mental picture of network operation.