From the network's perspective, application programs send messages to each other. Each of these messages is just an uninter preted string of bytes. From the application's perspective, however, these messages contain various kinds of
data —arrays of integers, video frames, lines of text, digital images, and so on. In other words, these bytes have meaning. We now consider the problem of how best to encode the different kinds of data that application programs want to exchange into byte strings. In many respects, this is similar to the problem of encoding byte strings into electromagnetic signals that we saw ...