# Class 02: Requirements and Network Architecture

Back to Introduction to the Course. On to Network Building Blocks.

Held Wednesday, January 26, 2000

Overview

Today we consider various layered models used to describe the fundamental architecture of computer networks.

Notes

• 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 introductory survey from all of you. Please fill it out ASAP.

Contents

Summary

• Shortest path, revisited
• Issues, revisited
• Layered architectures
• The OSI model
• The Internet model

## Shortest Path, Revisited

• 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
that node
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?

## Fundamental Issues, Revisited

• 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
• one-to-one
• one-to-many
• one-to-all
• 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
• ...
• Error correction
• Confirmations/acknowledgements
• Timeouts
• Error-detecting codes
• Error-correcting codes
• ...
• Security
• Encryption
• Secure channels
• ...
• Types of connections
• Connection-oriented
• Connectionless
• Underlying strategy
• Circuit switching
• Packet switching
• Flow control (prevent recipient from being swamped)
• Multiple message streams on one ``connection'' (multiplexing/demultiplexing)
• Quality of service
• Bandwidth
• ...

## The Layered Approach

• 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 network service.
• 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.

### Other Layered Models

• 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''

### Layering Networks

• 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, reliable, etc.)
• 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 a request)
• 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
• Send
• Example: mail?

### The OSI Reference Model

• One of the core models for networking is the OSI (Open Systems Interconnection) reference model.
• Created by the ISO (International Standards Organization)
• Seven (!!!) layers.
• Why?
• 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?
• Session: end-to-end connections
• Physical Layer
• Deals with mechanical connections
• Describes bit representation in terms of electical properties
• Deals with some synchronization
• May select channels
• Detects errors (may correct, may inform)
• Manages duplicate/lost frames
• Flow control
• Some multiplexing
• Network layer
• More control information
• Handles routing
• Handles congestion
• Handles accounting
• Detects garbled frames
• Acknowledgements
• 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
• Encryption
• Compression
• Conversion
• Application Layer
• Common applications

## History

Thursday, 20 January 2000

• Created as a blank outline.

Wednesday, 26 January 2000

• Filled in the details, many of which were based on an outline for Dartmouth's CS78.

Back to Introduction to the Course. On to Network Building Blocks.

Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.