Held Wednesday, January 26, 2000
Today we consider various layered models used to describe the
fundamental architecture of computer networks.
- Final reminder: On Thursday, January 27, at noon, I'll be giving a
presentation on summer opportunities in computing and computer science.
Even if you don't plan to do summer work in computing this summer,
you should come and begin to think about options for the
following summer. I expect to take at least one sophomores.
- Due today: A description of Dijkstra's shortest path algorithm
and a big-O analysis of that algorithm.
- Also today: a quiz.
- For Friday, finish reading Chapter 1 of Peterson and Davie.
- I did not receive responses to the
from all of you. Please fill it out ASAP.
- Shortest path, revisited
- Issues, revisited
- Layered architectures
- The OSI model
- The Internet model
- I'd asked you to turn in a summary of the shortest path problem for
today and to analyze its running time.
- Here's my quick and dirty description of the algorithm:
To find the shortest path from node start to node finish
Assign an estimated distance of ``infinity to every node''
Assign an estimated distance of 0 to node start
While there are nodes that do not yet have a final distance assigned
Pick the node with the shortest estimated distance
Make its estimated distance the final distance
For each of its neighbors
Compute the cost of reaching the neighbor by going through
Update the estimated distance and prior node, if appropriate
- What preconditions do we assign to the graph?
- Don't speak up if I told you already.
- How do we analyze the running time?
- When we build networks, we need to consider a host of issues.
To remind you, here are some of the key ones.
- Topology (mentioned somewhat last class)
- Routing: how do you get a packet from here to there? Is the
decision made globally or locally? If locally, what
are possible strategies?
- Number of recipients
- Data size and data segmenting (into packets?)
- Data representation
- Sequence of bytes
- Sequence of messages/packets
- Collection of messages/packets
- Independent messages
- Error detection
- Lost packets
- Corrrrrrupted packetssss
- Duplicate packets
- Forged packets
- Bad nodes
- Error correction
- Error-detecting codes
- Error-correcting codes
- Secure channels
- Types of connections
- Underlying strategy
- Circuit switching
- Packet switching
- Flow control (prevent recipient from being swamped)
- Multiple message streams on one ``connection''
- Quality of service
- A typical initial reaction to all these issues is "Aaagggh!!! Too much!"
- So, we can start applying some ideas from software engineering
- The standard in the networking community is to break the task
up into layers, each of which provides an increasingly featured
- There may be many different types of services at each layer.
- Each layer of the network uses the layer below it to provide services,
and in turn provides services to the layer on top of it.
- We can think of typical computers as providing a layered model.
- At the bottom is the physical circuitry.
- Slightly above that is microcode
- Slightly above that is machine code.
- Above that is assembly code.
- Above that is the high-level language, which we sometimes say
provides a ``virtual computer''
- In the network model, we use entwork-related issues
- At the bottom, we have the physical connection.
- At the top, we have the application-specific features.
- What's in the middle depends on what model you choose.
- Note that each layer effectively has four (more?) components:
- The operations it provides (send, receive, acknowledge, etc.)
- The assumptions about the operations (continuous data,
- The ``protocol'' two objects use to communicate within that
layer (setting up connections, information that
gets prepended/appended and then removed and used, ...)
- The implementation of all this using the normal features of
a programming lnaguage and the lower layer.
- There are (at least) two basic models of operations:
communications-oriented and imperative-oriented (not real terms).
- A typical communications-oriented set of operations is
- Request -- ask a service to do some work
- Indication -- received by the service
- Response -- sent by the service (in response to
- Confirm -- received by original requester
- Example: phone conversation.
- Note that this effectively requires the network programmer
to think in terms of interrupts or events.
Most programmers don't, so some
models provide a different set of operations.
- Another possiblity is to use an explicit
- Example: mail?
- One of the core models for networking is the OSI (Open Systems
Interconnection) reference model.
- Created by the ISO (International Standards Organization)
- Seven (!!!) layers.
- Each layer provides a different level of abstraction.
- Each layer provides a well-defined function.
- Simplifies internationalization and standardization.
- Not too many and not too few.
- What are they?
- Physical: node-to-node bit link
- Data-link: node-to-node packet link
- Network: end-to-end packet link
- Transport: end-to-end message link
- Session: end-to-end connections
- Presentation: adds services
- Application: adds application-specific services
- Physical Layer
- Deals with mechanical connections
- Describes bit representation in terms of electical properties
- Deals with some synchronization
- May select channels
- Data Link Layer
- Adds/removes control information
- Detects errors (may correct, may inform)
- Manages duplicate/lost frames
- Flow control
- Some multiplexing
- Network layer
- More control information
- Adds addressing
- Handles routing
- Handles congestion
- Handles accounting
- Detects garbled frames
- Transport Layer
- More control information
- Segments messages into packets (and reassembles)
- Handles ordering
- Determines quality of service and throughput
- May use multiple network connections to provide more service
- May handle which process receives messages
- Session Layer
- Enhances transport layer
- Provides connection and disconnection for continuos session
- Manage access rights
- Reconnection (sometimes)
- Synchronization (sometimes)
- Presentation Layer
- General services
- Application Layer