A byte stream is a term used to represent a computing technique that allows for sending data along a particular path. Here, instead of the individual ones and zeros, known as binary digits or bits, units that are the size of eight bits, known as a byte, are sent along the pathway. It is also sometimes referred to as a character stream, since most of the characters that make up a natural language alphabet, numbers and so forth are represented by such 8-bit units. The path, or entities involved in the transfer of data, are somewhat abstract, as they may represent a file being accessed by a program, data being processed within a program, or data traveling over a network.
For a byte stream to be most effective, it flows through a dedicated and reliable path sometimes referred to as a pipe, or pipeline. Such a path has to be reliable to ensure the output is accurate. In one respect, when considering computer programming, the pipe is the path that connects the various aspects of a program so that as data is being processed from input, it can be passed to another part of the program, onto another, and so on, until it reaches output.
Another type of pipeline can be used by certain operating systems to take data, such as the contents a file, and run it through multiple different programs to produce some output. This is useful with text processing applications, made effective by way of a character byte stream to pass the data along. One of the most common uses of a byte stream, then, is for a computer's operating system when it is accessing data in a file.
In early computer networking, some systems made a distinction between a byte and what's also called an octet. Since an octet is also a computing unit comprised of eight bits, the terms are sometimes used interchangeably, though on those older systems, they are not the same thing. As a result, however, the octet stream is a term also used when speaking of a byte stream, though primarily with regards to computer networking. One such example, "application/octet-stream," is the multipurpose Internet mail extensions (MIME) type for delivering any sort of binary data over a network.
When it comes to sending a byte stream over a computer network, a reliable bi-directional transport layer protocol, such as the transmission control protocol (TCP) used on the Internet, is required. These are referred to as a byte stream protocol. Other serial data protocols used with certain types of hardware components, such as the universal asynchronous receiver/transmitter (UART) technique, is a serial data channel that also uses a byte stream for communication. In this case, the byte, or character, is packaged up in a frame on the transmitting end, where an extra starting bit and some optional checking bits are attached and then separated back out of the frame on the receiving end. This technique is sometimes referred to as a byte-oriented protocol.