|
|
|
|
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 |
|
|
|
|
|
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). |
|
|
|
|
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 |
|
|
|
|
|
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. |
|
|
|
|
PCs <-> Mainframes |
|
Automated Tellers |
|
Embedded Systems |
|
Communications Systems |
|
The Internet |
|
|
|
|
Communication (email) |
|
File exchange, disk sharing |
|
Sharing peripherals (printers, tape drives) |
|
Remote execution |
|
|
|
|
|
Entertainment, distributed games |
|
MP3s! |
|
Commerce |
|
Automation of business processes |
|
Collaborative computing |
|
Homework Submission |
|
Worldwide Computing |
|
|
|
|
|
circuit switched |
|
telephone system |
|
|
|
packet switched: |
|
The Internet (TCP/IP) |
|
|
|
|
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. |
|
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
|
Network software |
|
Operating systems |
|
Windowing systems |
|
|
|
|
|
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. |
|
|
|
|
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). |
|
|
|
|
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. |
|
|
|
|
7
Application |
|
6
Presentation |
|
5
Session |
|
4
Transport |
|
3
Network |
|
2
Data-Link |
|
1
Physical |
|
|
|
|
|
|
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 protocols describe the communication
between layers on the same endpoint. |
|
Peer-to-peer protocols describe communication
between peers at the same layer. |
|
|
|
|
Come up with an example of a layered system. |
|
|
|
Describe the interface and peer-to-peer
protocols for your example. |
|
|
|
|
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. |
|
|
|
|
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. |
|
|
|
|
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 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. |
|
|
|
|
|
|
Clients are also servers, a.k.a. servents. |
|
|
|
Decentralized control. |
|
|
|
E.g., Gnutella, Freenet. |
|
|
|
|
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. |
|