Now that we know logic and decision making can be easily driven and encoded via electrons in transistors we know have the means to make decisions on how to route information on a network. The basic operational concept of network routed information relies on the device known as a packet. A reasonable analogy is that a single packet is a combination of individual bits of information, let's call them letters, into a word. Stringing together several words (e.g. packets) makes a sentence. All your life you have serially processed verbal communication, waiting for the next packet to arrive. For instance a packet stream might look like this
![]() Soon the data window becomes full - this is why its important to control the transmission rate. ![]() When the data window is full, the receiver sends an ACK (acknowledgement) back to the sender so the process can start over. So TCP/IP is not strictly one way - there is occassionally communication from the receiver back to the sender. However, this is an oversimplification of the actual process, which relies on overlapping packets as discussed below.
The physical time it takes each packet to arrive at the receiver and/or the time it takes to ACK back is called latency (all you gamers out there constantly bitch about this...). The latency of a typical wired LAN is less than 10 milliseconds. The latency of a wireless LAN can be much higher ![]()
![]() More severe than latency, however, is packet loss or data loss, which occurs on all networks. ![]() Loss is most typically caused by congestion which is the overloading of any single point on the network between sender and receiver. Because TCP/IP requires that all packets arrive in order (thus TCP/IP is not very smart), any single lost packet means that then entire contents of the receive buffer must be retransmitted. Sufficient loss can cause some TCP/IP based application to completely fail. ![]()
Is there any way to avoid this basic problem? One attempt would be to use overlapping transfers, which is what TCP has always done, with various degrees of efficiency. Overlapping transmission can help to overcome latency by having more packets in flight at any given time. That way the server is not stuck wating for an ACK.
![]() However, with overlapping packet transmission,as you might expect, loss becomes an even more critical problem. ![]() The best solution is to develop intelligent packet reconstruction protocols where the data can be reconstructed via the encoding of meta-data into the packet stream. This means that no single packet of data has any particular impact on the overall reliability of the stream
![]()
Meta-content or meta-taging instead takes the box of cereal as an entity and develops a recipe for how to make it. It send sends the recipe for the cereal and how it is to be put in the box over the network. This builds in redundancy and any loss of packets (individual grains of cereal) along the way can be recreated from another group of packets that has already arrived or will arrive. As a result, you will always have the ability to recreate a box of cereal. Conceptually this approach is great, the difficulty lies in how to best construct and transmit the recipe. |