Motivation, Terminology,
Layered systems
(and other random stuff)
History and Motivation
|
|
|
First stored-program computer: 1949 |
|
ARPANet 56Kbps: 1970 |
|
TCP/IP: 1972 |
|
IBM Personal Computer: 1981 |
|
Local Area Networks: 1982 |
|
World-Wide Web: 1989 |
|
Java: 1995 |
History and Motivation
|
|
|
|
Early computers were highly centralized. |
|
Single point of failure |
|
User has to “go to” the computer. |
|
Proliferation of low cost computers
made it possible to get past these 2 primary disadvantages (with a network). |
Motivation
|
|
|
Sharing of resources is more efficient |
|
Price/Performance |
|
Use each piece of equipment for what it
is best at |
|
Centralize administration |
|
Computers as communication tools |
Rates of Growth
|
|
|
|
Moore’s Law |
|
“Number of transistors in chips doubles
every 18 months”. |
|
Þ
Every 10 years, processors are 100 times more
powerful. |
|
Gilder’s Law |
|
“Bandwidth grows at least three times
faster than computer power”. |
|
Þ
Assuming bandwidth doubles every 12 months; every 10 years, it is 1000 times better. |
Computer Networks are now
everywhere
|
|
|
PCs <-> Mainframes |
|
Automated Tellers |
|
Embedded Systems |
|
Communications Systems |
|
The Internet |
Networked Computers -
Traditional Uses
|
|
|
Communication (email) |
|
File exchange, disk sharing |
|
Sharing peripherals (printers, tape
drives) |
|
Remote execution |
New(er) Uses for
Networked Computers
|
|
|
|
Entertainment, distributed games |
|
MP3s! |
|
Commerce |
|
Automation of business processes |
|
Collaborative computing |
|
Homework Submission |
|
Worldwide Computing |
Wide variety of types of
networks
|
|
|
|
circuit switched |
|
telephone system |
|
|
|
packet switched: |
|
The Internet (TCP/IP) |
Network Models
|
|
|
Using a formal model allows us to deal
with various aspects of Networks abstractly. |
|
We will look at a popular model (OSI
reference model). |
|
The OSI reference model is a layered
model. |
Layering
|
|
|
|
Divide a task into pieces and then
solve each piece independently (or nearly so). |
|
Establishing a well defined interface
between layers makes porting easier. |
|
Major Advantages: |
|
Code Reuse |
|
Extensibility |
Layering Example: Federal
Express
|
|
|
Letter in envelope, address on outside |
|
FedX guy adds addressing information,
barcode. |
|
Local office drives to airport and
delivers to hub. |
|
Sent via airplane to nearest city. |
|
Delivered to right office |
|
Delivered to right person |
FedX Layers
Layered Software Systems
|
|
|
Network software |
|
Operating systems |
|
Windowing systems |
Unix is a Layered System
OSI Reference Model
|
|
|
The International Standards
Organization (ISO) proposal for the standardization of the various protocols
used in computer networks (specifically those networks used to connect open
systems) is called the Open Systems Interconnection Reference Model (1984),
or simply the OSI model. |
OSI Model
|
|
|
Although the OSI model is a just a
model (not a specification), it is generally regarded as the most complete
model (as well it should be - nearly all of the popular network protocol
suites in use today were developed before the OSI model was defined). |
OSI <-> Network
Software
|
|
|
Although this course is about network
programming (and not about networking in general), an understanding of a
complete network model is essential. |
|
|
|
We will look at the OSI Reference Model
in detail. |
OSI 7 Layer Model:
|
|
|
7
Application |
|
6 Presentation |
|
5 Session |
|
4 Transport |
|
3 Network |
|
2 Data-Link |
|
1 Physical |
Simplified Network Model
What’s a Protocol?
|
|
|
|
An agreed upon convention for
communication. |
|
both endpoints need to understand the
protocol. |
|
Protocols must be formally defined and
unambiguous! |
|
We will study lots of existing
protocols and perhaps develop a few of our own. |
Interface
and
Peer-to-peer
Protocols
|
|
|
Interface protocols describe the
communication between layers on the same endpoint. |
|
Peer-to-peer protocols describe
communication between peers at the same layer. |
Thought Exercise
|
|
|
Come up with an example of a layered
system. |
|
|
|
Describe the interface and peer-to-peer
protocols for your example. |
Programs & Processes
|
|
|
A program is an executable file. |
|
A process or task is an instance of a
program that is being executed. |
|
A thread is a light-weight process. |
|
A single program can generate multiple
processes or contain multiple threads. |
Client - Server
|
|
|
A server is a process - not a machine ! |
|
|
|
A server waits for a request from a
client. |
|
|
|
A client is a process that sends a
request to an existing server and (usually) waits for a reply. |
Client - Server Examples
|
|
|
Server returns the time-of-day. |
|
Server returns a document. |
|
Server prints a file for client. |
|
Server does a disk read or write. |
|
Server records a transaction. |
Servers
|
|
|
|
Servers are generally more complex
(more interesting). |
|
2 Basic types of servers: |
|
Iterative - server handles one client
at a time. |
|
Concurrent - server handles many
clients at a time. |
|
We will study the differences later. |
Peer-to-peer Computing
|
|
|
|
|
Clients are also servers, a.k.a. servents. |
|
|
|
Decentralized control. |
|
|
|
E.g., Gnutella, Freenet. |
Java and Multithreading
|
|
|
In Java, it is possible to create
multithreaded programs. |
|
The java.lang package contains a Thread
class. |
|
The java.lang.Object class contains
internal locks for thread synchronization. |