Basic terms
Bandwidth -- rate at which network can transmit data
Latency -- delay between sending of signal and receiving of same signal.
Baud -- number of symbols sent per second. NOT the same as bandwidth.
Half duplex -- network that carries data in one direction at a time.
Full duplex -- net goes both ways simultaneously.
Turn-around time -- time needed to switch a half-duplex link to the other direction.
LAN -- set of computers connected by local area net (normally ethernet).
WAN -- larger geograpic region (more than a city).
MAN -- metropolitan area net (biggest area without satellites or long distance links).
Ethernet -- the most common LAN
Networking Goals
Bandwidth high
Latency low
Correctness (data is correct and accurate)
Availability
Stay up in the face of dead hardware
Stay up in the face of enemy attack
Privacy
Verifiability of authorship
Interoperability
Use standard software and hardware
Use gateways that can convert
Ease of use
Low Cost
Basic throughput formula
Packet delivery time = latency + size/bandwidth
Bandwidth = baud * log2(number_of_possible_symbols)
Number of possible symbols = signal_strength/noise_strength
Inefficiencies can stem from
Errors in transmissions
Idle time (time not used for transmitting).
Need for acknowledgements
Turn-around time if it's a half duplex link.
Addressing overhead
Layering
The basic idea is to not try and do to much at one. Have each layer only offer a little more than the layer below it. And offer access to the lower layers for application that want only simple services.
There are two normal ways to look t it, OSI and TCP/IP. We use TCP/IP.
Can build complex services out of several simple layers.
Each sending layer takes previous data, and (possibly) adds more data to it.
Lower layers deal with more data than upper layers
Each layers data is the above layers entire packet.
Extra data is overhead.
Extra data is needed for each layer to function.
While upper layers are working, network media is idle (processing overhead).
No layer need know how the previous layer works.
I could change yelling to sign language and everything would be OK (though speed accuracy might change).
I can change Ethernet and TCP would still work (and Ethernet was not around when TCP was designed).
Classes of communication services
Asynchronous (printing a file, event logging).
Data can come at variable rate. (can temporarily exceed bandwidth, but not long term).
Errors or drops are FIXED
Optionally, receiver sees message as intended, but with possibly unlimited delay.
Optionally, receiver sees only "best effort", with no guarantees.
With connections, order can guaranteed. without connections it is not.
Synchronous (voice, video, data logging)
Data comes at a fixed maximum rate. (limited by bandwidth)
Data might be corrupted or lost in transit
Voice would be delivered at fixed delay, with possible drops or background noise.
Always has connections.
Expedited
Example is ^C in telnet
Just means data gets delivered before other data.
Generally makes more sense in a connection oriented scheme.
Cannot offer guaranteed delay and correctness, because an unlikely set of errors might make that impossible.
Circuits (No used often)
Goal. Minimize cost.
Minimize wiring and switching costs.
Utilize equipment as much as possible.
Circuit Switching
General circuit switching thoughts
If call is connected, you are connected thruout the call. never ends in the middle.
Cannot use idle or slack time when a device is quiet for other devices.
If circuit is established, it has known and fixed capacity.
Call must be established (set up) before any data can get through.
Can have minimum delays since data is not handled at intermediate nodes.
Sucks if traffic is bursty or conversations are short.
Cannot actually have a real pair of wires between every two devices.
That requires N^2 wires
Most wires would be idle most of the time.
Can present the illusion by having one master switch, and running each device to that switch.
Inside can actually require (n/2)^2 switches. Called an NxN crossover switch.
Running all devices to a central switch sucks in wire-length terms
Completely impractical for N very big.
Can create the illusion by offering a limited capacity crossover switch
A crossover switch with only capacity of K simultaneous connections.
Cost is N*K.
Need K big enough that "blocking' probability is small.
Still requires all devices to be wired to a central point.
Can have several hubs, and connect them with trunk lines.
Can greatly reduce the amount of wiring needed.
Sometimes calls can be routed more than one way.
Design of hubs and interconnects is called a 'topology'.
Packet switching (Used often)
Virtual Circuit
Before a call can go through, it must be set up.
Each packet takes same route (only need to compute route once).
Each packet arrives in order
Can make bandwidth reservations
Idle time can be used for other applications.
Great for long standing connections that can tolerate timing jitters
Datagram
Call need not be set up before use.
Each packet gets routed independently.
packets may not arrive in order
Cannot make bandwidth reservations
Idle time can be used by other applications.
Great for short conversations that can tolerate timing jitters.
Multiplexing
Statistical multiplexing
Accept packets as they come in.
Send out packets in some order (time, priority, expedited, etc).
Link is never idle when data is waiting to be sent.
Packets face random queing delays.
Packets must be labeled as to which connectio they belong.
Frequency division multiplexing
Send each connection on a different frequency.
T.V. channels on a co-ax are a great example.
Note that one cannot send a t.v. signal twice as fast if the neighbor channel is quiet.
Data need not be labeled.
Time Division Multiplexing
Send each channel in its own time slot.
If channel has nothing to say, slot is idle.
data need not be labeled.