Midterm Study Topics
The following are topics that we have covered during the first half of the
course that I think would be fair game for the midterm.
- Network connectivity
- Link level - can be point-to-point or multi-access (i.e. Ethernet/
802.3, Token Ring/802.5, FDDI, wireless/802.11)
- Node level - end-to-end connection through network - may go through
one or more intermediate nodes (switches)
- Network level - connect networks into internets using routers or
gateways
- Understand how performance of link is measured: bandwidth, latency,
the delay-bandwidth product.
- Understand the difference between these switching techniques: circuit
switching (analog telephone networks), packet switching (data networks,
digital telephone networks)
- Multiplexing - technique to allow multiple users to share a single
link; goal is to increase efficiency, link utilization. Understand the
different types we discussed:
- Synchronous Time Division Multiplexing - break link bandwidth
into fixed time slots, give individual users time slots
- Frequency Division Multiplexing - break link bandwidth into different
carrier frequencies, assign a carrier to each user
- Statistical Multiplexing - allow users to submit variable length
blocks of data (packets), implement a technique for taking packets
from different users and sending them over link. More efficient,
since no link bandwidth wasted by reserving it for a user that
doesn't need it.
- Network architectures - blueprints for designing networks. Usually
divide the complicated functionality of the network into multiple
abstraction layers.
- Protocols - abstract objects that are designed to perform a specific
function or provide a specific service at a particular layer.
- Can be multiple protocols for a single layer (i.e. TCP, UDP)
- Protocol provides a service interface to the next higher layer (i.e.
an API), uses the service interface of the next lower layer, and
provides a peer interface to the corresponding protocol on another
node (this is a virtual interface, except for the one at the lowest
layer of the architecture)
- Encapsulation - each protocol should treat the data coming down to it
as a "black box"; if additional information is required for the function
of the protocol, it should add that to the outside (as a header and/or
trailer), rather than modifying data from a higher-level protocol.
- Know the ISO OSI and the ARPA Internet
network architectures.
- Know the names of the layers and their order
- Know the general function of each layer
- For the Internet architecture, know examples of protocols that are
used at each layer
- Shannon's Capacity Theorem - C = B log2( 1 + S/N ). Channel capacity
is limited by bandwidth and by the log of the signal-to-noise ratio.
Understand what this means - regardless of how cleverly you can
encode multiple bits into each symbol sent, you can't exceed this
limit. And the poorer the connection is (i.e. the lower the
signal-to-noise ratio), the less data you can transmit.
- Data Encoding Techniques - know how each of the following is used to
encode a stream of bits, and know the advantages and disadvantages of
each technique.
- NRZ
- NRZI
- Manchester
- 4B/5B (just in general - you don't need to memorize the lookup
table)
- Framing - grouping bits into messages
- Byte-oriented (or character-oriented) protocols
- Use sentinel values to locate start and end of frame.
Examples: PPP (Point-to-Point Protocol), BSC (Binary Synchronous
Communication)
- Use a byte count to identify length of frame. Example:
DDCMP (Digital Data Communication Message Protocol)
- Bit-oriented protocols
- Use a special bit sequence to delimit frames, then make sure
that bit sequence doesn't appear in the data. Done by bit
stuffing - flag sequence is 01111110, and any data that has
five one bits in a row gets an extra zero bit stuffed into the
data stream.
- Examples: HDLC (High-level Data Link Control) and its variants:
SDLC (Synchronous Data Link Control), LAPB (Link Access Protocol
- Balanced)
- Error detection - required because data transmitted over link can be
corrupted. Understand the following techniques:
- Transmit multiple copies of data - simple, but misses error if same
bit corrupted in each copy. Wastes a lot of space.
- Parity - make number of 1 bits in word either even or odd
- 2D Parity - do parity on each words, and also compute parity on the
same bit position across all words. Adds one parity bit to each
word, one parity word to frame. Can detect all 1-, 2-, and 3-bit
errors, and most 4-bit errors.
- Checksum - add words together and append sum to frame. Internet
checksum treats message as sequence of 16-bit integers, uses one's
complement arithmetic to compute sum (carry out from addition is
just added into the result). Only adds 16 bits to frame. Can miss
some 2-bit errors.
- Cyclic Redundancy Check (CRC) - understand the foundation (based on
modulo 2 arithmetic, represents message as polynomial, goal to create
a message that is evenly divisible by a generator polynomial.)
Know how to compute the CRC for a message given a polynomial, and
how to check a received message for errors. Be aware of the
predefined CRC polynomials of different lengths (from 8 to 32 bits),
but you don't need to memorize them. Know that CRC can be
implemented in hardware using a shift register with XOR gates
between some of the bits, with the output of the register fed back
to the XOR gates. But you don't need to be able to draw the circuit
for a particular polynomial.
- Reliable transmission - recover when errors are detected. Typically done
using an ARQ (Automatic Repeat reQuest) mechanism.
- Uses combination of timeouts and retransmissions to recover from
corrupted frames
- Receiver sends ACK (acknowledgement) to sender when frame properly
received
- If ACK doesn't arrive in time, sender retransmits frame
- Three different mechanisms:
- Stop and Wait - know how it works. Know the benefits and
drawbacks. Why is a one-bit sequence number required on frames
and ACKs? Check out example in notes and in book of the
relationship between delay-bandwidth product, average frame size,
and link utilization.
- Sliding Window - know how it works. Understand how you might
decide on a window size. Know how big the window can be given
the length of the sequence number.
- Concurrent Logical Channels - split link into multiple channels,
use stop-and-wait on each channel.
- Ethernet (802.3)
- Know the format of MAC addresses, and how they are guaranteed to
be unique.
- Carrier Sense Multiple Access with Collision Detection (CSMA/CD)
protocol - know how it works: the 1-persistent way that the
sender transmits immediately when line is idle, the exponential
backoff technique that happens after collisions.
- Ethernet segments have length limit (500 m for 10Base5, 200 m for
10Base2, 100 m for Cat5). They can be connected by repeaters, but
no more than 4 repeaters between any two stations (max length of
2,500 m for network). Understand why this limit is there.
Understand the corresponding limit on the minimum length of an
Ethernet frame. (Both are to make it so there can't be a collision
that the sender doesn't detect.)
- Understand why this makes the Ethernet degrade when heavily loaded -
max throughput rarely exceeds 30% of theoretical maximum.
- Don't worry about Token Ring (802.5) or FDDI
- Wireless (802.11) - understand the basic issues with creating a wireless
network (hidden node problem, and how CSMA/CA resolves it with the RTS/
CTS). Be aware of the variants of 802.11 (a, b, and g) and some of the
characteristics of each. Know what function access points provide for
a wireless network.
- The socket API
- Standard interface between application programs and network software
(in Unix, Windows, other OSes)
- Know commonly used calls for both TCP and UDP connections:
socket(), bind(), listen(), accept(), connect(), send(), recv(),
sendto(), recvfrom(),
- Related functions: getsockname(), getpeername(), gethostbyname(),
getservbyname()
- The five-tuple identifying a connection: (my IP, my port, other IP,
other port, protocol)
- Function of the port is to route messages to the correct application
once they make it to the right host
- Host vs. network byte order - htonl(), htons(), ntohl(), ntohs()
- Know the differences between TCP and UDP, and the advantages and
drawbacks of each. Understand why you might choose one or the other
protocol to implement a particular application.
- Switching - understand how networks can be connected together with
switches. Know the basics of how a switch works. Understand these
packet forwarding techniques, their advantages and drawbacks:
- Datagram - understand forwarding tables
- Virtual Circuit - understand the process of setting up a virtual
circuit through the network.
- Source Routing - understand how this works
- Cell Switching - virtual circuits, with fixed-size packets. Best
example is ATM (Asynchronous Transfer Mode).
- Bridging - understand the function of a network bridge. Know how a
learning bridge works, and why it's better than a simple bridge.
Understand the concept of "Time to Live" - forgetting entries in the
forwarding table after the get too old, so the bridge can adapt to
changes in the network.
- How can you represent a network diagram as a graph? What are the
vertices in the graph, and what are the edges?
- The Spanning Tree algorithm
- Where and why is it used?
- How does it turn a network graph into a tree?
- How does it decide which bridge is the "designated forwarder" for
a LAN? How does it use this information ?